我编写了这个简单的代码,给出了5个整数的输入,如果它们是偶数或奇数(我必须使用两个数组)。但无论我写什么数字,输出总是“5奇数”。我哪里错了?
#include <stdio.h>
int main(){
int numbers[5];
int even_odd[5];
printf("%s\n", "Insert 5 numbers.");
int i;
for(i=0; i<=4; i++){
scanf("%d", &numbers[i]);
even_odd[i] = numbers[i] % 2;
}
for(i=0; i<=4; i++);{
if (even_odd[i] == 0){
printf("%d%s\n", numbers[i], " even.");
}else{
printf("%d%s\n", numbers[i], " odd.");
}
}
return 0;
}
答案 0 :(得分:3)
for(i = 0; i&lt; = 4; i ++); {
这是一个不应该在那里的分号
for(i = 0; i&lt; = 4; i ++){
这样
答案 1 :(得分:3)
尝试删除分号
for(i=0; i<=4; i++){
所以你的代码将是这样的:
for(i=0; i<=4; i++){ //Remove the semicolon here
if (even_odd[i] == 0){
printf("%d%s\n", numbers[i], " even.");
}else{
printf("%d%s\n", numbers[i], " odd.");
}
}
答案 2 :(得分:2)
for(i=0; i<=4; i++);{
这就是你的问题所在
您在for
循环语句后面有一个分号。
这转换为一个只增加i
几次的循环
然后你运行这段代码:
{
if (even_odd[i] == 0) {
printf("%d%s\n", numbers[i], " even.");
} else {
printf("%d%s\n", numbers[i], " odd.");
}
}
答案 3 :(得分:2)
for(i=0; i<=4; i++);-------> Your for loop never does what it should.
{
if (even_odd[i] == 0) {
printf("%d%s\n", numbers[i], " even.");
} else {
printf("%d%s\n", numbers[i], " odd.");
}
}
对于循环运行5次,最后运行i=5
,因此其even_odd[5]
被检查为零。
幸运的是你没有崩溃。 C不会检查数组边界,因此您可以运行程序。
答案 4 :(得分:1)
问题是额外的;在结束之间)和开幕式{在
for(i=0; i<=4; i++);{
删除它,它会正常工作。
原因:声明
for(i=0; i<=4; i++);
只运行循环,不执行跟随它的代码块。
之后,{和}之间的代码块被执行,但是i == 5并且输出将是未定义的。
答案 5 :(得分:0)
一个基本问题是这一行 -
int i;
变量应该在printf
语句之后声明。如果你在它之前声明它,它会更好。 scanf
应始终是printf
之后涉及输入的下一个语句。
然后你在for循环声明之后放了一个分号。它应该是这样的 -
for(i=0;i<=4;i++)
除了这两个问题之外,代码工作正常。我已经检查过了。输出是完美的。