1. 程式人生 > >一個得手動結束的猜數字遊戲

一個得手動結束的猜數字遊戲

# 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;
}