addendum777 发表于 2022-5-17 17:18:15

想将十个整数按升序排列且奇数在前,偶数在后,求找错误

#include <stdio.h>
int main()
{
        int a,i,n,t,j;
        int odd=0;
        int even=9;
       
        printf("input 10 nums:");
        for(i=0;i<10;i++)
        {
                scanf("%d",&n);
                if(n%2==0)
                {
                        a=n;
                        even--;
                }
                if(n%2!=0)
                {
                        a=n;
                        odd++;
                }
               
        }//
        for(i=0;i<odd-1;i++)
        {
                n=i;
                for(j=i+1;j<odd;j++)
                {if(a<a)
                n=j;
                if(n!=i)
                {
                t=a;
                a=a;
                a=t;}
                }
               
        }
        for(i=even;i>odd+1;i--)
        {
                n=i;
                for(j=even-1;j>odd;j--)
                if(a<a)
                n=j;
                if(n!=i)
                {
                        t=a;
                        a=a;
                        a=t;
                }
        }
       
        for(i=0;i<10;i++)
        {
                printf ("%d\t",a);
        }
       
       
       
       
       
       
       
       
        return 0;
}想将十个整数按升序排列且奇数在前,偶数在后

Twilight6 发表于 2022-5-17 17:20:52



这是和刚才帖子一个代码吧?

addendum777 发表于 2022-5-17 17:41:42

Twilight6 发表于 2022-5-17 17:20
这是和刚才帖子一个代码吧?

是的,但是后面还有一些问题,可以帮忙看看吗

addendum777 发表于 2022-5-17 17:42:12

Twilight6 发表于 2022-5-17 17:20
这是和刚才帖子一个代码吧?

后面偶数升序也有问题

Twilight6 发表于 2022-5-17 18:10:41

addendum777 发表于 2022-5-17 17:42
后面偶数升序也有问题


我改了改,试试看行不行:

#include <stdio.h>
int main()
{
    int a, i, n, t, j;
    int odd = 0;
    int even = 9;

    printf("input 10 nums:");
    for (i = 0; i < 10; i++)
    {
      scanf("%d", &n);
      if (n % 2 == 0)
      {
            a = n;
            even--;
      }
      if (n % 2 != 0)
      {
            a = n;
            odd++;
      }
      
    }
   
    for (i = 0; i < odd; i++) {
      for (j = odd - 1; j > i; j--) {
            if (a > a) {
                t = a;
                a = a;
                a = t;
            }
      }
    }

    for (i = even + 1; i < 10; i++) {
      for (j = 10 - 1; j > i; j--) {
            if (a > a) {
                t = a;
                a = a;
                a = t;
            }
      }
    }

    for (i = 0; i < 10; i++)
    {
      printf("%d\t", a);
    }
}
页: [1]
查看完整版本: 想将十个整数按升序排列且奇数在前,偶数在后,求找错误