|
发表于 2012-10-17 16:23:40
|
显示全部楼层
- #include <stdio.h>
- #include <string.h>
- #define N 20
- int main()
- {
- char a[N];
- int i, len;
- for(i = 0; a[i] != '\n' /* i < N */ ; i++)
- //这是你的原代码,首先for语句执行顺序是
- //先执行i=0,再判断a[i]!='\n',如果成立,先执行下面的语句而不执行i++;
- {
- a[i] = getchar();//然后执行这条语句,最后i++。
- //这时a[i]并没有被getchar()赋值,for中判断语句成立,继续执行for函数。
- //所以永远也跳不出for循环。
- //如果把a[i]=getchar();与i++;交换,那么就先把i+1,然后执行a[i]=getchar()。
- //这时a[i]被赋值,即当a[i]='\n'时跳出循环。程序正确。
- /* if(a[i] == '\n')
- {
- break;
- }*/
- }
- a[i] = '\0';
- len = strlen(a);
- for(i=len-1; i>=0; i--)
- {
- printf("%c", a[i]);
- }
- return 0;
- }
复制代码 |
|