耄耋之年祝福语:关于字符型数据输入输出的小问题:

来源:百度文库 编辑:中科新闻网 时间:2024/04/25 05:39:19
关于字符型数据输入输出的小问题:
有如下程序:
#include "stdio.h"
main()
{ int i;char ch;
for(i=0;i<=5;i++) {ch=getchar();putchar(ch);}
}
如输入a<CR>bc<CR>de<CR>
则程序的输出是什么??能告诉我为什么吗??
<CR>代表回车符

 
 
 
若输入 a<CR>bc<CR>de<CR> 则程序的输出是这 3 行:
a
bc
d

用你的方式表达输出的话,则是:
a<CR>bc<CR>d

每一个回车都是一个字符:2 个回车 + 4 个字母 == 6 个字符。

原因是程序里的 for 语句只执行循环体 6 次,而循环体的每一次执行所完成的操作是:
1)通过 getchar( ) 读取标准输入上的一个字符,并把该字符赋值给 ch
2)通过 putchar( ) 把 ch 输出到标准输出上去

即是说,程序会把标准输入上的前 6 个字符按序输出到标准输出上去。

其实程序里的 ch 没有必要。 要达到同样的效果只需写:

#include <stdio.h>

void main( ) {
    int i;
    for ( i = 0; i <= 5; i++ )
        putchar( getchar( ) );
}

对了,楼上的 mscao 给出的:
a
a
bc
bc
de
d

是键盘输入加上程序输出,不单是程序输出。
 
 
 

a (输入+回车)
a
bc (输入+回车)
bc
de (输入+回车)
d

因为的控制循环输入的i的0到5共6次,到最后那个输出的de的d的时候次数已经用完了程序就结束了。

a<CR>b
因为进行了6次循环,每次读入一个字符,然后输出。

(本结果在VC上经过验证)

如果<CR>是换行符则结果为
a (输入+换行)
a
bc (输入+换行)
bc
de (输入+换行)
d

不好意思,先前没有理解您的意思

不是很理解你的意思,不知道你的<CR>代表什么??
1.如果你把<CR>当成普通字符,那么输出就是楼上回答的 :a<CR>b
2.如果你在输入时把<CR>当成回车,结果为:
a
a
bc
bc
de
d