让计算机想一个数,用户来猜,猜对,猜错都会提示,最多可以猜10次。如果输入非数字字符(比如字母,字母和数字的组合)不会报错;
10次以后,询问用户是否要继续猜,如果用户回答Y或y,就继续猜,否则结束程序。
代码
cs
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int magic,guess,counter=0;
int ret; //保存函数scanf的返回值
char reply;
do{
counter=0; //猜下一个数之前,把计数器清0
srand(time(NULL)); // 为rand()设置随机数种子
magic= rand() %100 +1;
printf("计算机想的数是%d\n",magic);
do{
printf("input guess number:");
ret =scanf("%d",&guess);
while (ret != 1)
{
while (getchar() != '\n'); //清除输入缓存区的非法字符
printf("input magic number:");
ret= scanf("%d",&guess);
}
counter++;
if (guess>magic)
{
printf("too big!\n");
}
else if (guess<magic)
{
printf("too small!\n");
}
else
{
printf("right!\n");
}
}while (guess !=magic && counter <4);
printf("一共猜了%d次\n",counter); //打印计数器
printf("do you want to continue(Y/N or y/n)?");
scanf(" %c",&reply); //%c故意留一个空格,增加程序健壮性(输入" y"也可以被识别)
}while (reply == 'Y' || reply == 'y');
}
希望用户仅在输入N或n才结束程序,输入N或n以外的字符还会继续猜数。
只需要修改最后一行代码
cs
while (reply != 'N' && reply != 'n'); //输入的数不是n或N,循环还会继续
运行效果
