新手入门 做了一个猜数字的小游戏
加入了一个自定义答案的功能之后 程序就不继续往下运行了(程序没报错),每次运行到“请输入两个零到九的整数”这里 程序就没有反映了 也没停止
问了同学后说的是函数outcome的问题,但是我自定义的函数outcome只是求两个整数的平均数,以及判断是否输出错误三次,但是同学说后面的while循环里每次都要重新输出两个数,想问一下这个怎么改正?
是该先运行函数,赋值给一个常量,然后循环里都用这个常量吗?
要想的结果是我输入两个数后 函数outcome执行完 返回了平均数 以后就可以直接用了
下面是全部代码
#include
#include
#define ALL_NUMBER_OF_PEOPLE 2
int check(void)
{
int password;
printf("*******************\n");
printf("*请输入4位密码开始游戏*\n");
printf("*******************\n");
scanf("%d",&password);
return password;
}
int outcome(int a,int b)
{
int time,flat=1;
int m = 0;
while(flat)
{
scanf("%d %d",&a,&b);
if(a<10&&b<10){
m = (a + b)/ALL_NUMBER_OF_PEOPLE;
flat = 0;
}
else{
printf("输入错误\n");
time++;
}
if (time == 3)
{
printf("你输出错误三次了");
exit(0);
}
}
return m;
}
int main(){
printf("欢迎来到猜数字的游戏! 规则如下:\n");
printf("游戏需要输入两个一位数,并求平均数\n");
printf("小数部分会被省略 eg:(4+5)/2 = 4\n");
printf("那么游戏开始\n");
int password,i = 0;
do{
if (i == 3) {
printf("你输出错误3次了,游戏结束");
exit(0);
}
password = check();
i++;
}while(password != 1022);
int a,b,right = 4;
char n;
printf("是否需要自定义答案(y/n)\n");
//fflush(stdin);
scanf(" %c",&n);
switch (n)
{
case'Y':
case'y':
printf("请输入一个一位数数作为答案\n");
scanf("%d",&right);
printf("请输入两个零到九的整数\n");
scanf(" %d %d",&a,&b);
while(right != outcome(a,b)){
if(right - outcome(a,b) > 0)
{
printf("你输出的太小了\n");
}
else
{
printf("你输入的太大了\n");
}
}
break;
case'n':
case'N':
printf("请输入两个零到九的整数\n");
while(right != outcome(a,b)){
if(right > outcome(a,b))
{
printf("你输出的太小了\n");
}
else
{
printf("你输入的太大了\n");
}
break;
default:
printf("输入有误\n");
break;
}
printf("恭喜你回答正确");
}
return 0;
}
加入了一个自定义答案的功能之后 程序就不继续往下运行了(程序没报错),每次运行到“请输入两个零到九的整数”这里 程序就没有反映了 也没停止
问了同学后说的是函数outcome的问题,但是我自定义的函数outcome只是求两个整数的平均数,以及判断是否输出错误三次,但是同学说后面的while循环里每次都要重新输出两个数,想问一下这个怎么改正?
是该先运行函数,赋值给一个常量,然后循环里都用这个常量吗?
要想的结果是我输入两个数后 函数outcome执行完 返回了平均数 以后就可以直接用了
下面是全部代码
#include
#include
#define ALL_NUMBER_OF_PEOPLE 2
int check(void)
{
int password;
printf("*******************\n");
printf("*请输入4位密码开始游戏*\n");
printf("*******************\n");
scanf("%d",&password);
return password;
}
int outcome(int a,int b)
{
int time,flat=1;
int m = 0;
while(flat)
{
scanf("%d %d",&a,&b);
if(a<10&&b<10){
m = (a + b)/ALL_NUMBER_OF_PEOPLE;
flat = 0;
}
else{
printf("输入错误\n");
time++;
}
if (time == 3)
{
printf("你输出错误三次了");
exit(0);
}
}
return m;
}
int main(){
printf("欢迎来到猜数字的游戏! 规则如下:\n");
printf("游戏需要输入两个一位数,并求平均数\n");
printf("小数部分会被省略 eg:(4+5)/2 = 4\n");
printf("那么游戏开始\n");
int password,i = 0;
do{
if (i == 3) {
printf("你输出错误3次了,游戏结束");
exit(0);
}
password = check();
i++;
}while(password != 1022);
int a,b,right = 4;
char n;
printf("是否需要自定义答案(y/n)\n");
//fflush(stdin);
scanf(" %c",&n);
switch (n)
{
case'Y':
case'y':
printf("请输入一个一位数数作为答案\n");
scanf("%d",&right);
printf("请输入两个零到九的整数\n");
scanf(" %d %d",&a,&b);
while(right != outcome(a,b)){
if(right - outcome(a,b) > 0)
{
printf("你输出的太小了\n");
}
else
{
printf("你输入的太大了\n");
}
}
break;
case'n':
case'N':
printf("请输入两个零到九的整数\n");
while(right != outcome(a,b)){
if(right > outcome(a,b))
{
printf("你输出的太小了\n");
}
else
{
printf("你输入的太大了\n");
}
break;
default:
printf("输入有误\n");
break;
}
printf("恭喜你回答正确");
}
return 0;
}