选择法排序:本题要求将给定的n个整数从小到大排序后输出。输出时相邻数字中间用一个空格分开,注意:行末不得有多余空格。 #include <stdio.h> #define MAXN 10 int main(){ int a[MAXN]; int n,k,i,index,temp; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(k=0;k<n-1;k++){ index= ; for( ) if( ) index=i; } for(i=0;i<n;i++){ if( ) printf("%d",a[i]); else printf(" %d",a[i]); } return 0; }
时间: 2024-02-14 13:08:45 浏览: 127
这是一段选择排序的代码,但是其中有几个问题需要补充完善:
1. 第7行的index应该初始化为0,因为数组下标从0开始。
2. 第9行的循环条件应该是i=k+1,因为k之前已经排好序了。
3. 第10行的if语句中应该是a[i]<a[index],因为要实现从小到大排序。
4. 第12行的if语句中应该是a[k]!=a[index],因为如果当前元素和最小元素相等,就不需要交换。
5. 第14行和第16行的if语句中应该是i==0和i==n-1,因为第一个和最后一个数字前后不能有空格。
修改后的代码如下:
```c
#include <stdio.h>
#define MAXN 10
int main(){
int a[MAXN];
int n,k,i,index,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(k=0;k<n-1;k++){
index=k;
for(i=k+1;i<n;i++)
if(a[i]<a[index])
index=i;
if(a[k]!=a[index]){
temp=a[k];
a[k]=a[index];
a[index]=temp;
}
}
for(i=0;i<n;i++){
if(i==0)
printf("%d",a[i]);
else if(i==n-1)
printf(" %d",a[i]);
else
printf(" %d",a[i]);
}
return 0;
}
```
阅读全文