我正在尝试编写一个程序,它将取两个数字并根据它们的值,返回两者都是奇数,两者都是偶数,或者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?
非常感谢你们的帮助。如果我可以解决这个问题,希望我能为自己弄清楚其余部分。
答案 0 :(得分:7)
您的scanf
格式希望数字用逗号分隔,
scanf("%d, %d", &numA, &numB);
但是您的输入不是,所以只有第一个数字被scanf
转换而第二个数字未被初始化。
您应该始终检查scanf
和朋友的返回值,以验证是否进行了正确的转化次数。