如何使用 for 循环使用指数
How to use exponents using a for loop
我正在为我的编程开发函数 HW class,我正在尝试编写一个允许我进行指数数学运算(以简单形式)的函数。 (哦,我不能使用实际的指数函数,我必须使用 for 循环、if 语句或类似的东西编写自己的函数。)
EX:用户输入基地,然后输入提升它的权力。所以用户输入:
5个
3个
它应该是 5 的 3 次方,所以它应该输出 125 (5x5x5)。但是我的 for 循环无法正常工作。我应该如何构造我的 for 循环以正确处理指数数学?
代码:
int main(){
int base, pow;
scanf("%d", &base);
scanf("%d", &pow);
int i;
for (i=0; i<=pow; i++) {
i *= base;
printf("%d\n", i);
}
printf("%d", i);
好吧,您正在为循环和结果使用相同的变量。你不想那样做。
int j = 1;
for(i = 0; i < pow; i++)
{
j*= base;
}
就是你想要的。您的循环计数也差了一个。使用 i <= pow 你有
i=0,j*5=5,i=1
i=1,j*5=25,i=2
i=2,j * 5 = 125,i=3。这是你想停下来的地方,但 3 <= 3 所以它又走了。
i=3,j*5=625,i=4。 4 不是 <= 3 所以它会停在这里。
循环明显错误:
for (i=0; i<=pow; i++) {
i *= base;
printf("%d\n", i);
}
您出于某种原因将循环计数器乘以基数,这不会产生任何好处。
正确的是:
int result = 1;
for (i=0; i < pow; i++) {
result *= base;
}
您想要一个从 1 开始并且每次都乘以基数的累加器。这个累加器也不应该是 i(因为它会在 for 循环的每一步发生变化)。
尝试
int base, pow;
scanf("%d", &base);
scanf("%d", &pow);
int i, accumulator;
accumulator = 1
for (i=0; i<pow; i++) {
accumulator *= base;
printf("%d\n", accumulator);
}
printf("%d", accumulator);
我正在为我的编程开发函数 HW class,我正在尝试编写一个允许我进行指数数学运算(以简单形式)的函数。 (哦,我不能使用实际的指数函数,我必须使用 for 循环、if 语句或类似的东西编写自己的函数。) EX:用户输入基地,然后输入提升它的权力。所以用户输入: 5个 3个 它应该是 5 的 3 次方,所以它应该输出 125 (5x5x5)。但是我的 for 循环无法正常工作。我应该如何构造我的 for 循环以正确处理指数数学? 代码: int main(){
int base, pow;
scanf("%d", &base);
scanf("%d", &pow);
int i;
for (i=0; i<=pow; i++) {
i *= base;
printf("%d\n", i);
}
printf("%d", i);
好吧,您正在为循环和结果使用相同的变量。你不想那样做。
int j = 1;
for(i = 0; i < pow; i++)
{
j*= base;
}
就是你想要的。您的循环计数也差了一个。使用 i <= pow 你有
i=0,j*5=5,i=1
i=1,j*5=25,i=2
i=2,j * 5 = 125,i=3。这是你想停下来的地方,但 3 <= 3 所以它又走了。
i=3,j*5=625,i=4。 4 不是 <= 3 所以它会停在这里。
循环明显错误:
for (i=0; i<=pow; i++) {
i *= base;
printf("%d\n", i);
}
您出于某种原因将循环计数器乘以基数,这不会产生任何好处。 正确的是:
int result = 1;
for (i=0; i < pow; i++) {
result *= base;
}
您想要一个从 1 开始并且每次都乘以基数的累加器。这个累加器也不应该是 i(因为它会在 for 循环的每一步发生变化)。
尝试
int base, pow;
scanf("%d", &base);
scanf("%d", &pow);
int i, accumulator;
accumulator = 1
for (i=0; i<pow; i++) {
accumulator *= base;
printf("%d\n", accumulator);
}
printf("%d", accumulator);