设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示信息“Right”,否则提示“Wrong”,并告诉用户是大还是小。每次猜数只允许用户最多猜10次,如果未猜对,则停止本次猜数,给出如下提示信息,询问用户是否继续猜数:
Do you want to continue (Y/N or y/n) ?
若用户输入’Y’或’y’,则继续猜下一个数;否则结束猜数。
这个是我写的哪里不对啊,每次玩十次后,要回答是否继续时,就运行不下去了啊
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int x,magic,a=0,c=1;
char b;
do
{
srand(time(NULL)); //为函数rand()设置随机数种子
magic = rand() %100 +1; //magic为1~100间的一个数
printf("您每次游戏中,只有十次机会\n");
while(a<=10)
{
scanf("%d",&x);
if(x>magic)
printf("Wrong,比magic大\n");
else if(x<magic)
printf("Wrong,比magic小\n");
else if(x=magic)
{
printf("Right\n");
a=a+1;
printf("你猜了%d次了\n",a);
break;
}
a++;
printf("你猜了%d次了\n",a);
if(a==10)
{ a=0;
printf("Do you want to continue?(回答Y/N或者y/n)\n");
scanf("%c",&b);
if(b=='y'||b=='Y')
c=1;
else if(b=='n'||b=='N')
c=0;
}
}
}while(c==1);
return 0;
}
scanf 里面没有空格的情况,程序会自动执行 10 次
修改后的程序,猜对的情况
修改后的程序,猜错 10 次,Y的情况
修改后的程序,猜错 10 次,N的情况
将while(a<=10)改为while(a<10)
将if(a==10){……}的语句放到while(a<10){……}的后面,并去掉if条件
在scanf("%c",&b);前加上getchar();
下面是调整后的语句
#include<stdio.h>