在我的大学,我被要求创建一个程序,要求用户输入两个输入。一个是基础,另一个是数字的力量。我不允许仅使用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;
}
请帮帮我。我迷失了,我想哭:(不重要。
答案 0 :(得分:4)
(您的主要问题是您使用的是未初始化的变量;在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
中得到了充分说明答案 1 :(得分:0)
计算功率的循环如下所示
int product = 1;
for(int multiplicationCounter = 1;multiplicationCounter <= power; multiplicationCounter ++) {
product *= base;
}
printf("Result is %d", product);
您可以将其集成到您的代码中,也许可以更改输出。 这应该取代你的整个第二个for循环。
答案 2 :(得分:0)
假设base和power都是正整数,
然后
int Result =1;
for (int i=0; i<=power;i++)
{
if(power==0)
Result=1;
Result =Result*base;
}
答案 3 :(得分:0)
这应该有效
#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;
int result=1:
for(number=1; number <= power;number += 1)
{
result=result*base
}
printf("The result is %d", result);
return 0;
}