我用vc6打c语言程序 #include<stdio.h> int main() [ primtf("h\n"); return 0:
答案:2 悬赏:50 手机版
解决时间 2021-04-01 00:40
- 提问者网友:書生途
- 2021-03-31 04:52
我用vc6打c语言程序 #include<stdio.h> int main() [ primtf("h\n"); return 0:
最佳答案
- 五星知识达人网友:孤老序
- 2021-03-31 06:11
这个程序没错,运行结果也是合情合理的,只不过不是你预期的,那是因为你没有理解输入输出流的概念,重点是这个流的含义,以及没有理解某些特殊字符,比如回车和换行。
你这个程序2次循环,每一次循环输入两个字符,然后分别打印2个字符。
但是你忽略了回车,你每一次输入2个字符之后,要按一下回车字符,而scanf读取2个字符,那么按下的回车并没有被读取,直到下一次循环时回车才会被读取。
所以第二个循环的时候,假如你输入了 x y 回车。 那么实际上a和b存入的值是 a = 回车 b = ‘x'。
注解:
键盘输入的任何数据,都按顺序一个一个排好队等待程序读取,这个队就是输入流。你按下了,如果程序没有读取,则数据一直在那里等待。 你输入 “12回车” 输入流的数据如下
’1‘,’2‘, ’\r‘ 。。
所以'\r'会干扰你的下一次循环。scanf 参数如果是 %c 表示一次从输入流取一个字符。
回车和换行都是特殊字符,回车 = ’\r‘ 换行 = '\n' .
改一下程序实现你要的效果,如下。
#include
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
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楼网友:神鬼未生
- 2021-03-31 06:38
把你的中括号“[]”换成大括号“{}”,return 0后面的冒号“:”换成分号“;”追问谢谢说得对
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯