首页
社区
课程
招聘
[旧帖] [求助]c语言,为什么会显示两次,哪里错了? 0.00雪花
发表于: 2015-5-21 23:14 1476

[旧帖] [求助]c语言,为什么会显示两次,哪里错了? 0.00雪花

2015-5-21 23:14
1476
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int cssjs(void)
{
        srand((unsigned)time(NULL));
        int j = rand() % 101;
        if (j != 0)
        {
                return j;
        }
}
void game(void)
{
        int j = cssjs();
        int n = 1;
        for (;;)
        {
                int i;
                scanf("%d", &i);
                if (j < i)
                {
                        printf("%d bigger than the number,TRY again\n",i);
                }
                else if (j > i)
                {
                        printf("%d smaller than the number,TRY again\n",i);
                }
                else
                {
                        printf("You win by %d times ,the number is %d\n", n, i);
                        break;
                }
                n++;
        }
}
void main()
{
        int i;
        char j;
        printf("Enter a number between 1-100:\n");

        while (1)
        {
                game();
                while (1)
                {
                        printf("Would you want to play it again?\nEnter y/n\n");
                        scanf("%c", &j);
                        if (j == 'y')
                        {
                                game();
                        }
                        else if (j == 'n')
                        {
                                printf("have fun,thank you");
                                break;
                        }
                }
                break;
        }
        getch();
}
这是个猜数的游戏,重点不是猜数这个程序,而是后面mian中的“想再玩一次吗”,打印第二遍才要求输入y/n,为什么啊?

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"

void main()
{
        while (1)
        {
                int j;
                while (1)
                {
                        printf("Enter");
                        scanf("%d", &j);
                        if (j == 1)
                        {
                                break;
                        }
                }
        }
        getch();
}这个就没问题

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
问题二
键盘缓冲区残余信息问题
#include<stdio.h> 
int main(void) 
{
int a; char c; 
while(c!='N') 
{ 
scanf("%d",&a);
scanf("%c",&c); 
printf("a=%dc=%c\n",a,c);
/*printf("c=%d\n",c);*/
} 
return 0; 
} 


scanf("%c", &c);这句不能正常接收字符,什么原因呢?我们用printf("c = %d\n", c);将C用int表示出来,启用printf("c = %d\n", c);这一句,看看scanf()函数赋给C到底是什么,结果是c=10 ,ASCII值为10是什么?换行即\n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了c.解决办法:可以在两个scanf()函数之后加getch(), getchar(),但是要视具体scanf()语句加那个,这里就不分析了,读者自己去摸索吧。
2015-5-22 10:58
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
明白了,因为之前要求输入猜的数字,最后一个残余了,谢谢了
2015-5-22 12:34
0
游客
登录 | 注册 方可回帖
返回
//