C语言设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示信息

设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示信息“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;
}

//希望我的回答对你的学习有帮助
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int x, magic, a = 0, c = 1;
char b;
do
{
srand(unsigned(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) //这里的逻辑运算应该使用“==”
else if (x == magic) //你应该是写错了
{
printf("Right\n");
a = a + 1;
printf("你猜了%d次了\n", a);
a = 0; //猜对之后,应该对猜测的次数初始化
break;
}
a++;
printf("你猜了%d次了\n", a);
if (a == 10)
{
a = 0;
printf("Do you want to continue?(回答Y/N或者y/n)\n");
//scanf_s("%c", &b); //这么使用,会将你在输入字符之前的
// 空行(enter键)赋值给 b,而不是你输入的Y/N/y/n
scanf(" %c", &b); //而这种写法,%c 前面的 空格会使 scanf 忽略前面的 enter键
//等待第一个非 enter键 元素读入
if (b == 'y' || b == 'Y')
c = 1;
else if (b == 'n' || b == 'N')
c = 0;
break; //当猜测次数为 10 时,应当跳出
//这里不会自动跳出,因为 a 被初始化为 0
}
}
} while (c == 1);

return 0;
}

scanf 里面没有空格的情况,程序会自动执行 10 次

修改后的程序,猜对的情况

修改后的程序,猜错 10 次,Y的情况

修改后的程序,猜错 10 次,N的情况

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-16

将while(a<=10)改为while(a<10)  
将if(a==10){……}的语句放到while(a<10){……}的后面,并去掉if条件

在scanf("%c",&b);前加上getchar();

下面是调整后的语句

#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);
}
a=0;
printf("Do you want to continue?(回答Y/N或者y/n)\n");
getchar();
scanf("%c",&b);
if(b=='y'||b=='Y')
c=1;
else if(b=='n'||b=='N')
c=0;
}while(c==1);
return 0;
}

本回答被网友采纳
相似回答