C 用户自定义函数问题

C User-defined function issue

所以我的程序要求输入姓名和号码,然后计算偶数条目和奇数条目的数量,然后给出所有偶数条目的总数和所有奇数条目的总数。

除了计算之外,一切正常,它告诉我我有所有奇数条目,并且在将它们相加时只将它们赋值为 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;

    }
};

}
scanf("%d", &number);
if (input%2 == 1) {
{
    oddcount++;
    oddtotal += input;
}

我想你可能想要 number % 2 而不是 input % 2, oddtotal += number 而不是 oddtotal += input,等等

在您的 calc 函数中,您混淆了作为参数的 input 和作为全局参数的 number

在此处为输入变量使用全局变量是错误的形式,实际上您不需要向该函数传递任何内容。

此外,最好使用 do..while 而不是 while,因为循环必须 运行 至少一次:

您还在函数声明之前使用它,因此您应该有一个函数原型。由于 calc 不需要 return 任何东西,因此将其 return 类型设置为 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);
}