为什么变量 b 在 for 循环中不变?
Why variable b don't change in the for-loop?
嗨,我想了解为什么变量 b 没有改变,并且当我打印它时它总是像我定义的那样(零)。我的代码有什么问题??
使用此代码,我想找到最大整数 (b),即 10^b <= n(给定 n 和整数)。
这是我的代码(用c写的):
#include <stdio.h>
#include <math.h>
int lg (int n);
int main() {
int a = 0;
scanf("%d", &a);
printf ("\nN=%d e M=%d\n", a, lg(a));
return 0;
}
int lg (int n) {
double b = 0.0;
for (int i=0; i==n; i++) {
if (pow(10, i) <= n) {
double b = i;
} else {
}
}
return (int)b;
}
您在循环中声明了一个名为 b
的新变量并将其设置为等于 i
。由于这是一个不同的范围,因此它与循环之前声明的 b
不是同一个变量。更改行
double b = i;
到
b = i;
你的循环条件也设置为i==n;
。这意味着如果您的输入为 0,您的循环只会 运行 一次。那可能应该是 i < n;
.
有两个名为 b 的变量。一个范围是函数 lg,另一个范围仅限于 for 循环的 if 子句。您修改后者,但 return 前者。使用关键字 'double' 声明一个新变量。这是一个常见的错误来源,只要打开编译器上的警告就可以提醒您注意这个问题。
您正在声明 "b" 变量 twice.The "b" 初始化为 0.0 的变量在函数 "lg" 内具有作用域。并且 "b" 在 if 条件下声明的范围仅限于该条件。
还要检查 for 循环的第二个参数,即 "i==n"。如果输入值 ("n") 不为零,则此语句始终为真,即“1”。
错误 1:i==n
:如果您在 for 循环中比较 i==n
,该循环只会 运行 一个 time.You 必须将其修复为 i<n
错误 2:您重复了 double 类型。一定不要在for循环中声明变量b,因为那个循环中的变量b会在循环停止时从循环中消失repeating.Thus,for循环中变量b的值不会赋值。
你必须删除for循环中的double
关键字,变量b会改变。
嗨,我想了解为什么变量 b 没有改变,并且当我打印它时它总是像我定义的那样(零)。我的代码有什么问题??
使用此代码,我想找到最大整数 (b),即 10^b <= n(给定 n 和整数)。
这是我的代码(用c写的):
#include <stdio.h>
#include <math.h>
int lg (int n);
int main() {
int a = 0;
scanf("%d", &a);
printf ("\nN=%d e M=%d\n", a, lg(a));
return 0;
}
int lg (int n) {
double b = 0.0;
for (int i=0; i==n; i++) {
if (pow(10, i) <= n) {
double b = i;
} else {
}
}
return (int)b;
}
您在循环中声明了一个名为 b
的新变量并将其设置为等于 i
。由于这是一个不同的范围,因此它与循环之前声明的 b
不是同一个变量。更改行
double b = i;
到
b = i;
你的循环条件也设置为i==n;
。这意味着如果您的输入为 0,您的循环只会 运行 一次。那可能应该是 i < n;
.
有两个名为 b 的变量。一个范围是函数 lg,另一个范围仅限于 for 循环的 if 子句。您修改后者,但 return 前者。使用关键字 'double' 声明一个新变量。这是一个常见的错误来源,只要打开编译器上的警告就可以提醒您注意这个问题。
您正在声明 "b" 变量 twice.The "b" 初始化为 0.0 的变量在函数 "lg" 内具有作用域。并且 "b" 在 if 条件下声明的范围仅限于该条件。 还要检查 for 循环的第二个参数,即 "i==n"。如果输入值 ("n") 不为零,则此语句始终为真,即“1”。
错误 1:i==n
:如果您在 for 循环中比较 i==n
,该循环只会 运行 一个 time.You 必须将其修复为 i<n
错误 2:您重复了 double 类型。一定不要在for循环中声明变量b,因为那个循环中的变量b会在循环停止时从循环中消失repeating.Thus,for循环中变量b的值不会赋值。
你必须删除for循环中的double
关键字,变量b会改变。