mo_on 发表于 2023-5-9 19:15:39

为什么不对啊

【问题描述】

输入元素个数及数组中的各元素,将其中奇数的值放到数组前面,将偶数放到数组后面。

说明:请只提供需要补全的代码部分,不需要提供完整程序。可根据需要定义其他变量。

【输入形式】
【输出形式】
【样例输入】

7

6 5 8 7 3 2 1

【样例输出】

5 7 3 1 6 8 2



#include<stdio.h>
intmain()
{
int a, n, i, j, temp;
    scanf("%d",&n);
    for(i=0;i<n;i++)
      scanf("%d",&a);

    for(i=0,j=n-1;i<j;)
      {
      if(a%2==0&&a%2==1)
      {
            temp=a;
            a=a;
            a=temp;
            i++;
            j--;
      } else if(a%2==1&&a%2==1)
      {
            i++;
      } else if(a%2==0&&a%2==0)
      {
            j--;
      } else
      {
            i++;
      }
    }

for(i=0;i<n;i++)
      printf("%d",a);
return0;
}
感觉没有问题啊

sfqxx 发表于 2023-5-9 19:19:37

这对的吧{:10_277:}

isdkz 发表于 2023-5-9 19:19:46

这个代码是将奇数和偶数分开,但并未保证奇数和偶数在数组中的相对顺序与原始顺序相同。所以这个代码不能得到题目中给出的样例输出。如果希望保留原始顺序,可以使用类似插入排序的方法来处理。以下是修正后的代码:

#include <stdio.h>
int main()
{
    int a, n, i, j, temp;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
      scanf("%d", &a);

    for (i = 0; i < n; i++) {
      if (a % 2 == 1) {
            temp = a;
            j = i - 1;
            while (j >= 0 && a % 2 == 0) {
                a = a;
                j--;
            }
            a = temp;
      }
    }

    for (i = 0; i < n; i++)
      printf("%d", a);
    return 0;
}


这个修正后的代码将保持奇数和偶数在数组中的相对顺序与原始顺序相同。

歌者文明清理员 发表于 2023-5-9 19:20:19

sfqxx 发表于 2023-5-9 19:19
这对的吧

等下,他是怎么发[
i
]的

sfqxx 发表于 2023-5-9 19:45:19

歌者文明清理员 发表于 2023-5-9 19:20
等下,他是怎么发[
i
]的

新鱼油没法用这种

歌者文明清理员 发表于 2023-5-9 19:50:01

sfqxx 发表于 2023-5-9 19:45
新鱼油没法用这种

哦,我知道了
]

sfqxx 发表于 2023-5-9 19:50:22

歌者文明清理员 发表于 2023-5-9 19:50
哦,我知道了
]

]

歌者文明清理员 发表于 2023-5-9 19:51:08

sfqxx 发表于 2023-5-9 19:50
]

sfqxx 发表于 2023-5-9 19:52:09

歌者文明清理员 发表于 2023-5-9 19:51


{:10_257:}{:10_257:}

歌者文明清理员 发表于 2023-5-9 19:54:02

sfqxx 发表于 2023-5-9 19:52


F12

sfqxx 发表于 2023-5-9 19:54:40

歌者文明清理员 发表于 2023-5-9 19:54
F12

歌者文明清理员 发表于 2023-5-9 19:55:17

sfqxx 发表于 2023-5-9 19:54


右键检查
页: [1]
查看完整版本: 为什么不对啊