#includestdio.h
創(chuàng)新互聯(lián)建站自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊及專業(yè)的網(wǎng)站設(shè)計師團(tuán)隊。
#includemath.h
intmain(){
printf("%f\n",log(10));//以e為底的對數(shù)函數(shù)
printf("%f\n",log10(100));//以10為底的對數(shù)函數(shù)
printf("%f\n",log(8)/log(2));//計算log2^8,運用換底公式
printf("%f\n",exp(1));//計算自然常數(shù)e
return0;
}
擴(kuò)展資料
模擬一個log日志的寫入
#includestdio.h
#includestdarg.h
#includetime.h
intwrite_log(FILE*pFile,constchar*format,…)
{
va_listarg;
intdone;
va_start(arg,format);
time_ttime_log=time(NULL);
structtm*tm_log=localtime(time_log);
fprintf(pFile,"%04d-%02d-%02d%02d:%02d:%02d",tm_log-tm_year+1900,tm_log-tm_mon+1,tm_log-tm_mday,tm_log-tm_hour,tm_log-tm_min,tm_log-tm_sec);
done=vfprintf(pFile,format,arg);
va_end(arg);
fflush(pFile);
returndone;
}
intmain()
{
FILE*pFile=fopen(“123.txt”,“a”);
write_log(pFile,"%s%d%f\n","isrunning",10,55.55);
fclose(pFile);
return0;
}
沒有問題,輸出m=0.301030;n=0.004321;g=69.66
編譯時會提示warning,主要原因有
1、int d=300000 過大,用長整形;
2、log()和log10()函數(shù)均是double型,double轉(zhuǎn)成float會有截斷誤差,將float r=0.01,m,n,g;
中的float改成double就不會有warning了;
3、getch()函數(shù)未聲明,頭文件加入#includeconio.h,就不會有warning了。
但warning不會影響運行結(jié)果。
c 里直接提供的是 以 e 為底的自然對數(shù) log ,和 以 10 為底的常用對數(shù) log10
其他對數(shù)寫個函數(shù)就可以
#include stdio.h
#include math.h
double loga(double n, double base);
int main (void)
{
double a, b, c;
a = log(exp(1));
b = log10(10);
c = loga(100, 5);
printf("%lf %lf %lf", a, b, c);
}
double loga(double n, double base)
{ return log(n) / log(base);}
求lnx為log(x)
求log10x是log10(x)
沒有專門的求任意底數(shù)對數(shù)的函數(shù),不過可以用
log(x)/log(y)表示logyx
#includestdio.h
#include math.h
void main()
{
float x=5,y;
y=log(x);
printf("%f\n",y);
}
擴(kuò)展資料:
C語言中使用對數(shù)函數(shù)的方法
log()函數(shù):返回以e為底的對數(shù)值
頭文件:
1#include
log() 函數(shù)返回以 e 為底的對數(shù)值,其原型為:
1double?log?(double?x);
log()用來計算以e為底的 x 的對數(shù)值,然后將結(jié)果返回。設(shè)返回值為 ret,則
1x = eret
如果 x 為負(fù)數(shù)或 0,則會發(fā)生錯誤并設(shè)置 errno 值。錯誤代碼:
EDOM:參數(shù)x 為負(fù)數(shù);
ERANGE:參數(shù)x
為零值,零的對數(shù)值無定義。
注意:使用 GCC 編譯時請加入-lm。
1、C語言中,有兩個log函數(shù),分別為log10和log函數(shù),具體用法如下:
2、函數(shù)名: log10
功 能: 對數(shù)函數(shù)log,以10為底
用 法: double log10(double x);
程序示例:
#include math.h
#include stdio.hint main(void)
{
double result;
double x = 800.6872;
result = log10(x);
printf("The common log of %lf is %lf\n", x, result);
return 0;
}
3、函數(shù)名: log
功 能: 對數(shù)函數(shù)log,以e(2.71828)為底
用 法: double log(double x);
程序示例:
#include math.h
#include stdio.hint main(void)
{
double result;
double x = 800.6872;
result = log(x);
printf("The common log of %lf is %lf\n", x, result);
return 0;
}
首先在C語言中要用到指數(shù)、對數(shù)的相關(guān)公式,需要引入math.h。另外ln是以e為底數(shù),lg是以10為底數(shù)。
代碼如下:
#includestdio.h
#includemath.h
void main()
{
double exponent, base;
exponent = 3.14;
printf("ln(%f) = %.2f\n", exponent, log(exponent));//以e為底數(shù)的對數(shù)
exponent = 100;
printf("lg(%.f) = %.2f\n", exponent, log10(exponent));//以10為底數(shù)的對數(shù)
base = 5, exponent = 100;
printf("log_%.f(%.f) = %.2f\n", base, exponent, log(exponent)/log(base));//換底公式
return 0;
}
在求log_5(100)時需要用到“換底公式”:log_5(100) = ln(100)/ln(5)。
擴(kuò)展資料:
math.h文件中包含的函數(shù)主要分為以下幾類:
1、三角函數(shù)、反三角函數(shù)、雙曲三角函數(shù)。
2、指數(shù)、對數(shù)。
3、取整、絕對值。
4、標(biāo)準(zhǔn)化浮點數(shù)。
涉及參數(shù)類型為double類型。
參考資料:
百度百科——換底公式
百度百科——math.h