C用户定义的函数问题

时间:2016-02-19 19:38:49

标签: c function defined

所以我的程序要求输入名称和数字,然后计算偶数条目和奇数条目的数量,然后总计所有偶数条目和所有奇数的总和。

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

    }
};

}

2 个答案:

答案 0 :(得分:3)

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

我想你可能想要number % 2而不是input % 2oddtotal += 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);
}