新手自学,遇到一个问题,求友爱大神
事先声明:1:非常感谢各位的帮助。不论结果如何。
2:希望各位大神不要纠结到这个代码如何麻烦或其他改进办法或者更好的办法得到想要的结果。希望首先解答出我提出的问题。
代码一
#include <stdio.h>
#include <stdlib.h>
int main()
{
#define MAX 20
char a[MAX];
int n;
n=0;
while((a[n]=getchar())!='\n'&&n<MAX)
{
printf("%d %c\n",n,a[n]);
n++;
}
if(n>19)
printf("Too more characters input");
printf("\n");
printf("%s",a);
return 0;
}
代码二:
while((a[n]=getchar())!='\n'&&n<MAX)
{
printf("%d %c\n",n,a[n]);
n++;
}
if(n>19)
printf("Too more characters input");
printf("\n");
n=(n<=19)?n:19;
for(m=0;m<=n;m++)
printf("%c",a[m]);
return 0;
}
代码三
#include <stdio.h>
int main()
{
#define MAX 20
char a[MAX];
int m,n;
n=0;
while(getchar()!='\n'&&n<MAX)
{
a[n]=getchar();
printf("%d %c\n",n,a[n]);
n++;
}
if(n>19)
printf("Too more characters input");
printf("\n");
n=(n<=19)?n:19;
for(m=0;m<=n;m++)
printf("%c",a[m]);
return 0;
}
声明:原先并没有用while语句里面的printf语句,只是自己不明所以,想追踪一下a[n]和n的值。结果又遇到了问题。
问题一:代码2和3中a[n]=getchar()放在条件内和放在执行语句内,有什么区别,为什么输出结果不同?
问题二:为什么当while条件为真时,他的执行语句Printf不会立即执行?要等到按下回车才执行?
问题三:比如我们输入了第21个字符,那么应该n<MAX为假,这时为什么不会跳出While语句,执行其后的语句呢?会一直能够输出,直到按下回车。
问题四:为什么代码1和2的执行结果会不同呢??顺序输出数组a[n]和输出字符串a有什么不同??为什么字符串输出会输出21位呢??最后一位怎么保存的??
以下是我自己电脑的输出结果,用的code blocks 10.05,是按代码顺序发的(应该没错)。
[最后,不论如何,谢谢各位。
第一次发帖。我承认,没有仔细阅读过规范之类的东西。。。。。