如何使用 for 循环使用指数
Posted
技术标签:
【中文标题】如何使用 for 循环使用指数【英文标题】:How to use exponents using a for loop 【发布时间】:2015-03-06 19:46:08 【问题描述】:我正在为我的编程课编写一个函数 HW,并且我正在尝试编写一个函数来允许我进行指数数学运算(以简单的形式)。 (哦,我不能使用实际的指数函数,我必须使用 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);
【问题讨论】:
【参考方案1】:那么,您对循环和结果使用相同的变量。你不想那样做。
int j = 1;
for(i = 0; i < pow; i++)
j*= base;
是你想要的。你在循环计数上也差了一个。随着 i
i=0, j * 5 = 5, i=1
i=1, j * 5 = 25,i=2
i=2, j * 5 = 125,i=3。这是你想停止的地方,但是 3
i=3, j *5 = 625,i=4。 4 不是
【讨论】:
【参考方案2】:循环显然是错误的:
for (i=0; i<=pow; i++)
i *= base;
printf("%d\n", i);
出于某种原因,您将循环计数器乘以基数,这不会产生任何好处。 正确的应该是:
int result = 1;
for (i=0; i < pow; i++)
result *= base;
【讨论】:
【参考方案3】:您需要一个从 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);
【讨论】:
循环中有一个额外的迭代。以上是关于如何使用 for 循环使用指数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 for 循环创建 UIImageView 动态网格?