中易网

一个无序整数数组长度位n,n大于10000,整数在0~100之间从小到大打印数组里的数

答案:1  悬赏:60  
解决时间 2021-01-25 03:12
一个无序整数数组长度位n,n大于10000,整数在0~100之间从小到大打印数组里的数
最佳答案
下面还是举例来说明:去掉else后的问题在到底在哪里,为什么结果不对了。依旧a[0]="12345",a[1]="12452";
前两个相等故不做if。第三四个a[1]值大,此处就本应该结束循环不再比较了,但是由于去掉了else语句,故依旧执行循环。但因为条件不成立,而只是进行j++;当到第五个数字时,由于a[0]中为5,而a[1]中为2,故if的条件成了,所以a[0]和a[1]进行交换,但是这显然是错误的。因为a[1]的前4项中有比a[0]大的数,早就该结束循环不比较第五个数字了。

原来大意了,呵呵,差点误导了你!实在是抱歉,现在解释的还可以吧?我仔细分析过了,应该没有任何的问题。

附:
改进建议:既然你知道strcpy()函数,为什么还要用第三个for循环一个一个字符的比较呢?可以用strcmp()来进行直接比较,这样就去掉了第三个for语句。
改进代码如下,供参考:
#include "stdio.h"
#include "string.h"
void main(){
char b[20],a[5][20];
int i,j;
printf("input:\n");
for(i=0;i<5;i++)
gets(a[i]);
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(strcmp(a[i],a[j])>0){
strcpy(b,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],b);
}
}
}
printf("\n\n排序后的结果为:\n\n");
for(i=0;i<5;i++)
puts(a[i]);
}
这样是不是清楚点呢?几乎和一般的整数数组的排序一样了,不是吗?呵呵!

strcmp的具体说明:
int strcmp(const char *string1,const dhar *string2);
按字典序比较字符串string1和string2,若string1排在string2前,返回值小于0;若string1和string2相等,返回值为0;若string1排在string2后,返回值大于0;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么查询我的护照号码 ?
看脸相算命图解
结婚的时候录的碟子在电脑上放不出来.怎么解
南昌送花南昌鲜花预订南昌网上订花哪里好?
有哪些书是写公司出纳岗位职责和工作流程分析
手写版的简历要怎么写
hermes的kelly手袋和birkin手袋有什么区别?
花千束品牌鲜花馆(人民中路店)地址好找么,我
门和窗还有地板均为白色,客厅餐厅和卧室墙面
未婚生子,分手后,孩子谁有抚养权。
手指甲长白点是什么原因
怎么样注册贸易公司
在电脑无法开机的情况写怎样重装系统哪位清楚
国庆五金店地址在什么地方,想过去办事
额头俩边没头发感觉好难看好不舒服
推荐资讯
中国移动(昆阳街634)地址在什么地方,我要处
常喜小中能见大,还须弦外有余音.什么意思
怎样除掉脸上的胎记
a1=899/9 an 1=10an 1 证明an 1/9是
为什么男生大都喜欢可爱型女生?
神清气爽什么意思
我种的葡萄树苗!不知道为什么不会一长高了,
天涯社区论坛24小时尿蛋白0.34是什么意思,其
三极管s9012管脚怎样区分
襄城县许昌中国工商银行24小时自助银行哪位知
本愿念佛是佛教净土法门吗
维也纳音乐艺术中心(平顶山宝丰县)地址在哪,
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?