首页 > 试题广场 >

输入50个正整数,将其中的偶数按升序排列,奇数按降序排列。若

[问答题]

输入50个正整数,将其中的偶数按升序排列,奇数按降序排列。若偶数个数多于奇数个数,则偶数放在数组的前边,奇数放在其后;否则奇数放在前,偶数在后;输出排序后的结果。

import random
xx=[random.randint(1,100) for _ in range(50)]
oushu=sorted(list(filter(lambda x:x if x%2==0 else None,xx)))
jishu=sorted(list(filter(lambda x:x if x%2==1 else None,xx)),reverse=True)
zonghe=jishu+oushu if len(oushu)>len(jishu):
        zonghe=oushu+jishu
print(zonghe)
编辑于 2023-11-24 22:28:42 回复(0)
#include"stdio.h"
int main()
{
    int a[50],s[50],b[50],i,m=0,n=0;/*m表示偶数个数,n表示奇数个数,s[50]表示存放偶数的数组,b[50]表示存放奇数的数组*/
    int j,t;
    printf("please input:\n");
    for(i=0;i<50;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<50;i++)
    {
        if(i%2==0)
        {
            s[m]=a[i];
            m++;
        }
        else
        {
            b[n]=b[i];
            n++;
        }
    }
    //对偶数按照升序排列//
    for(i=0;i<m-1;i++)
    {
        for(j=0;j<m-1-i;j++)
        {
            if(s[j]>s[j+1])
            {
                t=s[j];
                s[j]=s[j+1];
                s[j+1]=t;
            }
        }
    }
    //对奇数按照降序排列//
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(b[j]<b[j+1])
            {
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            }
        }
    }
    if(m>n)
    {
        for(i=0;i<m;i++)
        {
            printf("%4d",s[i]);
        }
        for(i=0;i<n;i++)
        {
            printf("%4d",b[i]);
        }

    }
    else if(m<=n)
    {
        for(i=0;i<n;i++)
        {
            printf("%4d",b[i]);
        }
            for(i=0;i<m;i++)
        {
            printf("%4d",s[i]);
        }
    }
    return 0;
}
    

发表于 2021-01-29 14:54:08 回复(0)