题目⑴:编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,

调用函数后输出数组的元素。

#include <stdio.h>
int main()
{
void select_sort(int a[],int n);
int i,a[10];
printf("Please enter 10 number:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
select_sort(a,10);
printf("从小到大的顺序排序为:\n");
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
void select_sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[i]<a[k])
{
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}

该怎么改?

选择排序算法用selectsort()函数实现,数组输出用displayArray()函数实现:
#include<stdio.h>
#define SIZE 10
void select(int a[],int len) //选择排序函数
{
int i,j,t;
for(i=0;i<len-1;i++)
for(j=i+1;j<len;j++)
if(a[i]>a[j])
{
t=[i];
a[i]=a[j];
a[j]=t;
}
}
void displayArray(int[],int len) //数组输出函数
{
for(int i=0;i<len;i++)
if(i!=len-1)
printf("%d\t",a[i]);
else
printf("%d\n",a[i]);
}
void main()
{
int a[SIZE],x;
for(x=0;x<10;x++) //使用for语句使从键盘输入的10个数依次赋值给数组a[]
scanf("%d",&a[x]);
printf("排序前:\n");
displayArray(a,SIZE); //调用数组数组输出函数显示排序前的情况
select(a,SIZE); //调用排序函数进行排序
printf("排序后:\n");
displayArray(a,SIZE); //调用数组输出函数显示排序后的情况

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-19
#include <stdio.h>
int paixu(int n,int a[])
{
int j,k,t,i;
for(i=0;i<n-1;i++)
{

k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])
k=j;
if(k!=i)
{

t=a[k];
a[k]=a[i];
a[i]=t;
}
}

}

int main()
{
int a[11],i;
printf("输入十个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
paixu(10,a);
printf("从小到大排序:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
return 0;

}
也就是你的调用函数里,把9改成n-1,10改成n。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网