可以用在math.h頭文件中聲明的pow()函數(shù)求,例如:
成都創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺運(yùn)營、重慶App定制開發(fā)、成都做手機(jī)網(wǎng)站、微信網(wǎng)站制作、軟件開發(fā)、資陽移動機(jī)房等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。
要求a的b次方,就用pow(a,b)即可。
^符號在C中是位異或操作符,不用于求乘方。
C語言中計(jì)算一個數(shù)的N次方可以用庫函數(shù)pow來實(shí)現(xiàn)。
函數(shù)原型:double pow(double x, double y);
功 能:計(jì)算x^y的值
返 回 值:計(jì)算結(jié)果
舉例如下:
double a = pow(3.14, 2); // 計(jì)算3.14的平方
注:使用pow函數(shù)時(shí),需要將頭文件#includemath.h包含進(jìn)源文件中。
#include stdio.h
int main(void)
{
int x,y=1,z;
printf("Enter x:");
scanf("%d",x);
for(z=1;z=x;z++)
{
y=y*x;
}
printf("y=%d",y);
return 0;
}
或
#include stdio.h
#include math.h
int main(void)
{
int x,y;
printf("Enter x:");
scanf("%d",x);
y=pow(x,x);
printf("y=%d",y);
return 0;
}
1,for循環(huán)的條件錯了,應(yīng)該是大于號。
2,math.h中的函數(shù)用的時(shí)候要慎重,這些都是用來做復(fù)雜的數(shù)學(xué)計(jì)算的,時(shí)間開銷都很大。
3,求余只能對整數(shù)操作,這點(diǎn)是必然的。但浮點(diǎn)數(shù)是可以轉(zhuǎn)換成整數(shù)的,可以用強(qiáng)制類型轉(zhuǎn)換,或者設(shè)一個整型的中間變量。注意浮點(diǎn)數(shù)轉(zhuǎn)整數(shù)的時(shí)候是舍入的。當(dāng)然,這里只是說這個事,不建議這樣做。
建議的做法有兩個,簡單點(diǎn)延用原有的思路,可以自己寫一個求10的k次方的函數(shù),用整數(shù)進(jìn)行運(yùn)算。
int pow10n( int k )
{
r = 1;
for(i=0; i k ; ++i)
r *= 10;
return r;
}
復(fù)雜點(diǎn)的做法是把求10的k次方這個運(yùn)算和拆分n的循環(huán)嵌在一起,這個應(yīng)該是正統(tǒng)的做法。
for( k=0; k3; ++k )
{
n %= 10;
}
當(dāng)然,這個算法得到的結(jié)果是逆序的,4、3、2、1
這有兩個辦法,一個是把結(jié)果順序放到數(shù)組中,輸出的時(shí)候把順序倒過來,說白了是用中間變量。
另外一個辦法是用棧,或者用遞歸(本質(zhì)上也是用的棧),直接按逆序出結(jié)果。當(dāng)然,這個方法對初學(xué)者有點(diǎn)難度了。