| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1260 人关注过本帖
标题:[求助]关于 if语句的一个幼稚的问题
只看楼主 加入收藏
death
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-2-14
收藏
 问题点数:0 回复次数:16 
[求助]关于 if语句的一个幼稚的问题
void main()
{
 char a,b;
 printf("%s\n","input a");
 scanf("%c",&a);
 if(a=='y')
 printf("a=y");
 else printf("error");
 printf("%s\n","input b");
 scanf("%c",&b);
 if(b=='y')
 printf("b=y");
 else printf("error");
}

上面这段程序在运行过程中第一个if...else结构运行正常,而第二个if...else结构则不起作用,程序在不要求任何输入的情况下自动输出“error”,不知是何原因,望高人指教。
搜索更多相关主题的帖子: 语句 
2005-02-22 00:40
mengge
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-2-10
收藏
得分:0 
void main()
{
char a,b;
printf("%s\n","input a");
scanf("%c\n%c",&a,&b);
if(a=='y')
printf("a=y\n");
else printf("error\n");
printf("%s\n","input b");
if(b=='y')
printf("b=y");
else printf("error");
getch();
}
我在TC编译器上运行可以拉
2005-02-22 08:44
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

#include <stdio.h> #include <conio.h>

void main() { char a,b; printf("%s\n","input a"); scanf("%c",&a); if(a == 'y') printf("a=y\n"); else printf("error\n");

printf("%s\n","input b"); scanf("\n%c",&b);

if(b == 'y') printf("b=y\n"); else printf("error\n"); }


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-02-22 09:53
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
得分:0 

#include <stdio.h> #include <conio.h>

void main() { char a,b,c; printf("%s\n","input a"); scanf("%c",&a); if(a == 'y') printf("a=y\n"); else printf("error\n");

printf("%s\n","input b"); c=getchar(); scanf("%c",&b);

if(b == 'y') printf("b=y\n"); else printf("error\n"); getch(); }

2005-02-22 10:27
death
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-2-14
收藏
得分:0 
按照高人yuki的写法是有效的,但是在下的问题出在哪里呢?难道真就差在那几个空格上?还请高人指教。另外也多谢高人mengge的指教。
2005-02-22 10:30
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用death在2005-2-22 10:30:01的发言: 按照高人yuki的写法是有效的,但是在下的问题出在哪里呢?难道真就差在那几个空格上?还请高人指教。另外也多谢高人mengge的指教。
问题不是出在空格上面,只是我帮你整理了下代码看上去清晰一点。。。问题出在第二个scanf()语句上面,上了个换行符。。因为第一个scanf()的格式只是收集用户输入的一个字符,而收集完字符后必须输入回车跳转到第二个scanf(),之前你的第二个scanf()没有换行符也是只收集用户输入的一个字符,计算机会误把上面一个回车传递给变量b所以会造成if语句跳出。。。。。我表达能力不太好,还请见谅。。。。 对了,我也不是什么高人,和你一样的也是同一起跑线上的初学者。。。。。。。。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-02-22 10:41
death
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-2-14
收藏
得分:0 
这次全明白了,多谢指教。
2005-02-22 10:52
mengge
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-2-10
收藏
得分:0 
我只是曾经碰到和你一样的问题 只是知道为什么出现这个问题不知道 SCANF()的回车在那里接收才有效 麻烦yuki 告诉怎么样判断在那里接收 最后我也不是什么高人 我学C也才1个月而已
2005-02-22 23:42
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
一般从第二个scanf()起使用,以便接受上一个scanf()传入的换行符。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-02-23 09:30
mengge
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2005-2-10
收藏
得分:0 
谢谢yuki指点 我一直都是为拉避免我就采取调用函数和放在一个scanf()里面
2005-02-23 23:14
快速回复:[求助]关于 if语句的一个幼稚的问题
数据加载中...
 
   



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

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