1.完成猜数字游戏
首先这个代码要先理解他如何猜数字。不可能是在代码中写一个数,你来猜它吧。
所以你得有一个可以产生随机数的函数。
也就是rand();
所以接下来就好写了。只要通过循环比较来告诉它值低了 还是 高了 。
我是通过函数来实现的,一个输出函数,一个游戏函数。结合起来。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void put(){
printf("********************************************\n");
printf(" 1. 开始游戏\n");
printf(" 2. 游戏结束\n");
printf("********************************************\n");
}
void game(){
int i = 1;
srand((unsigned)time(0));
int random = rand() % 100 + 1;
while (1){
printf("请输入一个数字\n");
scanf("%d", &i);
if (i > random){
printf("高了\n");
}
else if (i < random){
printf("低了\n");
}
else if (i == random){
printf("猜对了\n");
break;
}
}
}
int main(){
put();
int choice = 1;
while (1){
printf("请选择\n");
scanf("%d", &choice);
if (choice == 1){
game();
}
else if (choice == 2){
printf("游戏结束\n");
break;
}
else{
printf("你的输入有误,请重输 \n");
}
}
system("pause");
return 0;
2.写代码可以在整型有序数组中查找想要的数字,
找到了返回下标,找不到返回-1.(折半查找) 。
折半查找简单说就是把数组 根据你输入的值和数组中间值比较,把输入值范围减少一半,依次循环,最后确定了数的位置。但是运用折半查找要注意数组必须是有序的。
接下来,实现我们要先定义俩个变量,去找到数组左边下标和右边下标。确定中间值。
通过while循环去一直改变中间值,去确定你要找的数字位置。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(){
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int len = sizeof(a) / sizeof(a[0]);
int right = len - 1;
int left = 0;
int number, mid;
printf("请输入你想要的数字: ");
scanf("%d", &number);
while (left <= right){
mid = (left + right) / 2;
if (number > a[mid]){
left = mid + 1;
}
else if (number < a[mid]){
right = mid - 1;
}
else{
printf("查到了, %d 的下标为%d \n", a[mid], mid);
break;
}
}
if (left > right){
printf("无这个值的下标");
}
system("pause");
return 0;
}
3.编写代码模拟三次密码输入的场景。
最多能输入三次密码,密码正确,提示“登录成功”,密码错误,
可以重新输入,最多输入三次。三次均错,则提示退出程序。
在这个游戏中,我们只要知道怎样去比较你输入字符串和密码字符串如何比较,
就OK了。运用strcmp()比较函数。如果字符串相同返回0,反之返回1.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main(){
char str1[] = {"123456"};
char str[] = {""};
int i = 3;
while(i > 0){
printf("请输入密码: ");
scanf("%s", str);
if (strcmp(str, str1) == 0){
printf("密码正确\n");
break;
}
else{
--i;
printf("请重新输入,你还有%d机会\n", i);
}
}
system("pause");
return 0;
}