猜数字游戏,折半查找,密码登录
程序员文章站
2024-03-18 17:02:16
...
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");
}
}
运行截图:
上一篇: 猜数字游戏(C语言)