_Phoebe__ 2021-12-21 00:26 采纳率: 96.9%
浏览 49
已结题

调用函数实现奇数偶数分别排序 错误比较多 想知道对我的代码怎么改(希望最大程度保留我的代码

输入若干个自然数,对奇数从大到小排序对偶数从小到大排序,输出两种结果。

#include<stdio.h>
#include<math.h>
int Judge(int n){ //判断奇数偶数 
        if(n%2==0){
        return 0;
    }
    return 1;
}
int sort(int a[]){//对奇数和偶数分别冒泡排序 
    int i,j,m,n;
    int a[99],b[99];
    int count,count1;
    if(Judge==1){//这里想用Judge函数把输入的数字区分开 但是这样写不对呜呜 
        count++;
        for(i=0;i<count;i++){
            scanf("%d",&a[i]);//想把奇数存在数组里然后排序 
        }
        for(i=0;i<count-1;i++){ 
            for(j=0;j<count-i-1;j++){
                if(a[j]<a[j+1]){
                    int temp;
                    temp=a[j];
                    a[j]=a[j+1];
                a[j+1]=temp;
                    
                    
                }
    }
        for(i=0;i<count;i++){
    printf("%d",a[i]);
}
}
    if(Judge==0){
        count1++;
        for(m=0;m<count1;m++){
            scanf("%d",&b[m]);//想把偶数存入数组里然后排序 
        }
        for(m=0;m<count1-1;m++){
            for(n=0;n<count1-i-1;n++){
                if(b[n]>b[n+1]){
                    int temp;
                    temp=b[n];
                    b[n]=b[n+1];
                    b[n+1]=temp;
                }
    }
    for(m=0;m<count;m++){
    printf("%d",m[i]);
}
}
int main(){
    int x;
    printf("请输入数据个数");
    scanf("%d",&x);
    printf("请输入一串数");
    for(int i=0;i<x;i++){
    scanf("%d",&a[i]);
}
Judge(a[]);//这里想调用但不知道怎么用上面那两个函数 
sort(a[]);
return 0;
}


  • 写回答

3条回答 默认 最新

  • 关注

    对你的代码修改如下

    #include <stdio.h>
    #include <math.h>
    int Judge(int n)
    { //判断奇数偶数
        if (n % 2 == 0)
        {
            return 0;
        }
        return 1;
    }
    int sort(int a[], int x)
    { //对奇数和偶数分别冒泡排序
        int i, j, m, n;
        int b[99], c[99];
        int count = 0, count1 = 0;
        for (i = 0; i < x; i++)
            if (Judge(a[i]))
                b[count++] = a[i];
            else
                c[count1++] = a[i];
        for (i = 0; i < count - 1; i++)
        {
            for (j = 0; j < count - i - 1; j++)
            {
                if (b[j] < b[j + 1])
                {
                    int temp;
                    temp = b[j];
                    b[j] = b[j + 1];
                    b[j + 1] = temp;
                }
            }
        }
        for (i = 0; i < count; i++)
        {
            printf("%d ", b[i]);
        }
        for (i = 0; i < count1 - 1; i++)
        {
            for (j = 0; j < count1 - i - 1; j++)
            {
                if (c[j] > c[j + 1])
                {
                    int temp;
                    temp = c[j];
                    c[j] = c[j + 1];
                    c[j + 1] = temp;
                }
            }
        }
        for (i = 0; i < count1; i++)
        {
            printf("%d ", c[i]);
        }
    }
    int main()
    {
        int x;
        int a[100];
        printf("请输入数据个数");
        scanf("%d", &x);
        printf("请输入一串数");
        for (int i = 0; i < x; i++)
        {
            scanf("%d", &a[i]);
        }
        sort(a, x);
        return 0;
    }
     
    

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月21日