gpt4 book ai didi

c - 使用数组在C上打印偶数和奇数时输出巨大的数字

转载 作者:行者123 更新时间:2023-12-04 04:08:34 26 4
gpt4 key购买 nike

我被要求编写一个程序,要求输入一个整数“n”,然后扫描“n”个整数,然后按升序对偶数进行排序并打印这些整数,然后对奇数进行降序。

所以我首先在数组的第一列中包含偶数,然后在第二列中包含奇数,然后打印它们,但最后我得到的只是巨大的相似数字,而不是我最初输入的值。

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

int main()
{
int array1_size, unfill;
printf("How many integers do you wish to enter?\n");
scanf("%d",&array1_size);
int array1[array1_size][2];

for (int i = 0; i < array1_size; ++i)
{
printf("Enter integer number %d\n", i+1);
scanf("%d",&array1[i][0]);
}

for (int i = 0; i < array1_size; ++i)
{
if ( (array1[i][0] % 2) != 0 )
{
array1[i][1] = array1[i][0];
array1[i][0] = unfill;
}
}

printf("Your even numbers are:\n");
for (int i = 0; i < array1_size; ++i)
{
printf("%d\n", array1[array1_size][0]);
}

printf("...and your odd numbers are:\n");
for (int i = 0; i < array1_size; ++i)
{
printf("%d\n", array1[array1_size][1]);
}

return(0);
}

最佳答案

你声明

int array1[array1_size][2];

其中索引最高的合法可访问元素是

array1[array1_size-1][2-1]

这条线因此非常可疑

printf("%d\n", array1[array1_size][1]);

此外,您不初始化 unfill 而是将其内容复制到此处的其他位置

array1[i][0] = unfill

您可以保留任何未初始化的array1[i][0] 的内容,因为您的代码容易受到失败的scanf() 的影响,因为在这里您忽略了通常非常有用的返回值,它可以在扫描出现任何问题时警告您。

scanf("%d",&array1[i][0])

这些问题中的任何一个都可以解释您观察到的巨大数字,这有时是使用未初始化变量或非法访问内存内容的症状。

关于c - 使用数组在C上打印偶数和奇数时输出巨大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62133988/

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