想问大家一个简单的C程序设计题,题如下: 就是利用C语言,把输入的几个数进行全组合排序。

如题所述

题目:对10个数进行排序

1.程序分析:可以利用 选择 法,即从后9个比较过程中,选择一个最小的与第一个元素交换,

下次类推,即用第二个元素与后8个进行比较,并进行交换。

2.程序源代码:

#define N 10

main()

{int i,j,min,tem,a[N];

/*input data*/

printf("please input ten num:\n");

for(i=0;i<N;i++)

{

printf("a[%d]=",i);

scanf("%d",&a[i]);}

printf("\n");

for(i=0;i<N;i++)

printf("%5d",a[i]);

printf("\n");

/*sort ten num*/

for(i=0;i<N-1;i++)

{min=i;

for(j=i+1;j<N;j++)

if(a[min]>a[j]) min=j;

tem=a[i];

a[i]=a[min];

a[min]=tem;

}

/*output data*/

printf("After sorted \n");

for(i=0;i<N;i++)

printf("%5d",a[i]);

}追问

不好意思哈,还想问一下您,如果对他们进行无重复的排序该怎样呢?

追答

C语言程序:删除数组中的重复数据
要求输入一个n个数据的数组,把数组中重复的数删除

输入:n n个数到a[n]中

输出:处理前后的数组对比

参考程序:

#i nclude

main()
{
int a[20],i,j,k,n;
do
{
printf("input n=");
scanf("%d",&n);
}while(n>20 || n<2);
for(i=0;i<n;i++)
{
printf("input a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
if(a[i]==a[j])
break;
if(j<i)
{
for(k=i+1;k<n;k++)
a[k-1]=a[k];
i--; n--;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
getch();
}

如输入 n=10 1,2,1,1,4,6,2,1,1,8

输出:1 2 1 1 4 6 2 1 1 8

1 2 4 6 8

温馨提示:答案为网友推荐,仅供参考
相似回答