c语言这道题怎么做
发布网友
发布时间:2022-04-27 09:26
我来回答
共3个回答
热心网友
时间:2023-09-19 02:00
我写这个,修改常量可以实现任意长度数组间任意长度降序排列。
#include <stdio.h>
#define maxlen 10//数组总长度
#define midlen 8//中间需要排序的长度,修改时确保midlen小于等于maxlen 并且 maxlen-midlen为偶数或0
int main()
{
int a[maxlen]={3,6,1,7,8,4,9,5,10,2},i,*pb=&a[(maxlen-midlen)/2],*pe=pb+(midlen-1),*ps=NULL;
pb--;
while(++pb<=pe)//冒泡排序
{
ps=pb+1;
while(++ps<=pe)
if(*ps>*pb)
*ps^=*pb,*pb^=*ps,*ps^=*pb;
}
printf("排序前:3,6,1,7,8,4,9,5,10,2\n中间8位排序后:");
for(i=0;i<maxlen;i++)
printf("%d ",a[i]);
return 0;
}
热心网友
时间:2023-09-19 02:01
#include<stdio.h>
main()
{ int a[10]={3,6,1,7,8,4,9,5,10,2},i,j,k;
for(j=1;j<=8;j++){
for(i=1;i<9-j;i++)
if(a[i]>a[i+1]){
k=a[i];
a[i]=a[i+1];
a[i+1]=k;
}
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
如图所示,望采纳。。。。。。
热心网友
时间:2023-09-19 02:01
#include<stdio.h>
void main() { int a[10]={ 3,6,1,7,8,4,9,5,10,2}, i, j, k;
for ( i=1;i<8;i++ )
for ( j=i+1;j<9;j++ )
if ( a[i]<a[j] ) { k=a[i];a[i]=a[j];a[j]=k; }
for ( i=0;i<10;i++ ) printf("%d ",a[i]); printf("\n");
}