所以我的程序要求输入名称和数字,然后计算偶数条目和奇数条目的数量,然后总计所有偶数条目和所有奇数的总和。
除了计算之外它一切正常,它告诉我我有所有奇数条目,并且在添加它们时只将它们标记为1。
我觉得它与我的变量和我的calc函数中的引用有关
#include <stdio.h>
int number = 1;
int evencount, oddcount;
int eventotal, oddtotal;
int main () {
char name[256];
printf("Enter your name \n");
scanf("%s", name);
printf("Enter numbers within 1-100 \n");
printf("Enter 0 to quit\n");
calc(number);
printf("%s,the numbers you have entered are broken down as follows: \n", name);
printf("%d odd entries \n", oddcount);
printf("%d even entries\n", evencount);
printf("You entered even numbers with a total value of %d \n", eventotal );
printf("You entered odd numbers with a total value of %d \n", oddtotal);
return 0;
}
int calc (int input) {
while (number != 0) {
scanf("%d", &number);
if (input%2 == 1) {
oddcount++;
oddtotal += input;
}
else {
evencount++;
eventotal += input;
}
};
}
答案 0 :(得分:3)
scanf("%d", &number);
if (input%2 == 1) {
{
oddcount++;
oddtotal += input;
}
我想你可能想要number % 2
而不是input % 2
,
oddtotal += number
而不是oddtotal += input
等。
答案 1 :(得分:1)
在calc
函数中,您混合了input
这是一个参数,number
是一个全局的。
在这里使用全局输入变量是不好的形式,实际上你不需要将任何东西传递给这个函数。
此外,最好使用do..while
代替while
,因为循环必须至少运行一次:
你在声明它之前也使用了这个函数,所以你应该有一个函数原型。由于calc
不需要返回任何内容,因此请将其返回类型设置为void
。
#include <stdio.h>
int evencount, oddcount;
int eventotal, oddtotal;
void calc();
int main()
{
...
calc();
...
}
void calc()
{
int number;
do {
scanf("%d", &number);
if (number%2 == 1) {
oddcount++;
oddtotal += number;
} else {
evencount++;
eventotal += number;
}
} while (number != 0);
}