猜数游戏问题,萌新求教
#include <stdio.h>#include <stdlib.h>
#include <time.h>
int main()
{
int magic ,guess,counter;
char reply;
srand(time(NULL));
magic =rand()%100 +1;
counter = 0;
do{
do{
printf("请输入一个数字:");
scanf("%d",&guess);
counter++;
if(guess > magic)
{
printf("错误!太大!\n");
}
else if(guess < magic)
{
printf("错误!太小!\n");
}
else
{
printf("正确!\n");
printf("这个数字是:%d\n",magic);
}
}while(guess != magic && counter<10);
printf("用户猜的次数是:%d \n",counter);
printf("是否继续游戏:yes或no\n");
scanf(" %c", &reply);
printf("%c\n", reply);
} while (reply == 'Y' || reply == 'y');
return 0;
}
为什么我输入yes并不能继续游戏呢,可以给我修改一下吗 你可以用字符数组
char reply;
scanf("%s", reply); 本帖最后由 jackz007 于 2022-11-3 16:41 编辑
printf("是否继续游戏:yes或no\n");
fflush(stdin);// 添加此句,在读取字符前,先清空上一次 scanf() 读取数字时滞留在键盘缓冲区的换行符 '\n',否则,后面 reply 所读到的就是这个 '\n',而不是新的键盘输入。
scanf(" %c", &reply);
这是我修改的版本,这个代码才真正可以多次玩耍,楼主的代码虽然也可以多次玩耍,但是,每一次的 magic 不会变,没意思。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int magic , guess , count ;
char reply ;
do {
srand(time(NULL)) ;
magic = rand() % 100 + 1 ;
count = 0 ;
do {
printf("请输入一个数字: ") ;
scanf("%d", & guess) ;
if(guess == magic) {
printf("正确!\n") ;
printf("您一共猜了 %d 次\n" , count + 1) ;
printf("\n") ;
} else {
if(guess > magic) printf("错误!太大!\n") ;
else printf("错误!太小!\n") ;
}
count ++ ;
printf("\n") ;
} while(guess != magic) ;
printf("要不要继续游戏?<Y/N> : ") ;
fflush(stdin) ;
reply = getchar() ;
if(reply != 'Y' && reply != 'y') break ;
} while(1) ;
} jackz007 发表于 2022-11-3 16:29
这是我修改的版本,这个代码才真正可以多次玩耍,楼主的代码虽然也可以多次玩耍,但是,每一次的 ...
只调用一次srand,然后多次调用magic =rand, magic的值也是变的,不用重复设置srand
=============================
楼主的问题是猜完一次以后没有把magic重新初始化
把
magic =rand()%100 +1;
counter = 0;
这两句放到第一个do 里面就行了 两手空空儿 发表于 2022-11-3 17:07
只调用一次srand,然后多次调用magic =rand, magic的值也是变的,不用重复设置srand
============== ...
我就这样写了,有什么不妥吗,请问? jackz007 发表于 2022-11-3 17:37
我就这样写了,有什么不妥吗,请问?
个人习惯,没有不妥,
我的意思是楼主的magic也是会变的,你不能说人家的不变 两手空空儿 发表于 2022-11-4 15:21
个人习惯,没有不妥,
我的意思是楼主的magic也是会变的,你不能说人家的不变
强词夺理,maigc 怎么变?今天玩和明天玩 magic 会一样?我说的是这个意思吗??? jackz007 发表于 2022-11-4 15:36
强词夺理,maigc 怎么变?今天玩和明天玩 magic 会一样?我说的是这个意思吗???
你怎么就这么牛B呢,别人指出你的问题了就就炸啦????
这是我修改的版本,这个代码才真正可以多次玩耍,楼主的代码虽然也可以多次玩耍,但是,【每一次的 magic 不会变】,没意思。
这话是你说的吧
楼主的代码,单次运行程序,magic也是会变的,知道不 一个字母都没有增减,你试试magic变不变
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int magic ,guess,counter;
char reply;
srand(time(NULL));
do{
magic =rand()%100 +1;
counter = 0;
do{
printf("请输入一个数字:");
scanf("%d",&guess);
counter++;
if(guess > magic)
{
printf("错误!太大!\n");
}
else if(guess < magic)
{
printf("错误!太小!\n");
}
else
{
printf("正确!\n");
printf("这个数字是:%d\n",magic);
}
}while(guess != magic && counter<10);
printf("用户猜的次数是:%d \n",counter);
printf("是否继续游戏:yes或no\n");
scanf(" %c", &reply);
printf("%c\n", reply);
} while (reply == 'Y' || reply == 'y');
return 0;
}
页:
[1]