C语言菜鸟问题(13)

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:17:33
若下述程序执行时按如下方式输入数据:
a回车b回车cdef回车

则该程序运行结果是( )
#include <stdio.h>
main()
{ int k;
char c;
for(k=0;k<=5;k++)
{ c=getchar()
putchar(c) }
}
帮偶讲讲输入这些值的时候 分别把值分给谁了 咋分的 还有putchar(c)在程序中有什么意义
恩你讲得我明白了,但是为什么书上答案写的是 a b cd
第三个c值是cd 是答案错了吗还是另有玄机?

你你你……

运行结果:
a回车
a
b回车;
b
cdef回车
c

解释:
getchar() 是输入一个字符;
putchar() 输出一个字符; 比如putchar(c) 就是输出c,可是c是个变量,即输出c的变量的值……

再说那个循环,k=0开始知道k=5,一共六次。
回车意思是结束输入
(它也是作为一个字符存入缓存的,假如多个相同输入函数一起并列使用的时候,它们是从缓存中调用的,假如回车恰巧排在顺序中,就会调用,比如:
scanf(“%c”,&a);
scanf(“%c”,&b);
这个时候你要是输入: a回车b回车,那么a被赋值a,可是b被赋值为回车符,即空,打印不出东西。

那么,继续上面的解释,你输入a回车,这个时候c被赋值a,然后putchar(c) 在屏幕上打印出c的值a;
可是回车也被存在缓存中,这个时候循环继续k++,k=1了,也就是第二次循环了,getchar调用缓存中的回车符,然后打印出回车符,即什么都不打印(不是空格,而是换行!!等效于putchar('\n');)

继续,换行后进入k=2第三次循环了,同上,输出了b,回车符到缓存。
k=3,getchar调用缓存中回车符,打印putchar('\n')
k=4,第五次循环了,你输入cdef 回车,这个时候getchar只能录入字符,从而录入c赋值给变量c。
你可能会问,那么第六次循环是不是应该输出d呢?
错!! 回车号是结束标志也是字符,那么当你输入cdef的时候回车,意味着这次个getchar这个函数的输入结束了,getchar从里面选c这个第一个字符,而字符串cdef未被选中的def字符串则被丢弃。(有点绕吧~~~)

好,我们继续,k=5了,后一次循环了,getchar调用什么东东呢??对了,就是缓存中刚才录入的回车符!
打印putchar('\n&#