高手帮我看看这个c程序 关于while循环的

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:11:28
main()
{ char s[80],c;int n=0;
while ((c=getchar ())!='\n') s[n++]=c;
n--;
while (n>=0) printf("%c",s[n--]);}

此程序中 while(C=getchar())!='\n')中 输入的是thank!输出的是!knaht 我搞不明白为什么输入的时候是一次输入thank!呢? while(C=getchar())!='\n')中 字符变量C只能接受一个字符啊 应该一个字符一个字符的输入再一个一个的进入循环体才能得到这个结果啊?

你一次输入thank!,getchar()虽然是一个字符一个字符读,但是有自己的缓冲区。先把数据存入缓存,然后再一个一个读

第二个循环是倒序输出,没看到n--么

不是,你的n值经过s[n++]后改变了,输出的时候是从数组后向前输出的。

可以这样写:

#include <stdio.h>

main()
{
char s[80],c;int n=0; int i;
while ((c=getchar ())!='\n') s[n++]=c;
n--;
i = n;
while (n>=0) printf("%c",s[i -(n--)]);
}

一次输入thank!就是循环的作用嘛!你每输入一个字符的时候,如果该字符不是回车,则循环执行c=getchar(),并赋给s[n++]。看起来的效果就是连续输入的样子,

首先,不说程序对错,你写程序的格式就不对,不方便阅读。

其次,说说程序,s[n--]就是倒序输出。

应该是s[k-(n--)],其中int k=0。

这样才对嘛!