【问题标题】:Taking power with loop(with-out pow() function) [closed]通过循环获取电源(没有 pow()函数)[关闭]
【发布时间】:2018-11-23 21:41:06
【问题描述】:

我正在尝试整数的幂。例如,如果我的整数是 2 前 10 次幂是 2^1,2^2...2^10。我正在使用

while (expnt < 10)
{
    preExpnt = expnt;
    while (preExpnt)
    {
        preExpnt *= num;
        printf("%lld\n", preExpnt);
    }
    expnt++;

}

但它不起作用。`

【问题讨论】:

  • 内部的while 循环没有任何用处。
  • 我应该使用吗?
  • 您应该删除内部的while 并只保留作为while 正文的两行。
  • 好的,我现在就试试
  • 它可以工作,但它的权力是它的倍增。

标签: c loops integer long-integer exponent


【解决方案1】:

这是实现目标的一种方法。

int num = 2; // for example
int out = 1;
for (int exp = 1; exp <= 10; exp++)
{
    out *= num;
    printf("%d\n", out);
}

关于您的代码的备注:

  • 如果 numexpnt 都不是 0,则您的内部 while 循环是无限的。
  • 在每一步将preExpnt 分配给expnt 的值并乘以num 将显示类似:1*n 2*n 3*n 4*n ... 如果expnt 从1 开始。

【讨论】:

  • 问题是这段代码是 2^2=4 没关系,但它比 4^2=16 和 16^2 还要好。它们不是 2 的幂
  • 什么?,16 不是 2 的幂??,也不是 256?...看,也许 Alamit 的代码在他编辑之前就是这样做的(跳过 8,然后是 32、64 和 128)它,但这些绝对是 2 的幂,我认为每个使用 C 的人都应该非常了解它们,这个数字代表了很多关键的东西,透明地转换为机器字的类型的位长度(BYTE (8) , WORD (16), DWORD (32), QWORD (64)...), 它们可以存储的值的范围 (- 1)。对对齐和填充等非常有帮助,仅举几例。所以不要误会他们的意思,一些 C 狂热者可能想为此对你处以私刑。 <:0>
  • * conspicuously hiding my pitchfork behind my back *
猜你喜欢
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 2013-04-09
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多