jingyyds 2021-06-18 05:18 采纳率: 66.7%
浏览 50
已采纳

请帮忙解决我得问题,问题出在哪

题目内容:

接受若干非负整数(数据不重复),当个数超过10个或者遇到负数时停止接受,将这几个整数按升序排列输出,并且奇数在前,偶数在后。

输出要求,每个数字后输出空格与其他数字隔开,最后一个数字后也有空格

 

输入样例1:

10 9 8 7 6 5 4 3 2 1

 

输出样例1:

1 3 5 7 9 2 4 6 8 10 回车

 

输入样例2:

2 3 4 5 -1

 

输出样例2:

3 5 2 4 回车

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int a[10] = { 0 };
    int b[10] = { 0 };
    int c[10] = { 0 };
    int d[10] = { 0 };
    int e[10] = { 0 };
    int f[10] = { 0 };
    for (int i = 0;i<20; i++)
    {
        scanf_s(" %d", &a[i]);
        if (a[i] < 0 || i>11)
        {
            b[i] = a[i];
            break;
        }
    }
    int len1=sizeof(a)/sizeof(a[0]);
    for (int j = 0; j < len1; j++)
    {
        int k = a[j] % 2;
        if (k == 1)
        {
            c[j] = a[j];
        }
        else 
        {
            d[j] = a[j];
        }
    }
    int len2= sizeof(c) / sizeof(c[0]);
    int len3 = sizeof(d) / sizeof(d[0]);
    for (int k = 0; k < len2; k++)
    {
        for (int m = 0; m < len2; m++)
            if (c[k] < c[m + 1])
            {
                e[k] = c[k];
                c[k] = c[m + 1];
                c[m + 1] = e[k];
            }

    }
    for (int k = 0; k < len3; k++)
    {
        for (int m = 0; m < len3; m++)
            if (d[k] > d[m + 1])
            {
                f[k] = d[k];
                d[k] = d[m + 1];
                d[m + 1] = f[k];
            }
        for (int k = 0; k < len2; k++)
            printf(" %d", c[k]);
        for (int k = 0; k < len3; k++)
            printf(" %d", d[k]);
    }
    system("pause");
    return 0;
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-06-18 13:25
    关注

    修改如下,供参考:

    #include<stdio.h>
    int main(void)
    {
        int i,j,k,tmp,a[10],b[10],cnt=0;
    
        for(i=0;i<10;i++){
            scanf("%d",&a[i]);
            if(a[i]<0) break;
        }
        k=i;
        for(i=0;i<k-1;i++){    //排序,升序
            for(j=i+1;j<k;j++){
                if(a[j]<a[i]){
                    tmp=a[j];
                    a[j]=a[i];
                    a[i]=tmp;
                }
            }
        }
        for(i=0;i<k;i++){  //数组a[]中奇数先放入数组b[]
            if(a[i]%2!=0){
                b[cnt]=a[i];
                cnt++;
            }
        }
        for(i=0;i<k;i++){ //数组a[]偶数放入数组b[]
            if(a[i]%2==0){
                b[cnt]=a[i];
                cnt++;
            }
        }
        for(i=0;i<k;i++)   //输出数组b[]
            printf("%d ",b[i]);
        printf("\n");
        
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?