題目:
鍵盤錄入兩個整數:底(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;
}
解決方案總結:
:還是機智的. 冪運算若指數為負,底倒指數反.
不管怎么樣,先讓指數變成正的,直接計算, 若是負的記得整體取倒數.