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

在我的大学,我被要求创建一个程序,要求用户输入两个输入。 一个是基础,另一个是数字的力量。 我不允许使用math.h只循环。

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

 #include  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中执行此操作的行为未定义 。)

但是让我们重新修改答案。 首先要做的是将实际功率函数与所有输入和输出分开。 关于这个function,我会把我最喜欢的方式放到答案池中,理解是你会仔细研究并理解它。

您可以通过平方使用称为指数的技术来解决此问题:

 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中有充分说明

计算功率的循环看起来像这样

 int product = 1; for(int multiplicationCounter = 1;multiplicationCounter <= power; multiplicationCounter ++) { product *= base; } printf("Result is %d", product); 

您可以将其集成到代码中,也可以更改输出。 这应该取代你的整个第二个for循环。

假设基数和幂都是正整数,

然后

 int Result =1; for (int i=0; i<=power;i++) { if(power==0) Result=1; Result =Result*base; } 

这应该工作

 #include  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; int result=1: for(number=1; number <= power;number += 1) { result=result*base } printf("The result is %d", result); return 0; 

}