c语言简单程序。有什么错误啊。。。 #include<stdio.h> int main() {i

c语言简单程序。有什么错误啊。。。#include<stdio.h>intmain(){inti;chara,b;for(i=1;i<=2;i++){scanf("%c%... c语言简单程序。有什么错误啊。。。
#include<stdio.h>
int main()
{int i;
char a,b;
for (i=1;i<=2;i++)
{scanf("%c %c",&a,&b);
printf("%c %c\n",a,b);}

return 0;
}
展开
 我来答
歪瑞顾K
推荐于2016-06-01 · TA获得超过2905个赞
知道大有可为答主
回答量:2731
采纳率:33%
帮助的人:2210万
展开全部
这个程序没错,运行结果也是合情合理的,只不过不是你预期的,那是因为你没有理解输入输出流的概念,重点是这个流的含义,以及没有理解某些特殊字符,比如回车和换行。

你这个程序2次循环,每一次循环输入两个字符,然后分别打印2个字符。
但是你忽略了回车,你每一次输入2个字符之后,要按一下回车字符,而scanf读取2个字符,那么按下的回车并没有被读取,直到下一次循环时回车才会被读取。
所以第二个循环的时候,假如你输入了 x y 回车。 那么实际上a和b存入的值是 a = 回车 b = ‘x'。

注解:
键盘输入的任何数据,都按顺序一个一个排好队等待程序读取,这个队就是输入流。你按下了,如果程序没有读取,则数据一直在那里等待。 你输入 “12回车” 输入流的数据如下

’1‘,’2‘, ’\r‘ 。。
所以'\r'会干扰你的下一次循环。scanf 参数如果是 %c 表示一次从输入流取一个字符。

回车和换行都是特殊字符,回车 = ’\r‘ 换行 = '\n' .

改一下程序实现你要的效果,如下。

#include<stdio.h>
int main()
{
int i;
char a,b,n;
for (i=1;i<=2;i++)
{
scanf("%c%c%c",&a,&b,&n);
printf("a=%c,b=%c,enter=0x%X\n",a,b,n);
}
printf("enter any key to exit !!\n");
getchar();
return 0;
}
psxf91
2014-11-14 · TA获得超过428个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:485万
展开全部
看起来没错误,怎么了?只是输入是要输入1空格2,程序才能正确显示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-11-14
展开全部
输出语句有问题 %c改成%s
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
benben239
2014-11-14 · TA获得超过864个赞
知道小有建树答主
回答量:612
采纳率:100%
帮助的人:493万
展开全部
报什么错误了
追问
第二次输出就不对了。。
追答

在scanf  和 printf 中间加个getchar()

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式