题目:
键盘录入两个整数:底(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,则直接返回1if (base!=0 && exponent == 0) {return result;//任何非0数的0次幂等于1.}/*在计算幂运算的过程中幂指数有可能是负数,但为了简化计算可以先将指数转换成正数求解*/int positive_exponent = exponent > 0 ? exponent : -exponent; // 确保幂指数是一个正数// 累乘 basefor (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;
}
解决方案总结:
:还是机智的. 幂运算若指数为负,底倒指数反.
不管怎么样,先让指数变成正的,直接计算, 若是负的记得整体取倒数.