在函數(shù)中需要函數(shù)名的地方寫上 宏 __func__就可以了
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、萬柏林網(wǎng)站維護(hù)、網(wǎng)站推廣。
#include stdio.h
const char* func1()
{
return __func__; //這語句類似return (char *)"func1";
}
void func2()
{
printf("call function %s\n", __func__);
}
int
main(void)
{
printf("function name %s\n", func1());
func2();
return(0);
}
運(yùn)行結(jié)果:
function name func1
call function func2
1.
c語言中要編寫sin函數(shù),實(shí)質(zhì)上要利用sin的泰勒公式,然后根據(jù)泰勒公式,將其中的每一項(xiàng)進(jìn)行分解,最后用循環(huán),累加計(jì)算出最終結(jié)果
2.
下面用for循環(huán)實(shí)現(xiàn)sin的算法,程序代碼如下:
#include
#include
void
main()
{
int
i;
float
x,sum,a,b;
//sum代表和,a為分子,b為分母
char
s;
printf("please
input
x");
scanf("%f",x);
s=1;
sum=0;
a=x;
//分母賦初值
b=1;
//分子賦初值
for(i=1;a/b=1e-6;i++)
{
sum=sum+s*a/b;
//累加一項(xiàng)
a=a*x*x;
//求下一項(xiàng)分子
b=b*2*i*(2*i+1);
//求下一項(xiàng)分母
s*=-1;
}
printf("sum=%f\n",sum);
}
3.
關(guān)于上述程序的幾點(diǎn)說明:上述程序的計(jì)算結(jié)果精確到小數(shù)點(diǎn)后六位;上述程序運(yùn)用了sin的泰勒展開式
sin
x=x-x^3/3!+x^5/5!
......
,程序中將sin泰勒公式中的每一項(xiàng)拆成了分子,分母以及每一項(xiàng)前的符號(hào)這三項(xiàng),以便于每一項(xiàng)的累加
fgets(ch,2,fp);
表示的fgets(char *s,int n,file)表示輸出流文件的n-1個(gè)字符,所以只能輸出2-1個(gè),改為
fgets(ch,3,fp);就行啦輸出ab
#include stdio.h
#includestdlib.h
void main()
{
FILE *fpc,*fp;
if((fpc=fopen("c:\\文件練習(xí).TXT","w")) == NULL)//這里的W后面加b就是二進(jìn)制文件的,以下相同,
//a是追加
{
printf("can't open this file!/n");
exit(0);
}
char chr;
printf("輸入文件的內(nèi)容\n");
chr=getchar();
while(chr!='@')
{
fputc(chr,fpc);
chr=getchar();
}
fclose(fpc);
printf("\n輸出文件:");
if( (fp=fopen("c:\\文件練習(xí).TXT","r")) == NULL)
{
printf("can't open this file!/n");
exit(0);
}
char ch[100]={0};
fgets(ch,3,fp);
puts(ch);
fclose(fp);
}
1、首先要有函數(shù),設(shè)置成double類型的參數(shù)和返回值。
2、然后根據(jù)導(dǎo)數(shù)的定義求出導(dǎo)數(shù),參數(shù)差值要達(dá)到精度極限,這是最關(guān)鍵的一步。
3、假如函數(shù)是double fun(doube x),那么導(dǎo)數(shù)的輸出應(yīng)該是(fun(x)-fun(x-e))/e,這里e是設(shè)置的無窮小的變量。
4、C由于精度有限,因此需要循環(huán)反復(fù)測試,并判斷無窮小e等于0之前,求出上述導(dǎo)數(shù)的值。二級(jí)導(dǎo)數(shù)也是一樣,所不同的是要把上述導(dǎo)數(shù)公式按定義再一次求導(dǎo)。這是算法,具體的實(shí)現(xiàn)自己嘗試編程。
C語言的數(shù)據(jù)長度和精度都有限,因此用C語言編程求的導(dǎo)數(shù)并不精確,換句話說C語言編程不適合求導(dǎo)和極限。
擴(kuò)展資料:
舉例說明:
一階導(dǎo)數(shù),寫一個(gè)函數(shù) y = f(x):
float f(float x){ ...}
設(shè) dx 初值
計(jì)算 dy
dy = f(x0) - f(x0+dx);
導(dǎo)數(shù) 初值
dd1=dy/dx;
Lab:;
dx = 0.5 * dx; ?// 減小步長
dy = f(x0) - f(x0+dx);
dd2=dy/dx; ?// 導(dǎo)數(shù) 新值
判斷新舊導(dǎo)數(shù)值之差是否滿足精度,滿足則得結(jié)果,不滿足則返回
if ( ?fabs(dd1-dd2) 1e-06 ) { 得結(jié)果dd2...}
else { dd1=dd2;goto Lab;}。
C語言的標(biāo)準(zhǔn)庫
math.h中有tan的聲明
直接用就好
double tan(double x);
#define EPSLION 1e-5
double sqrt(double n)
{
if (n 0)
{
return n;
}
double low = 0.0, high = n;
double value = (low + high) / 2;
while (value * value - n EPSLION || value * value - n -EPSLION)
{
if (value * value n)
high = value;
else
low = value;
value = (high + low) / 2;
}
return value;
}