Онлайн компилятор C

#include <stdio.h> int main() { double base; // 底数(支持小数、正数、负数) int exponent; // 指数(整数,支持正/负/0) double result = 1.0; // 初始值1.0:乘法单位元,天然支持非零数的0次方 int i; int is_negative_exp = 0; // 标记是否为负指数 // 提示输入底数和指数 printf("base:"); scanf("%lf", &base); printf("exponent:"); scanf("%d", &exponent); // 新增:处理0的0次方(数学上未定义,优先拦截) if (base == 0.0 && exponent == 0) { printf("错误:0的0次方在数学上未定义,无意义!\n"); return 1; // 异常退出,避免后续无效计算 } // 步骤1:处理负指数——标记后取绝对值,统一转为正指数计算 if (exponent < 0) { is_negative_exp = 1; exponent = -exponent; // 取指数绝对值 } // 步骤2:循环累乘——计算base的|exponent|次方 for (i = 0; i < exponent; i++) { result *= base; } // 步骤3:负指数兜底——对正指数结果取倒数(已补全缺失的闭合花括号) if (is_negative_exp == 1) { // 校验:避免0的负指数(数学无意义,除以0错误) if (result == 0.0) { printf("错误:0的负指数无数学意义!\n"); return 1; } result = 1.0 / result; // 负指数等价于正指数结果的倒数 } // 补全此处缺失的闭合花括号,修复语法错误 // 还原原始指数,格式化输出结果 int original_exponent = is_negative_exp ? -exponent : exponent; printf("%.2lf 的 %d 次方 = %.4lf\n", base, original_exponent, result); return 0; }
1) 这段代码实现了一个计算幂次方的程序,可以处理正/负小数底数和整数指数(包括负指数和零指数),并进行了错误检查(如0的0次方和0的负指数)。

2) 提示:
- 注意第30行代码中`exponent`变量在负指数情况下已被修改为绝对值,后续输出原始指数时需要特殊处理。
- 当底数为负数且指数为奇数时,结果应为负数;为偶数时结果应为正数,思考当前循环乘法逻辑是否天然支持这种情况。