|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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并不能继续游戏呢,可以给我修改一下吗
本帖最后由 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) ;
- }
复制代码
|
|