我正在为我的编程类开发函数HW,我正在尝试编写一个允许我进行指数数学运算的函数(以简单的形式)。 (哦,我不能使用实际的指数函数,我必须使用for循环,if语句或其他类似的东西编写我自己的函数。) EX:用户输入基数,然后输入电源进行提升。所以用户输入: 五 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);
答案 0 :(得分:0)
嗯,你正在为循环和结果使用相同的变量。你不想这样做。
int j = 1;
for(i = 0; i < pow; i++)
{
j*= base;
}
是你想要的。在循环计数上你也是一个人。用i&lt; = pow你有
i = 0,j * 5 = 5,i = 1
i = 1,j * 5 = 25,i = 2
i = 2,j * 5 = 125,i = 3。这是你要停止的地方,但是3&lt; = 3,所以它再次出现。
i = 3,j * 5 = 625,i = 4。 4不是&lt; = 3所以它将在此停止。
答案 1 :(得分:0)
循环显然是错误的:
for (i=0; i<=pow; i++) {
i *= base;
printf("%d\n", i);
}
由于某种原因,你将循环计数器乘以基数,这不会产生任何好处。 正确的是:
int result = 1;
for (i=0; i < pow; i++) {
result *= base;
}
答案 2 :(得分:0)
你想要一个从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);