c语言这题哪里错了第二题?
2个回答
展开全部
这样的问题我昨天刚遇到,属于逻辑错误,主要问题出在排序上
排序一定要用2层for循环来完成,不能用一个for解决,来理一理!
假如从小到大拍,一个循环,第一个数跟第二个数对比,把小的放第一,第二次循环,是第二个跟第三个数比,把小的放第二个位,这样问题就来了,如果第三个数第一个还小,你的最小数就没有跑到第一位。还是在第二位置,就错了!
排序逻辑,是将第一个数跟所有得数比较,将最小的换到第一,然后在用第二个跟所有的比,把较小的放第二,...
必须2层循环,
简化下程序吧,
用第一个数跟所有的数比,用第二个数跟后面的比(不用全部),第三个,跟后面的比,这样效果一样,在大数据处理时快很多,你这个小题可以不用,但一定要学学,
我一直都不写代码,只将逻辑,和你们学习空间,见谅!
排序一定要用2层for循环来完成,不能用一个for解决,来理一理!
假如从小到大拍,一个循环,第一个数跟第二个数对比,把小的放第一,第二次循环,是第二个跟第三个数比,把小的放第二个位,这样问题就来了,如果第三个数第一个还小,你的最小数就没有跑到第一位。还是在第二位置,就错了!
排序逻辑,是将第一个数跟所有得数比较,将最小的换到第一,然后在用第二个跟所有的比,把较小的放第二,...
必须2层循环,
简化下程序吧,
用第一个数跟所有的数比,用第二个数跟后面的比(不用全部),第三个,跟后面的比,这样效果一样,在大数据处理时快很多,你这个小题可以不用,但一定要学学,
我一直都不写代码,只将逻辑,和你们学习空间,见谅!
展开全部
你排序出问题了。
你好好捋一下代码,不管是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;
}
}
}
你好好捋一下代码,不管是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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询