这个程序循环是出什么问题了啊?为什么结果不对?

C语言的数字排序问题... C语言的数字排序问题 展开
 我来答
无畏无知者

2020-02-09 · TA获得超过4.5万个赞
知道大有可为答主
回答量:2.1万
采纳率:86%
帮助的人:5188万
展开全部

s[10]:s[0],s[1],s[2],,,s[8],s[9];

因此在排序时

j ≠ 9,否则后面的语句 s[j+1] = s[10] 溢出了;

所以正确的是: for(j=0; j<9; j++)

另外这个排序过程不够严谨,因为在第一次循环时(i=0),已经把最大值推到了 s[9]的位置上;

而在 i=1 的循环里,就不需要再扫描到 s[9],而是到 s[8] 止;

同理,在 i=2 的循环里,就不需要再扫描到 s[9],而是到 s[7] 止;

也就是:for(j=0 ; j < 9-i ; j++);

GTA小鸡
高粉答主

2020-02-09 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
for(j=0; j<9-i; j++)
追问
为什么必须要9-i呢?
感觉直接j<10,也没问题啊
追答
j<10则j最大是9,则a[j+1]=a[10]越界。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式