显示给定数字是偶数还是奇数的程序

时间:2013-11-24 13:47:27

标签: c arrays for-loop numbers printf

我编写了这个简单的代码,给出了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;
}

6 个答案:

答案 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++)

除了这两个问题之外,代码工作正常。我已经检查过了。输出是完美的。