| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:新手自学,遇到一个问题,求友爱大神
取消只看楼主 加入收藏
AiBMeng
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-4-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
新手自学,遇到一个问题,求友爱大神
事先声明:
   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,是按代码顺序发的(应该没错)。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

[最后,不论如何,谢谢各位。
第一次发帖。我承认,没有仔细阅读过规范之类的东西。。。。。
搜索更多相关主题的帖子: return 
2011-04-22 22:15
快速回复:新手自学,遇到一个问题,求友爱大神
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028512 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved