C語言中pow函數(shù)使用方法、注意事項(xiàng)以及常見報(bào)錯原因
1.首先使用pow函數(shù)必須要加頭文件 :
#include<math.h>
pow() 函數(shù)用來求 x 的 y 次冪(次方),x、y及函數(shù)值實(shí)際上為double型 ,其在使用中的原型為:double pow(double x, double y);
注意,在某些特定的情況之下,pow函數(shù)的double類型可能會引起輸出結(jié)果的錯誤
2.pow()用來計(jì)算以x 為底的 y 次方值,然后將結(jié)果返回。
設(shè)返回值為 ret 則 ret = x^y
基本使用方法如下:
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,ret;
scanf("%d,%d", &a, &b);
ret = pow(a,b); //求出a的b次方
printf("%d", ret);
return 0;
}3.注意可能引起報(bào)錯的原因
- 底數(shù) a為負(fù)數(shù)并且指數(shù) b 不是整數(shù),將會導(dǎo)致 domain error 錯誤.
- 底數(shù) a和指數(shù) b都是 0,會導(dǎo)致 domain error 錯誤.
- 底數(shù) a是 0,指數(shù) b 為負(fù)數(shù),會導(dǎo)致 domain error 或 pole error 錯誤.
所以在使用pow函數(shù)時,要注意底數(shù)和指數(shù)數(shù)字的正負(fù),不要違反基本的數(shù)學(xué)常識 4.代碼實(shí)戰(zhàn) 輸入一個數(shù),想把每位的數(shù)變成0或1。如果某一位是奇數(shù),就把它變成1,如果是偶數(shù),那么就把它變成0。最后得到的數(shù)是多少?
例如:輸入888, 輸出結(jié)果為0
輸入123,結(jié)果為101
#include<stdio.h>
#include<math.h>
int main()
{
int a[i], i, k;
long long sum, n, c;
scanf("%d", &n);
while(n)
{
c = n % 10;
n = n / 10;
a[k++] = c;
}
for(i = 0; i < k; i++)
{
if(c % 2 == 0)
{
a[i] = 0;
}
else
{
a[i] = 1;
}
sum = sum + a[i] * pow(10, i);
}
printf("%d", sum);
return 0;
}可能導(dǎo)致錯誤的情況:
- 如果底數(shù) x 為負(fù)數(shù)并且指數(shù) y 不是整數(shù),將會導(dǎo)致 domain error 錯誤。
- 如果底數(shù) x 和指數(shù) y 都是 0,可能會導(dǎo)致 domain error 錯誤,也可能沒有;這跟庫的實(shí)現(xiàn)有關(guān)。
- 如果底數(shù) x 是 0,指數(shù) y 是負(fù)數(shù),可能會導(dǎo)致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實(shí)現(xiàn)有關(guān)。
- 如果返回值 z 太大或者太小,將會導(dǎo)致 range error 錯誤。
錯誤代碼:
如果發(fā)生 domain error 錯誤,那么全局變量 errno 將被設(shè)置為 EDOM;
如果發(fā)生 pole error 或 range error 錯誤,那么全局變量 errno 將被設(shè)置為 ERANGE。
Math.pow(底數(shù),幾次方)
如:double a=2.0;
double b=3.0;
double c=Math.pow(a,b);
就是2的三次方是多少;
c最終為8.0;
總結(jié)
到此這篇關(guān)于C語言中pow函數(shù)使用方法、注意事項(xiàng)及常見報(bào)錯原因的文章就介紹到這了,更多相關(guān)C語言pow函數(shù)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言如何利用輾轉(zhuǎn)相除法求最大公約數(shù)
這篇文章主要介紹了C語言如何利用輾轉(zhuǎn)相除法求最大公約數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
C語言實(shí)現(xiàn)BMP轉(zhuǎn)換JPG的方法
這篇文章主要介紹了C語言實(shí)現(xiàn)BMP轉(zhuǎn)換JPG的方法,涉及C#圖片格式轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
c++中?isupper()和islower()函數(shù)詳解
在C++中,islower()和isupper()是C++標(biāo)準(zhǔn)庫中提供的兩個字符判斷函數(shù),這兩個函數(shù)用于判斷一個字符是否為小寫字母或大寫字母,這篇文章主要介紹了c++?isupper()?islower()的相關(guān)資料,需要的朋友可以參考下2024-05-05
C++ 數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)化的實(shí)現(xiàn)
這篇文章主要介紹了C++ 數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)化的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法
這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12

