1.猜數字遊戲(C語言版)
1.問題分析:
首先要有一個與用戶交互的菜單,其次生成一個隨機數讓用戶來猜,然後通過用戶輸入的數字給出提示,是猜高了還是猜低了,最後用戶猜對了,程序結束.
2.代碼:
//菜單函數
int Menu(){
printf("===============\n");
printf("1.開始遊戲\n");
printf("0.遊戲結束\n");
printf("===============\n");
printf("請輸入你的選擇:");
int choice = 0;
scanf("%d",&choice);
return choice;
}
//遊戲函數
void Game() {
//進行一局遊戲
//1.系統隨機生成一個隨機數(1-100)
int toGauss = rand() % 100 + 1;
//2.再次讓用戶輸入要猜的數字
while (1) {
printf("請輸入一個數字(1-100):");
int num = 0;
scanf("%d", &num);
//3.系統比較用戶輸入和系統的隨機數的大小關係並給出提示
if (num < toGauss) {
printf("低了!\n");
}
else if (num > toGauss) {
printf("高了!\n");
}
else {
printf("恭喜你猜對了!\n");
break;
}
}
}
int main() {
int t = time(0);
srand(t);
//需要一個和用戶交互的菜單
while (1) {
int choice = Menu();
if (choice == 1) {
//每次調用Game函數開始一局遊戲
Game();
}
else if (choice == 0) {
//結束遊戲
printf("goodbye!\n");
break;
}
else {
printf("您的輸入有誤!請重新輸入!\n");
}
}
return 0;
}
3.運行截圖:
2.折半查找
1.問題分析:
首先折半查找的前提是在一個有序的數組中進行查找,升序,降序都可以,其次確定待查找的數字,和數組的長度,然後每次查找都是查找當前數組中間的數字進行計較,判斷待查找數字的當前數字的左邊還是右邊,確定哪邊後,繼續用待查找數字與該邊數值的中間數字進行比較,循環執行該操作,最後如果找到該數字就返回下標,沒找到返回-1.
2.代碼:
//用函數實現折半查找
int BinarySearch(int arr[],int size, int toFind) {
int left = 0;
int right = size - 1; //確定最右邊數字的下標
while (left<=right) {
int mid = (left + right) / 2;
if (toFind<arr[mid]) {
right = mid - 1; //折半 待查找數字在左邊
}
else if (toFind > arr[mid]) {
left = mid + 1; //折半 待查找數字在右邊
}
else {
return mid; //找到了
}
}
return -1; //沒找到
}
int main() {
int arr[4] = { 2,5,7,9,};
int result = BinarySearch(arr,4,7); //4爲數組長度,7爲待查找數字
printf("result=%d\n",result);
return 0;
}
3.密碼登錄
1.問題分析:
首先設定正確密碼,其次確定登錄次數,然後給輸入一次給出提示,最後若登錄次數用完且密碼都是錯誤及登陸失敗,在次數內密碼輸入正確及登陸成功
2.代碼:
int main() {
int i;
for (i = 0; i < 3;i++) {
char password[10] = { 0 };
printf("請輸入密碼:\n");
scanf("%s", password);
if (strcmp(password, "888888")==0) {
printf("登陸成功\n");
break;
}else{
printf("密碼錯誤,請重試!\n");
}
}
if (i==3) {
printf("登陸失敗\n");
}
}
運行截圖: