这个是我在C语言书上的一个习题的答案
它要求是:输入一行电报文字,两种输出方式:一为原文输出,一为将字母变成其下一字母(如‘a’变成‘b’------'z'变成‘a’.其它字符不变)。用#define 命令来控制是否要译成密码。如#define CHANGE 1 则输出密码。
若#define CHANGE 0 则按原码输出。
我的问题是红色部分的c=getchar()是如何能够把一个带空格的语句输出的?
实际上getchar()是用来从终端输入一个字符的。例子中没有循环语句啊!
#include<stdio.h>
#define CHANGE 1
{char c;
char m[20];
int i;
#if CHANGE
while((c=getchar())!='\n')
{if('a'<=c&&c<'z')c=c+1;
else
{if(c=='z')c='a';}
putchar(c);
}
#else
while((c=getchar())!='\n')
printf("%s",c);
#endif
printf("\n");
}
----------------解决方案--------------------------------------------------------
你应该在编译器上运行一下把代码复制过来,你的代码missing function header
getchar()是可以取得空格的
----------------解决方案--------------------------------------------------------
主函数都没写!
----------------解决方案--------------------------------------------------------
你的条件是"!=\n"而空格确实不等于回车换行,所以条件成立能够输入,并且getcher()属于字符输入函数它是以"\n"做为结束符空格算一个有效字符
----------------解决方案--------------------------------------------------------
不好意思!复制的时候有点小问题!
例子如下:
#include<stdio.h>
#define CHANGE 1
main()
{char c;
char m[20];
int i;
#if CHANGE
while((c=getchar())!='\n')
{if('a'<=c&&c<'z')c=c+1;
else
{if(c=='z')c='a';}
putchar(c);
}
#else
while((c=getchar())!='\n')
printf("%s",c);
#endif
printf("\n");
}
----------------解决方案--------------------------------------------------------
我的问题是:getchar()是从终端录入一个字符,而非是一个字符串,
它的在本例中能输出一个名字甚至一篇文章!
getchar()是如何将输入的字符串一个一个录入本题中的?
----------------解决方案--------------------------------------------------------
while是干什么用的?!
[此贴子已经被作者于2006-9-21 10:56:00编辑过]
----------------解决方案--------------------------------------------------------
哦,可能是我对while还不太了解,
while中没有自加语句啊
----------------解决方案--------------------------------------------------------
这个程序没有什么问题啊,不过不要在WINTC上运行,不然就是错误的,会出现死循环,最好在VC上
----------------解决方案--------------------------------------------------------
while就是用来循环的啊!!!!!
只要不输入回车,就能输下去的,顶多20个,呵呵
----------------解决方案--------------------------------------------------------