1

我正在尝试编写一个程序,该程序将采用两个数字并根据它们的值,返回两个都是奇数,两个都是偶数,或者 A 是奇数,B 是偶数,等等。

我设法让程序检查一个变量,但如果我添加第二个变量,我会得到一个我没想到的输出,而且我似乎无法安排代码以提供正确的输出。我猜这是 if/else 语句的排列有问题。

#include <stdio.h>

int main()
{
    int numA, numB;
    printf("Please enter variables:");
    scanf("%d, %d", &numA, &numB);
    if (numA % 2) {
        printf("Variable A:%d is odd \n",numA);
    }
else{
    printf("Variable A:%d is even \n", numA);
}
if (numB % 2) {
    printf("Variable B:%d is odd \n",numB);
}
else{
    printf("Variable B:%d is even \n", numB);
}
return 0;
}

我得到的输出如下

Please enter variables:4 5
Variable A:4 is even 
Variable B:32767 is odd 

为什么变量 B:32767 不是 5?

非常感谢您一如既往的帮助。如果我能解决这个问题,希望我能自己解决剩下的问题。

4

1 回答 1

7

您的scanf格式要求数字用逗号分隔,

scanf("%d, %d", &numA, &numB);

但是您的输入不是,因此只有第一个数字被转换,scanf第二个数字未初始化。

您应该始终检查和朋友的返回值,scanf以验证是否进行了正确的转换次数。

于 2012-11-13T13:27:05.843 回答