一个异常程序带来的有关问题~求指点~
一个错误程序带来的问题~~求指点~~
if练习程序~~程序如下
这个是我自己的程序~~目的是输入q,c,g,b时观察输出~~输出结果如下~~

这个结果不理想~~理想结果是别人做出来的~~如下~~

我的程序错误出在while中第一个if后没加花括号~~我想问的是为什么我的错误时的程序会多打印出一对"Step 2"和"Step 3"?后面if中嵌套if为什么就会导致多打印出一对"Step 2"和"Step 3"?
------解决方案--------------------
比如,你输入的是q,然后回车,即输入了两个字符:'q' + '\n'。'\n'就会打印"Step 2"和"Step 3"。
------解决方案--------------------
------解决方案--------------------
需要吸收回车符,你每次输入一个字符然后有还有一个回车符
------解决方案--------------------
明显是多了一个回车符,如果要别人的结果的话,代码增加处理回车符的程序。
------解决方案--------------------
增加如果遇到回车符,就continue,这样执行结果就是别人做出来的结果了。
if练习程序~~程序如下
#include<stdio.h>
int main(void)
{
char ch;
while((ch=getchar())!='#')
{
if(ch!='\n')
printf("Step 1\n");
if(ch=='b')
break;
else if(ch!='c')
{
if(ch!='g')
printf("Step 2\n");
printf("Step 3\n");
}
}
printf("Done!\n");
return 0;
}
这个是我自己的程序~~目的是输入q,c,g,b时观察输出~~输出结果如下~~
这个结果不理想~~理想结果是别人做出来的~~如下~~
我的程序错误出在while中第一个if后没加花括号~~我想问的是为什么我的错误时的程序会多打印出一对"Step 2"和"Step 3"?后面if中嵌套if为什么就会导致多打印出一对"Step 2"和"Step 3"?
------解决方案--------------------
比如,你输入的是q,然后回车,即输入了两个字符:'q' + '\n'。'\n'就会打印"Step 2"和"Step 3"。
------解决方案--------------------
#include<stdio.h>
int main(void)
{
char ch;
while((ch=getchar())!='#')
{
if(ch!='\n')
printf("Step 1\n");
if(ch=='b')
break;
else if(ch!='c')
{
if(ch!='g')
printf("Step 2\n");
printf("Step 3\n");
}
while((ch = getchar()) != '\n')
;
}
printf("Done!\n");
return 0;
}
------解决方案--------------------
需要吸收回车符,你每次输入一个字符然后有还有一个回车符
------解决方案--------------------
明显是多了一个回车符,如果要别人的结果的话,代码增加处理回车符的程序。
while((ch=getchar())!='#')
{
if(ch!='\n')
printf("Step 1\n");
else
continue;
if(ch=='b')
break;
else if(ch!='c')
{
if(ch!='g')
printf("Step 2\n");
printf("Step 3\n");
}
}
------解决方案--------------------
增加如果遇到回车符,就continue,这样执行结果就是别人做出来的结果了。