gpt4 book ai didi

在没有 math.h 的情况下计算幂和底的结果

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:16 25 4
gpt4 key购买 nike

在我的大学里,我被要求创建一个程序,要求用户提供两个输入。一个是基数,另一个是数的幂。我不允许仅使用 math.h 循环。

到目前为止,这是我的代码:

#include <stdio.h>

int main() {
int base;
printf(" Please enter the base: ");
scanf("%d", &base);

int power;
printf(" Please enter the power: ");
scanf("%d", &power);

printf("\n%d ^ %d is the same as...\n\n", base, power);

printf(" %d", base);

int reps;
int number;
for(reps = base; reps <= power; reps += 1) {
printf("* %d ", base);
}

for(number; number <= power;number += 1) {
int result = base * base;
for (result; number <= power; result = base * result) {
result = result * base;
printf("\n or %d", result);
}
}


return 0;
}

请帮帮我。我很迷茫,想哭 :( 但这并不重要。

最佳答案

(您的主要问题是您正在使用未初始化的变量;在 C 中这样做的行为未定义。)

但让我们修改答案。首先要做的是将实际电源功能与所有输入和输出分开。关于该功能,我会将我最喜欢的方式放入答案池中,前提是您会仔细研究并理解它。

您可以使用一种称为平方求幂的技术来解决这个问题:

int getPower(int base, int power/*must be non-negative*/)
{
int ret = 1;
while (power){
if (power & 1){ /*this means the current value of `power` is odd*/
ret *= base;
}
power >>= 1; /*ToDo - figure this out with your debugger*/
base *= base;
}
return ret;
}

该方法在 https://en.wikipedia.org/wiki/Exponentiation_by_squaring 中有充分的解释。

关于在没有 math.h 的情况下计算幂和底的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36735865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com