一个函数 returns 每次执行都有不同的值
A function returns different values in every execution
我是编码新手,遇到逻辑错误。目标是创建一个函数来测试数字是否可以从 2 到 10 整除。但是,正如我测试的那样,userInput 变量 returns 是正确的值,但是函数的值在每次执行时都会改变。这是代码:
#include <stdio.h>
int testDivisible(int a) {
int checker; // checker is intended for counting divisible numbers between 2-10; if returned > 0, then not divisible
for (int i=2; i<=10; i++) {
if (a % i == 0) {
checker = checker + 1;
}
}
return checker;
}
int main() {
int userInput;
printf("Enter number: ");
scanf("%d", &userInput);
int x = testDivisible(userInput);
if (x > 0) {
printf("Is divisible by 1 to 10\n");
}
else {
printf("Is not divisible by 1 to 10\n");
}
printf("%d\n", userInput); // intended for testing
printf("%d", x); // intended for testing
}
但是,当我编译 运行 代码时,结果是:
执行 1:
Enter number: 17
Is divisible by 1 to 10
17
847434400
执行 2:
Enter number: 17
Is not divisible by 1 to 10
17
-1002102112
在您的代码中,
int checker;
是一个自动局部变量,没有显式初始化。所以,它包含的初始值在indeterminate.
您必须将值初始化为 0
。
typedef int BOOL;
#define FALSE 0
#define TRUE 1
BOOL testDivisible(int a)
{
for (int i=2; i<=10; i++)
if (a % i)
return FALSE;
return TRUE;
}
这样使用:
printf("Is %sdivisible by 2 to 10\n",
(TRUE==testDivisible(userInput))? "":"not " );
我是编码新手,遇到逻辑错误。目标是创建一个函数来测试数字是否可以从 2 到 10 整除。但是,正如我测试的那样,userInput 变量 returns 是正确的值,但是函数的值在每次执行时都会改变。这是代码:
#include <stdio.h>
int testDivisible(int a) {
int checker; // checker is intended for counting divisible numbers between 2-10; if returned > 0, then not divisible
for (int i=2; i<=10; i++) {
if (a % i == 0) {
checker = checker + 1;
}
}
return checker;
}
int main() {
int userInput;
printf("Enter number: ");
scanf("%d", &userInput);
int x = testDivisible(userInput);
if (x > 0) {
printf("Is divisible by 1 to 10\n");
}
else {
printf("Is not divisible by 1 to 10\n");
}
printf("%d\n", userInput); // intended for testing
printf("%d", x); // intended for testing
}
但是,当我编译 运行 代码时,结果是:
执行 1:
Enter number: 17
Is divisible by 1 to 10
17
847434400
执行 2:
Enter number: 17
Is not divisible by 1 to 10
17
-1002102112
在您的代码中,
int checker;
是一个自动局部变量,没有显式初始化。所以,它包含的初始值在indeterminate.
您必须将值初始化为 0
。
typedef int BOOL;
#define FALSE 0
#define TRUE 1
BOOL testDivisible(int a)
{
for (int i=2; i<=10; i++)
if (a % i)
return FALSE;
return TRUE;
}
这样使用:
printf("Is %sdivisible by 2 to 10\n",
(TRUE==testDivisible(userInput))? "":"not " );