gpt4 book ai didi

c - 按照 3 条规则(奇数、偶数、排序)显示输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:12 24 4
gpt4 key购买 nike

我试着按照这个规范写:

  1. 我有一个从用户那里读取的数组
  2. 开头必须是奇数
  3. 偶数必须在数组的末尾
  4. 单双数升序

这是我的代码:

更新代码

#include <stdio.h>
#include <stdlib.h>

int n;
int j;

int main(void){
scanf("%d", &n);
int arr[n], aux[n], count = 0;
for(int i = 0; i < n; i++){
scanf("%d", &arr[i]);
}

for(int i = 0; i < n; i++){
if(arr[i] % 2 != 0){
aux[i] = arr[i];
count = i;
}
else
{
aux[n - j - 1] = arr[i];
j++;
}
}

for(int i = 0; i < count; i++){
if( aux[i] > aux[i+1])
{
aux[i] = aux[i] + aux[i+1];
aux[i+1] = aux[i] - aux[i+1];
aux[i] = aux[i] - aux[i+1];

}
}

for(int i = count; i < n; i++){
if( aux[i] > aux[i+1])
{
aux[i] = aux[i] + aux[i+1];
aux[i+1] = aux[i] - aux[i+1];
aux[i] = aux[i] - aux[i+1];
}
}

for(int i = 0; i < n; i++){
printf("%d ", aux[i]);
}

printf("\n");

return 0;
}

但是,输出是错误的。例如,如果我输入数组 4 的维度,并且数组的元素是 4 3 2 1,则输出是:3 2 1 4196848,但我想成为 1 3 2 4。你能帮助我吗?谢谢!

最佳答案

你有未定义的行为:

int main(){
int n, arr[n], aux[n] = {}, count = 0;
scanf("%d", &n);

您希望将什么用作这些数组的大小?n 在您使用 scanf 读取它之前不会被初始化。

除此之外,您应该为 main 提供一个有效的原型(prototype)。

关于c - 按照 3 条规则(奇数、偶数、排序)显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45920343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com