一個得手動結束的猜數字遊戲
阿新 • • 發佈:2018-11-13
# include<time.h> void menu() { printf("*************************\n"); printf("****1.game() 0.exit()**\n"); printf("*************************\n"); } void game() { int num = 0; int in = 0; int n = 0; num = rand() % 10+1; printf("請猜數字\n"); while (n<3) { printf("你有三次選擇的機會\n"); scanf("%d", &in); if (num == in) { printf("恭喜你猜對了\n"); break; } else if (num > in) { printf("猜小了,請重新輸入\n"); } else { printf("猜大了,請重新輸入\n"); } n++; } if (n == 3) { printf("遊戲失敗\n"); } } int main() { srand((unsigned int)time(NULL)); int input = 0; do { menu(); printf("請選擇\n"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: exit(1); break; default: printf("選擇錯誤\n"); break; } } while (input); system("pause"); return 0; }
二、寫程式碼可以在整型有序陣列中查詢想要的數字,找到了返回下標,找不到返回 - 1.(折半查詢)
int Find(int arr[], int key, int size) { int left = 0; int right = size; int mid= 0; int i = 0; while (left<right) { mid= left + ((right - left)/2); if (arr[mid]>key) right = mid - 1; else if (arr[mid] < key) left = mid + 1; else { return 1; } } if (left>right) return 0; } int main() { int input = 0; printf("請輸入要查詢的數字\n"); scanf("%d", &input); int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; int sz = sizeof(arr) / sizeof(arr[0]); int ret=Find(arr, input, sz); if (1 == ret) { printf("找到了\n"); } else printf("沒有找到\n"); system("pause"); return 0; }