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

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

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


对你的代码修改如下

#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

你代码的逻辑有问题。
应该先读取所有数。
然后用一个for循环对这个数列进行筛选。分别分为偶数列 和 奇数列
然后对偶数列和奇数列排序。


#include<stdio.h>
#include<math.h>
#include <algorithm> 
using namespace std;
#pragma warning(disable:4996)
int main() {
    int arrs[1000];
    int odds[1000];
    int odd_length = 0;
    int evens[1000];
    int even_length = 0;
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arrs[i]);
        if (arrs[i] % 2 == 1) {
            odds[odd_length++] = arrs[i];
        }
        else {
            evens[even_length++] = arrs[i];
        }
    }
    for (int i = 0; i < odd_length; i++) {
        for (int j = i+1; j < odd_length; j++) {
            if (odds[i] < odds[j]) {
                swap(odds[i], odds[j]);
            }
        }
    }
    for (int i = 0; i < even_length; i++) {
        for (int j = i + 1; j < even_length; j++) {
            if (evens[i] < evens[j]) {
                swap(evens[i], evens[j]);
            }
        }
    }
    for (int i = 0; i < odd_length; i++) {
        printf("%d ", odds[i]);
    }
    for (int i = 0; i < even_length; i++) {
        printf("%d ", evens[i]);
    }
}

img

从小到大。就是把双for循环的排序函数。判断要交替的地方。把小于号改成大于号。

#include<stdio.h>
#include<math.h>
int Judge(int n)
{   //判断奇数偶数
    if(n%2==0)
    {
        return 0;
    }
    else
    {
        return 1;
    }

}
int sort(int a[],int n2)
{   //对奇数和偶数分别冒泡排序
    int j,k,m=0,n=0;
    int c1[n2],c2[n2];
    int count,count1;
    for(j=0; j<n2; j++)
    {
        if(Judge(a[j])!=0)
        {
            c1[m]=a[j];
            m++;
        }
        else
        {
            c2[n]=a[j];
            n++;
        }
    }

    for(k=0; k<m; k++)
    {
        for(j=0; j<m-k-1; j++)
        {
            if(c1[j]<c1[j+1])
            {
                int temp;
                temp=c1[j];
                c1[j]=c1[j+1];
                c1[j+1]=temp;

            }
        }

    }
    for(k=0; k<m; k++)
    {
        printf("%d",c1[k]);
    }
    printf("\n");
    for(k=0; k<n; k++)
    {
        for(j=0; j<n-k-1; j++)
        {
            if(c2[j]>c2[j+1])
            {
                int temp;
                temp=c2[j];
                c2[j]=c2[j+1];
                c2[j+1]=temp;
            }
        }
    }
    for(k=0; k<n; k++)
    {
        printf("%d",c2[k]);
    }
    printf("\n");

}
int main()
{
    int x;
    printf("请输入数据个数");
    scanf("%d",&x);
    printf("请输入一串数");
    int k;
    int a[x];
    for(k=0; k<x; k++)
    {
        scanf("%d",&a[k]);
    }
    //Judge(a[]);//这里想调用但不知道怎么用上面那两个函数
    sort(a,x);
    return 0;
}