整數(shù)的話最簡單的辦法就是將一個給定到數(shù)連乘n次;以計算a到n次冪為例:
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出霍州免費做網(wǎng)站回饋大家。
#include"stdio.h"
main()
{
double
a,temp;
int
n,i;
temp=1;
printf("請輸入底數(shù):");
scanf("%d",a);
printf("請輸入指數(shù):");
scanf("%d",n);
for(i=0;i
{
temp=temp*a;
}
printf("%f",temp);
}
這種方法只適用與指數(shù)n為=0的整數(shù);如果涉及分?jǐn)?shù)或負(fù)數(shù)要用到數(shù)學(xué)函數(shù)#include"math.h"
1,for循環(huán)的條件錯了,應(yīng)該是大于號。
2,math.h中的函數(shù)用的時候要慎重,這些都是用來做復(fù)雜的數(shù)學(xué)計算的,時間開銷都很大。
3,求余只能對整數(shù)操作,這點是必然的。但浮點數(shù)是可以轉(zhuǎn)換成整數(shù)的,可以用強制類型轉(zhuǎn)換,或者設(shè)一個整型的中間變量。注意浮點數(shù)轉(zhuǎn)整數(shù)的時候是舍入的。當(dāng)然,這里只是說這個事,不建議這樣做。
建議的做法有兩個,簡單點延用原有的思路,可以自己寫一個求10的k次方的函數(shù),用整數(shù)進行運算。
int pow10n( int k )
{
r = 1;
for(i=0; i k ; ++i)
r *= 10;
return r;
}
復(fù)雜點的做法是把求10的k次方這個運算和拆分n的循環(huán)嵌在一起,這個應(yīng)該是正統(tǒng)的做法。
for( k=0; k3; ++k )
{
n %= 10;
}
當(dāng)然,這個算法得到的結(jié)果是逆序的,4、3、2、1
這有兩個辦法,一個是把結(jié)果順序放到數(shù)組中,輸出的時候把順序倒過來,說白了是用中間變量。
另外一個辦法是用棧,或者用遞歸(本質(zhì)上也是用的棧),直接按逆序出結(jié)果。當(dāng)然,這個方法對初學(xué)者有點難度了。
可以用在math.h頭文件中聲明的pow()函數(shù)求,例如:
要求a的b次方,就用pow(a,b)即可。
^符號在C中是位異或操作符,不用于求乘方。
1、頭文件:#include
2、原型:
double pow(double x, double y);
pow() 函數(shù)用來求 x 的 y 次冪(次方)
pow()用來計算以x 為底的 y 次方值,然后將結(jié)果返回。設(shè)返回值為 ret,則 ret = xy。
3、舉例如下:
double a = pow(4, 2); ?// 計算4的平方
4、可能導(dǎo)致錯誤的情況:
如果底數(shù) x 為負(fù)數(shù)并且指數(shù) y 不是整數(shù),將會導(dǎo)致 domain error 錯誤。
如果底數(shù) x 和指數(shù) y 都是 0,可能會導(dǎo)致 domain error 錯誤,也可能沒有;這跟庫的實現(xiàn)有關(guān)。
如果底數(shù) x 是 0,指數(shù) y 是負(fù)數(shù),可能會導(dǎo)致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現(xiàn)有關(guān)。
如果返回值 ret 太大或者太小,將會導(dǎo)致 range error 錯誤。
錯誤代碼:
如果發(fā)生 domain error 錯誤,那么全局變量 errno 將被設(shè)置為 ?EDOM;
如果發(fā)生 pole error 或 range error 錯誤,那么全局變量 errno 將被設(shè)置為 ERANGE。
注意:1、使用pow函數(shù)時,需要將頭文件#include包 ? ? ? ? ?含進源文件中。
2、用pow(x,y)的話要用到math.h頭文件。
擴展資料:
1、 三角函數(shù): double sin (double);正弦 ? double cos (double);余弦 ? double tan (double);正切
2 、反三角函數(shù): ? double asin (double); 結(jié)果介于[-PI/2, PI/2] ? double acos (double); 結(jié)果介于[0, PI] ? double atan (double); 反正切(主值), 結(jié)果介于[-PI/2, PI/2] ? double atan2 (double, double); 反正切(整圓值), 結(jié)果介于[-PI/2, PI/2]
3 、雙曲三角函數(shù): ? double sinh (double); ? double cosh (double); ? double tanh (double);
4 、指數(shù)與對數(shù): ? double exp (double); ? double sqrt (double);開平方 ? double log (double); 以e為底的對數(shù) ? double log10 (double);以10為底的對數(shù) ? double pow(double x, double y);計算以x為底數(shù)的y次冪 ? float powf(float x, float y); 功能與pow一致,只是輸入與輸出皆為浮點數(shù)
5 、取整: ? double ceil (double); 取上整 ? double floor (double); 取下整
6 、絕對值: ? double fabs (double);求絕對值 ? double cabs(struct complex znum) ;求復(fù)數(shù)的絕對值
7 、標(biāo)準(zhǔn)化浮點數(shù): ? double frexp (double f, int *p); 標(biāo)準(zhǔn)化浮點數(shù), f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) ? double ldexp (double x, int p); 與frexp相反, 已知x, p求f
8 、取整與取余: ? double modf (double, double*); 將參數(shù)的整數(shù)部分通過指針回傳, 返回小數(shù)部分 ? double fmod (double, double); 返回兩參數(shù)相除的余數(shù)
9 、其他: ? double hypot(double x, double y);已知直角三角形兩個直角邊長度,求斜邊長度 ? double ldexp(double x, int exponent);計算x*(2的exponent次冪) ? double poly(double x, int degree, double coeffs [] );計算多項式 ? nt matherr(struct exception *e);數(shù)學(xué)錯誤計算處理程序
文章名稱:c語言中用函數(shù)怎么求冪 c語言求冪的函數(shù)
本文URL:http://jinyejixie.com/article38/ddojssp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)頁設(shè)計公司、網(wǎng)站導(dǎo)航、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)