| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 703 人关注过本帖
标题:看不懂这道程序。请某个懂行的帮我解释一下吧
只看楼主 加入收藏
xy3zhong
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-12-6
收藏
 问题点数:0 回复次数:9 
看不懂这道程序。请某个懂行的帮我解释一下吧
#include<stdio.h> main() { int i,x,a[100]; printf("Input data:"); scanf("%d",&x); while(x>=0&&x<100) { a[x]=1; scanf("%d",&x);} for(i=99;i>=0;i--) if(a[i]==1) printf("%4d",i); printf("\n");} 这道程序作用是:输入互相不同的小于100的非负数,用负数结束循环并按从大到小顺序排列起来!!可我看不懂while(x>=0&&x<100) { a[x]=1; scanf("%d",&x);}是怎么回事啊??
搜索更多相关主题的帖子: 解释 
2005-06-29 15:58
xy3zhong
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-12-6
收藏
得分:0 
让我郁闷的还有:倒数第2行的if(a[i]==1) printf("%4d",i);,i是下标值呀?那意思不就是输出下标值吗?
可最后输出的却是下标值所对应的元素大小顺序。。我这里就搞不懂了
2005-06-29 16:16
anycall628
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2005-2-18
收藏
得分:0 
while(x&gt;=0&amp;&amp;x&lt;100)   /*如果输入的数在0~100之间,继续输入,如果超出这个范围*/
{                                 /*结束输入*/
a[x]=1;
scanf("%d",&amp;x);}


i其实就是你输入的x的值

爱生活,爱编程。
2005-06-29 18:52
ajey2004
Rank: 1
等 级:新手上路
帖 子:164
专家分:0
注 册:2004-12-30
收藏
得分:0 
这个有意思
呵呵
对付小点的数还行
大了就完了

2005-06-29 19:28
错过疯长的季节
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-6-29
收藏
得分:0 
有趣。

我不喜欢抽烟,但喜欢抽烟的感觉……
2005-06-29 19:54
xy3zhong
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-12-6
收藏
得分:0 
有趣什么?
有本事就解释啊。别在一边装高雅
2005-06-30 15:11
错过疯长的季节
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-6-29
收藏
得分:0 
其实 anycall628 这位朋友已经说的很清楚了。我刚学C语言,也说两句,望你不要见笑。 { a[x]=1; scanf("%d",&x);} /*这一段很好解释,就是在输入X值的同时,把下标为现在X值的数组元素付值为1*/ for(i=99;i>=0;i--) if(a[i]==1) printf("%4d",i); printf("\n");}/*这一段其实很巧妙,正如anycall628所说“i其实就是你输入的x的值”,假设没有条件语句if(a[i]==1),i会以倒序输出,加上条件语句后,假设你输入56 89 23 -1等值,也就是数组元素a[56]=1,a[89]=1, a[23]=1,在倒序输出时,当然是先输出最大的,也就是当i递减的89时,如于a[89]==1,所以先输出当i等于89的值,以下类推*/ 最后这个程式中存在BUG,最好先把数组全部初始化为0,否则会有意想不到结果。

我不喜欢抽烟,但喜欢抽烟的感觉……
2005-07-01 06:47
错过疯长的季节
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-6-29
收藏
得分:0 
就算不全初始化为0,最好也要先把第一个数组元素初始化为0。

我不喜欢抽烟,但喜欢抽烟的感觉……
2005-07-01 06:51
aafg剑心
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-6-12
收藏
得分:0 
       挺有意思的,哈哈

    不过缺陷不少!!!!!!

世事如舟挂短篷,或移西岸或移东。 几回缺月还圆月,数阵南风又北风。 岁久人无千日好,春深花有几时红。 是非入耳君须忍,半作痴呆半作聋。
2005-07-02 01:45
94305181
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-6-24
收藏
得分:0 
while(x&gt;=0&amp;&amp;x&lt;100)
{
a[x]=1;          这不是把任意的一个数组a中的元素都赋为1了吗?
scanf("%d",&amp;x);}
不懂,望高人指教啊!
2005-07-02 21:44
快速回复:看不懂这道程序。请某个懂行的帮我解释一下吧
数据加载中...
 
   



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

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