我试着按照这个规范写:
- 我有一个从用户那里读取的数组
- 开头必须是奇数
- 偶数必须在数组的末尾
- 单双数升序
这是我的代码:
更新代码
#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/