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

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;
}

这个程序没错,运行结果也是合情合理的,只不过不是你预期的,那是因为你没有理解输入输出流的概念,重点是这个流的含义,以及没有理解某些特殊字符,比如回车和换行。

你这个程序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个回答  2014-11-14
看起来没错误,怎么了?只是输入是要输入1空格2,程序才能正确显示
第2个回答  2014-11-14
输出语句有问题 %c改成%s
第3个回答  2014-11-14
报什么错误了追问

第二次输出就不对了。。

追答

在scanf  和 printf 中间加个getchar()

c语言。不知哪里错了。请指点。 # include <stdio.h> # include <m
scanf("%lf", a[i]);这一句错了,掉了一个&符号,写成scanf("%lf", &a[i]);就好了。程序如下,已经运行过:include <stdio.h> include <math.h> int main(){ int i, n;double a[100], sum = 0, max_cha, aver;scanf("%d", &n);for (i = 0; i < n; i++){ scanf(...

c语言:哪里错了?麻烦解释一下... #include<stdio.h> int main( )
代表的是指针的值而已

C语言第一句#include<stdio.h>
首先,你需要保存成.c或者.cpp后缀 另外,不同IDE有不同的高亮规则,也可以自己设置,这个和你能不能运行无关。第三。你的printf函数本身写错了,当然不能运行 include<stdio.h>int main(){ printf("我爱C语言"); return 0;}这才是正确的。而且printf本身不是系统关键字,默认情况也不会...

在C语言中,计算机程序通常有哪几种错误?
1、系统错误:这是指程序没有语法错误和逻辑错误,但程序的正常运行依赖于某些外部条件的存在,如果这些外部条件缺失,则程序将不能运行。2、语法错误:这是指程序中含有不符合语法规定的语句,例如关键字或符号书写错误(将printf写成print、将数组元素引用写成a(2)等)、使用了未定义的变量、括号不配对...

...运行不了 #include <stdio.h> int mian() { int a[6] , i; print...
运行不了么??就没提示输入信息??“请输入数组” 你这只是没a[0],应该可以啊。不会是 int main()。。。return 0 原因吧 改成void main(){...}试试

求助,c语言简单代码运行出错
include <stdio.h>\/\/添加 printf 函数的头文件 #include <stdlib.h>#include <time.h>int randonNumber(){int i,number;srand((unsigned) time(NULL)); \/\/用时间做种,每次产生随机数不一样for (i=0; i<50; i++){number = rand() % 2;}return number;}int main()\/\/main 的返回必须...

各位C语言高手教教我 我这程序错在哪里
\/\/这样就没错了:include<stdio.h> include<conio.h> int main(){ int a,b,c;scanf("%d,%d,%d",&a,&b,&c);if (a+b>c&&a+c>b&&b+c>a){ if(a==b&&b==c) printf("dbsjx");else if(a==b||a==c||b==c) printf("dysjx");else if(a*a+b*b==c*c||a*a+c*...

C语言哪里错了
include <stdio.h> int main(){ float f,c;f=64.0;\/\/c=(5\/9)*(f-32); \/\/这个错了,5\/9给当成整数除法了,结果是0,改正如下 c=(5.0\/9)*(f-32); \/\/把5或者9改成5.0或9.0就可以了 printf("c=%f\\nf=%f",c,f);return 0;} ...

这个c语言程序我看不懂,求教! # include<stdio.h> int main(){ \/\/
答:这里的int跟你下面程序里边的变量无关。它是指main()这个主程序返回的变量类型,当然,大多数主程序不需要返回变量,所以这个int即是必须的(C语言规定的),同时作为初级学习者来讲也是先不用管它的。2、char a,b,c;while(~scanf("%c%c%c",&a,&b,&c)){ //为什么这里要取反 答:...

C语言问题:程序出错 #include<stdio.h>
include<stdio.h> include<stdlib.h> include<string.h> void sort(char *x,char *y,char *z);int main(void){ char a[81],b[81],c[81];printf("输入三个字符串:\\n");gets(a);gets(b);gets(c);sort(a,b,c);printf("排序:");printf("%s\\n%s\\n%s\\n",a,b,c);system(...

相似回答