c语言这题哪里错了第二题?

 我来答
考骄70
科技发烧友

2019-11-22 · 智能家居/数码/手机/智能家电产品都懂点
知道小有建树答主
回答量:1096
采纳率:58%
帮助的人:66万
展开全部
这样的问题我昨天刚遇到,属于逻辑错误,主要问题出在排序上
排序一定要用2层for循环来完成,不能用一个for解决,来理一理!
假如从小到大拍,一个循环,第一个数跟第二个数对比,把小的放第一,第二次循环,是第二个跟第三个数比,把小的放第二个位,这样问题就来了,如果第三个数第一个还小,你的最小数就没有跑到第一位。还是在第二位置,就错了!
排序逻辑,是将第一个数跟所有得数比较,将最小的换到第一,然后在用第二个跟所有的比,把较小的放第二,...
必须2层循环,
简化下程序吧,
用第一个数跟所有的数比,用第二个数跟后面的比(不用全部),第三个,跟后面的比,这样效果一样,在大数据处理时快很多,你这个小题可以不用,但一定要学学,
我一直都不写代码,只将逻辑,和你们学习空间,见谅!
zhuhl0617
2019-11-21 · 超过27用户采纳过TA的回答
知道答主
回答量:80
采纳率:80%
帮助的人:34.1万
展开全部
你排序出问题了。

你好好捋一下代码,不管是a、b、c,三个的排序,你都只是把最大/最小的一个数找出来了,你没有完成排序。
要完成排序,要有两个for循环嵌套才行。
另外,你这个代码还有一个问题,你在for循环里面,取a[i+1]的时候,数组会超限。
应该类似这样写:
unsigned char a[5];
for (i=0;i<5;i++)
{
for (j=i;j<5;j++)

{

if (a[i]<a[j])

{

t=a[i];

a[i] = a[j];

a[j]=t;

}

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式