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);
}
所以我的程序要求输入姓名和号码,然后计算偶数条目和奇数条目的数量,然后给出所有偶数条目的总数和所有奇数条目的总数。
除了计算之外,一切正常,它告诉我我有所有奇数条目,并且在将它们相加时只将它们赋值为 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);
}