Online Compiler C

#include <stdio.h> int main() { int a, b, i, t; scanf("%d %d", &a, &b); t=a; if(b==1) { printf("%d", a); } if(b==0) { printf("1"); } if(b>1) { for(i=1;i<=b-1;i++) { t=t*a; } } printf("%d", t); return 0; }
1) 这段代码试图计算 a 的 b 次方(a^b),但存在逻辑错误:当 b>1 时,循环次数和乘法计算有误,且当 b=0 或 b=1 时,会输出两次结果。

2) 提示:检查循环条件 `i<=b-1` 和循环内的乘法 `t=t*a` 是否正确实现了指数运算。另外,注意多个 if 语句的执行流程,是否所有情况都需要执行最后的 `printf("%d", t);`?