Guiding Aurora 2022-04-15 20:48 采纳率: 40%
浏览 73

一道数组按中轴数据分组的题

初始化数组int a[10]={3,6,1,0,5,2,7,8,3,4},从键盘输入一个整数n作为中轴数据,将数组中所有<n的数据排列在n的左侧,所有>n的数据排列在n的右侧,输出分组后的结果;如果所输入的n值在数组中不存在则输出"Wrong number!".

说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。

【输入形式】
【输出形式】
【样例输入】

5
【样例输出】

3 1 0 2 3 4 5 6 7 8

  • 写回答

1条回答 默认 最新

  • 惜日短 2022-04-15 23:52
    关注

    这一题我没有想到更简便的方法,就本题例子而言写一个程序问题不大,本题和普通的排序还有所不同,但是如果更普遍一点就要考虑的更多一点
    ,我想出题人给了两个3就是这个用意

    #include<stdio.h>
    int main()
    {
        int a[10]={3,6,1,0,5,2,7,8,3,4};
        int n;
        scanf("%d",&n);
        if(n<0||n>=9)
            printf("Wrong number!");//a[10]中数组元素从0到9;故0到9之外的都“Wrong number!”如果是不确定数组,循环确认是否是成员数组
        else//通过三层for打印
        {
            for(int i=0;i<10;i++){//第一层for打印比n小的
                if(a[i]<n){
                    printf("%d ",a[i]);
                }
            }
            for(int j=0;j<10;j++){//第二层for打印等于的
                if(a[j]==n)
                    printf("%d ",a[j]);
            }
            for(int k=0;k<10;k++){//第三层for打印比n大的
                    if(a[k]>n)
                    printf("%d ",a[k]);
            }
        }
        return 0;
    }
    
    

    本来我想再定义一个数组的但是依旧避免不了多个循环,干脆就三层for依次打印

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月15日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题