标题:关于while()语句的一个小问题。
只看楼主
Maps
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2015-3-8
结帖率:66.67%
已结贴  问题点数:15 回复次数:7 
关于while()语句的一个小问题。
源代码如下
#include"stdio.h"

main()
{
    char c1;
    char c2;
    int player=1;
    while(1)
    {
       if(player==1)
        {
            printf(" 1\n");
            scanf("%c",&c1);
            printf("%c",c1);
            player=2;
        }
        if(player==2)
        {
            printf(" 2 \n");
            scanf("%c",&c2);
            printf("%c",c2);
            player=1;
        }
    }
}
这个程序我想要的目的是if语句交替进入, 输出一个1 ,给c1赋值一个字符,紧着输出2 为c2赋值,但是程序运行的结果为什么是
首先输出 1 当我随便输入一个字母的时候比如s  ,之后则是  s  2   1 ,疑问就是为什么进入 if(player==2)这个语句的时候那个scanf语句似乎是失效了?为什么不让输入
了?请各位大神指点一下啊
搜索更多相关主题的帖子: include 源代码 player 
2015-10-24 08:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
你直接看看scanf读入了什么就清楚了呀
printf( "%hhd\n", c1 );
2015-10-24 13:20
随风的飞叶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:90
专家分:158
注 册:2015-10-8
得分:4 
程序运行结果。1
              d
              d 2
               
                1
程序运行中,printf 1有回车,转到d,输入在后回车,转到下行输出,d  2,后面有回车,车到下行,现在问题来了,
d 2下面的一行应该是输出1 的,但实际上是空行。这说明当你第一次输入时,把回车当成一个值给了c2,所以,运行结果就是这样的了,参见,数据的输入,输出。  
2015-10-24 15:57
kysh
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2014-10-19
得分:4 
scanf输入数据的时候并没有输入数据的值,而是输入了空格键
2015-10-24 16:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 4楼 随风的飞叶
晕,你的编译器不支持c标准中所规定的%hhd。
我应该早想到的,因为你若是用的符合c标准的编译器的话,main()是会报错或警告的。
2015-10-24 18:55
Maps
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2015-3-8
得分:0 
回复 4楼 随风的飞叶
确实是空格赋值给了c2 。。
现在在每一个赋值语句后面加入 fflush(stdin); 这个清除输入流的缓冲区就可以进行交替输入了。

看到了编程大海的一角,我还在努力的寻找方向,
2015-10-24 22:05
Maps
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2015-3-8
得分:0 
回复 2楼 rjsp
这个是输出什么的啊? 不懂啊

看到了编程大海的一角,我还在努力的寻找方向,
2015-10-24 22:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-458500-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.184813 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved