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...