Online Compiler C

#include <stdio.h> int main() { int a,b,r=1,i; scanf("%d%d",&a,&b); if(a>=-10&&a<=10&&b>=1&&b<=40){ for(i=1;i<=b;i++) r*=a; printf("%d",r); } return 0; }
这段代码的功能是计算 a 的 b 次方,但只处理 a 在 -10 到 10 之间、b 在 1 到 40 之间的输入。它通过循环将 a 累乘 b 次得到结果并输出。

- 代码没有考虑 a 为 0 且 b 为 0 的情况,但题目要求 b 从 1 开始,所以这不是问题。主要问题是当 a 为负数且 b 较大时,结果可能超出 int 类型的范围,导致溢出。你需要思考如何避免整数溢出。
- 另外,当 a 为 0 时,循环结果始终为 0,这是正确的,但注意初始值 r=1 在 a=0 时会导致第一次循环后 r 变为 0,后续不变,逻辑正确。不过,如果 b 很大,循环次数很多,效率可能不是问题,但你需要确认题目是否要求处理更大的指数。