Online Compiler C

// 计算 a 的 b 次幂,a 为整数(-10 到 10),b 为正整数(1 到 40) #include <stdio.h> int main() { int a, b;//输入值a,b scanf("%d %d", &a, &b); long long int power = 1;//幂power for (int i = 1; i <= b; i++) //循环变量i==累乘次数==输入值b { power = power * a;//幂底数a 累乘b次 } printf("%lld\n", power); return 0;
这段代码的功能是计算整数 a 的 b 次幂,使用循环累乘的方式得到结果,并输出。

代码整体思路正确,但有一个潜在问题需要注意:

- 当 a 为负数且 b 为奇数时,结果应为负数,但你的代码使用 long long int 存储,这没有问题。不过,当 a 为 -10 且 b 为 40 时,结果会非常大(10 的 40 次方),超出了 long long int 的表示范围(最大约 9.22e18),导致溢出。你需要考虑如何处理这种大数情况。

- 另外,你的循环从 i=1 开始到 i<=b,这会导致循环执行 b 次,但初始 power=1,所以第一次循环后 power=a,最终结果是 a 的 b 次方,逻辑正确。但注意当 b=0 时(题目说 b 为正整数,所以不会出现),你的代码会输出 1,这是合理的。