c语言这道题怎么做

3、定义一个大小为10的整型一维数组,初始化所有数组元素,编程对中间的8个元素进行降序排序,即第一个和最后一个元素不参与排序。程序运行效果如下图所示:提示:(1)本题变量... 3、定义一个大小为10的整型一维数组,初始化所有数组元素,编程对中间的8个元素进行降序排序,即第一个和最后一个元素不参与排序。程序运行效果如下图所示:
提示:
(1)本题变量定义可参考如下
int a[10]={ 3,6,1,7,8,4,9,5,10,2}, i, j, k, t;
展开
 我来答
自我编程
2018-11-22 · 科技优质答主
自我编程
采纳数:1481 获赞数:4279

向TA提问 私信TA
展开全部

我写这个,修改常量可以实现任意长度数组间任意长度降序排列。

#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;
}
疯狂小鸟ZXD
高粉答主

2018-11-22 · 每个回答都超有意思的
知道大有可为答主
回答量:1.3万
采纳率:96%
帮助的人:2887万
展开全部

#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]);
}

如图所示,望采纳。。。。。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2018-11-22 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3543万
展开全部
#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");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式