想问大家一个简单的C程序设计题,题如下: 就是利用C语言,把输入的几个数进行全组合排序。
1个回答
展开全部
题目:对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]);
}
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询