完成猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void Menu() {
printf("------------------\n");
printf("欢迎来到猜数字小游戏\n");
printf("1.开始游戏\n");
printf("2.退出\n");
printf("------------------\n");
}
int main() {
int i = 1;
while (i) {
Menu();
printf("请选择:");
scanf("%d", &i);
switch (i)
{
case 1:
printf("-------游戏开始------\n");
int input = 0;
unsigned int num = 0;
/*用srand和rand制造出一个伪随机数*/
srand((unsigned)time(NULL));
num = rand() % 100;
while (1) {
printf("请猜出你的数字:");
scanf("%d", &input);
if (num > input) {
printf("猜小了!\n");
}
else if (num < input) {
printf("猜大了\n");
}
else {
system("cls");
printf("恭喜你猜对了!\n");
break;
}
}
break;
case 2:
i = 0;
break;
default:
printf("选择错误");
break;
}
}
system("pause");
return 0;
}
写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef int Type;
int binary_search(Type arr[], int sz, int key) {
if (arr == NULL) {
return;
}
/*二分查找*/
int left = 0;
int right = sz - 1;
while (left <= right) {
/*求出mid的下标*/
int mid = left + (right - left) / 2;
if (arr[mid] > key) {
right = mid - 1;
}
else if (arr[mid] < key) {
left = mid + 1;
}
else {
return mid;
}
}
/*如果到了这里表示没有找到*/
return -1;
}
int main() {
Type arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int sz = sizeof(arr) / sizeof(arr[0]);
int key = 0;
int ret = binary_search(arr, sz, key);
printf("expect 0, actual :%d", ret);
system("pause");
return 0;
}