m0_73213571 2022-09-27 20:10 采纳率: 50%
浏览 27
已结题

C语言选择排序怎么这么难

#include<stdio.h>
int main()
{
int i,j;
int a[10];
int temp;
int pos;
printf("为数组元素赋值:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
temp=a[i];
pos=i;
for(j=i+1;j<10;j++)
{
if(a[j]<temp)
{
temp=a[j];
pos=j;
}
}
a[pos]=a[i];
a[i]=temp;
}
printf("排序结果如下:\n");
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
if(i==4)
printf("\n");
}
return 0;
}
为什么要pos=i;这行代码?
a[pos]=a[i]用a[j]=a[i]不可用吗

  • 写回答

1条回答 默认 最新

  • 莪是男神 2022-09-27 20:59
    关注

    肯定不行,pos 变量是用于临时存储 i 的当前值的。你想啊,如果没有 pos 变量,if 判断里面直接用 i 会有一个问题,如果发生交换了,那么 i 的值可能会变为其他的值,循环次数就变得不固定了,因为你的 i 一会是 3,一会又是 6,交换的值可能会重复,甚至可能导致死循环

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 9月30日
  • 创建了问题 9月27日