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;
} 展开
#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;
} 展开
4个回答
展开全部
这个程序没错,运行结果也是合情合理的,只不过不是你预期的,那是因为你没有理解输入输出流的概念,重点是这个流的含义,以及没有理解某些特殊字符,比如回车和换行。
你这个程序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;
}
你这个程序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;
}
展开全部
看起来没错误,怎么了?只是输入是要输入1空格2,程序才能正确显示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-11-14
展开全部
输出语句有问题 %c改成%s
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询