第五次作業C語言

2021-08-07 06:29:09 字數 3478 閱讀 9043

1.函式的形式編寫二分查詢 

方法1#define _crt_secure_no_warnings

#include

#include

int search(int *arr, int data, int len)

else if (data == arr[righ])

else if (data == arr[med])

else if (data>arr[med])

else if (data < arr[med])

}return -1;

}int main()

;//二分查詢前必須有序

int data = 0;

int len = 10;

int re = 0;

printf("請輸入要查詢的數:\n");

scanf("%d", &data);

re = search(arr, data, len);

if (re!= -1)

else

system("pause");

return 0;}

方法2

//遞迴方法實現二分查詢

#define _crt_secure_no_warnings

#include

#include

int search(int *arr,int low,int high, int data)

else if (arr[high] == data)

else if (low < high)

else if (data>arr[med])

else if (data < arr[med])

}return -1;

}int main()

;//二分查詢前必須有序

int data = 0;

int len = 10;

int re = 0;

printf("請輸入要查詢的數:\n");

scanf("%d", &data);

re = search(arr,0,len-1, data);

if (re !=-1)

else

system("pause");

return 0;}

執行結果:

2.編寫猜數字遊戲 

了解:隨機數和隨機數種子

在計算機中並沒有乙個真正的隨機數發生器,但是可以做到使產生的數字重複率很低,這樣看起來好象是真正的隨機數,實現這一功能的程式叫偽隨機數發生器。

不管用什麼方法實現隨機數發生器,都必須給它提供乙個名為「種子」的初始值。而且這個值最好是隨機的,或者至少這個值是偽隨機的。「種子」的值通常是用快速計數暫存器或移位暫存器來生成的。

的c編譯器都提供了乙個基於ansi標準的偽隨機數發生器函式,用來生成隨機數。它們就是rand()和srand()函式。這二個函式的工作過程如下:

1) 首先給srand()提供乙個種子,它是乙個unsigned int型別,其取值範圍從0~65535;

2) 然後呼叫rand(),它會根據提供給srand()的種子值返回乙個隨機數(在0到32767之間)

3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;

4) 無論什麼時候,都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()的輸出結果。

這個過程看起來很簡單,問題是如果你每次呼叫srand()時都提供相同的種子值,那麼,你將會得到相同的隨機數序列,這時看到的現象是沒有隨機數,而每一次的數都是一樣的了。例如,在以17為種子值呼叫srand()之後,在首次呼叫rand()時,得到隨機數94。在第二次和第三次呼叫rand()時將分別得到26602和30017,這些數看上去是很隨機的(儘管這只是乙個很小的資料點集合),但是,在你再次以17為種子值呼叫srand()後,在對於rand()的前三次呼叫中,所得的返回值仍然是在對94,26602,30017,並且此後得到的返回值仍然是在對rand()的第一批呼叫中所得到的其餘的返回值。因此只有再次給srand()提供乙個隨機的種子值,才能再次得到乙個隨機數。 

(1)rand:該函式是用來產生乙個隨機數(每次產生的隨機數相同)。如:rand()%100相當於產生乙個0~99之間的隨機數;

(2)srand:該函式作用是在呼叫rand函式之前,去設定隨機數 產生器,使得每次產生的隨機數不同。(在乙個程式內部被呼叫一次即可);

(3)time:該函式返回乙個從當前時間點到計算機起始時間(2023年1月1日0點)之間的差值(隨著時間的變化,差值在變)。

#define _crt_secure_no_warnings 1

#include

#include

#include

void menu()

playgame()

else if (temp > round_number)

else if (temp < round_number)

} }

int main()

} while (choose);

system("pause");

return 0; }

執行結果:

//方法2:

//這個遊戲由三個人一起玩,

//乙個人做主持人,心中默想乙個1到100之間的數字,然後由其他兩個人輪流猜,每次猜測之後,主持人就說出猜測的這個數比他心中

//的數字是大還是小,然後另外乙個人根據這個資訊繼續猜測,如此輪流,最後誰猜中就算誰輸了。(算贏了也可以) 這是乙個相互挖坑

//讓對方跳的過程,特別是最後幾步,猜測範圍越來越小,真是步步驚心,稍不留意,就踩到對方挖的坑里去了。

#define _crt_secure_no_warnings 1

#include

#include

#include

void menu()

playgame()

else if (temp == round_number)

else if (temp > round_number)

else if (temp < round_number)

}//本輪遊戲結束,是否繼續

fflush(stdin);

printf("是否再玩一次?y or n");

char c;

scanf("%c", &c);

if (c == 'n')}}

int main()

} while (choose);

system("pause");

return 0;

}執行結果:

c語言第五次作業

1.實驗 7 1 判斷素數。include include int panduan int c int main void for i 1 i a i return 0 int panduan int c for i 2 i return r 2 設計思路 1 文字描述 第一步 輸入a,每次迴圈用自...

c語言第五次作業

1.實驗 include include intmain if x 1 flag 0 printf no n else printf yes n return0 2設計思路 1 定義整形變數n,i,flag,x 2 利用while迴圈求出素數 3 是素數輸入yes,不是輸入no 3流程圖 3.本題除...

C語言第五次作業

一 改錯題 輸出華氏攝氏溫度轉換表 輸入兩個整數lower和upper,輸出一張華氏攝氏溫度轉換表,華氏溫度的取值範圍是,每次增加2 計算公式如下 c 5 f 32 9 其中,c表示攝氏溫度,f表示華氏溫度。輸入輸出樣例1 enter lower 32 enter upper 35 fahr cel...