gpt4 book ai didi

c - 使用开关盒的奇数和偶数

转载 作者:行者123 更新时间:2023-12-03 08:10:54 25 4
gpt4 key购买 nike

我想打印值及其类型

输入:

1
3
5
78
10


输出:

Odd 1
Odd 3
Odd 5
Even 78
Odd 11


#include <stdio.h>

int main()
{
int a[4],b,c;


for(b=0 ; b<=4 ; b++)
{
scanf("%d",&a[b]);
}
for (c=0 ; c<=4 ; c++)
{
switch (a[c]%2)
{
case 0 :
printf ("Even %d\n",a[c]);
break;
case 1 :
printf ("Odd %d\n",a[c]);
break;

}
}

return 0;
}


为什么最后一个输出是 Odd 11而不是 Even 10

最佳答案

您只需要将a[4]的声明更改为a[5]即可获得正确的程序。迭代的边界是正确的。

运行代码时,发生的情况是,第四个输入值进入数组a[4],第五个输入值进入变量b,在您的情况下该变量直接分配在数组后面。这是一个编程错误,并且会导致不可预测的结果,具体取决于编译器分配内存的方式。

在您的情况下,我们可以得出结论,变量b存储在数组a[4]的后面,并且在将第五个元素存储到您认为的数组中之后增加一次。发生这种情况的地方是for循环的b++语句。

我无法重现此行为,因为我的编译器可能没有在b之后立即分配a[4]

关于c - 使用开关盒的奇数和偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864843/

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