题目:
键盘录入两个整数:底(base)和幂指数(exponent),计算base的exponent次幂,并打印输出对应的结果。(注意底和幂指数都可能是负数)
提示:求幂运算时,基础的思路就是先无脑把指数转换成正数,然后累乘,最后再根据指数是否是负数决定是否取倒数。
关键点
分析:
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
键盘录入两个整数:底(base)和幂指数(exponent),计算base的exponent次幂,
并打印输出对应的结果。(注意底和幂指数都可能是负数)
提示:求幂运算时,基础的思路就是先无脑把指数转换成正数,然后累乘,
最后再根据指数是否是负数决定是否取倒数。
*/
//计算base的exponent次幂 - 循环累乘求解
double power(int base, int exponent) {
double result = 1.0;//存储计算结果
//若幂指数是0,则直接返回1
if (base!=0 && exponent == 0) {
return result;//任何非0数的0次幂等于1.
}
/*
在计算幂运算的过程中
幂指数有可能是负数,但为了简化计算可以先将指数转换成正数求解
*/
int positive_exponent = exponent > 0 ? exponent : -exponent; // 确保幂指数是一个正数
// 累乘 base
for (int i = 0; i < positive_exponent; i++) {
result *= base;
}
// 如果原幂指数是一个负数,则取倒数
if (exponent < 0) {
result = 1.0 / result;
}
return result;
}
int main(void) {
int base, exponent;
printf("请输入底数和指数(用空格分隔):");
scanf("%d %d", &base, &exponent);
double result = power(base, exponent);
//为了更好地显示负指数的小数结果,可以保留更多小数点后面的有效数字
printf("%d的%d次幂是%.20lf\n",base,exponent,result);
return 0;
}
解决方案总结:
:还是机智的. 幂运算若指数为负,底倒指数反.
不管怎么样,先让指数变成正的,直接计算, 若是负的记得整体取倒数.