如何用c語言求函數(shù)實現(xiàn) c語言怎么用數(shù)學(xué)函數(shù)

c語言如何實現(xiàn)函數(shù)的調(diào)用

如何調(diào)用C語言寫的庫,如a.lib等,有對應(yīng)的庫頭文件a.h。假設(shè)a.h中定義了函數(shù):

成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、重慶網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)成都定制網(wǎng)站等服務(wù)項目。核心團(tuán)隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗,服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:混凝土攪拌罐車等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗,同時也獲得了客戶的一致稱贊!

int

WhyCoding(int

a,

float

b);

做法是,

/*

cpp_a.h

*/

extern

"C"

{

#include

"a.h"

}

/*

cpp_a.h

*/

extern

"C"

{

int

WhyCoding(int

a,

float

b);

/*

重定義所有的C函數(shù)

*/

}

從上面可以看出,extern

"C"

是用在C和C++之間的橋梁。之所以需要這個橋梁是因為C編譯器編譯函數(shù)時不帶

函數(shù)的類型信息,只包含函數(shù)符號名字,如C編譯器把函數(shù)int

a(float

x)編譯成類似_a這樣的符號,C連接器只要

找到了調(diào)用函數(shù)的符號,就可以連接成功,它假設(shè)參數(shù)類型信息是正確的,這是C編譯連接器的缺點。而C++

編譯器為了實現(xiàn)函數(shù)重載,編譯時會帶上函數(shù)的類型信息,如他把上面的a函數(shù)可能編譯成_a_float這樣的

符號為了實現(xiàn)重載,注意它還是沒有帶返回值得信息,這也是為什么C++不支持采用函數(shù)返回值來區(qū)別函數(shù)

重載的原因之一,當(dāng)然,函數(shù)的使用者對函數(shù)返回值的處理方式(如忽略)也是重要原因。

基于以上,C調(diào)用C++,首先需要用封裝函數(shù)把對C++的類等的調(diào)用封裝成C函數(shù)以便C調(diào)用,于是extern

"C"

作用是:讓編譯器知道這件事,然后以C語言的方式編譯和連接封裝函數(shù).(通常是把封裝函數(shù)用C++編譯器按C++

方式編譯,用了extern

"C"

后,編譯器便依C的方式編譯封裝接口,當(dāng)然接口函數(shù)里面的C++語法還是按C++方式

編譯;對于C語言部分--調(diào)用者,還是按C語言編譯;分別對C++接口部分和C部分編譯后,再連接就可以實現(xiàn)C

調(diào)用C++了).

相反,C++調(diào)用C函數(shù),extern

"C"

的作用是:讓C++連接器找調(diào)用函數(shù)的符號時采用C的方式,即使用_a而不是

_a_float來找調(diào)用函數(shù)。

如何用c語言編程軟件編寫一個求函數(shù)的程序?即輸入一組數(shù)據(jù),得出一個函數(shù)。

你的意思是說,輸入一些數(shù)據(jù),讓程序擬合出來一個函數(shù)。

這個很復(fù)雜。比如我舉個例子。

多項式擬合函數(shù)polyfit之C語言的源碼

2010-11-25 10:05:57| 分類: VC++編程 | 標(biāo)簽:double poly_n polyfit int for |字號 訂閱

#include stdio.h

#include conio.h

#include stdlib.h

#include math.h

main()

{

int i,j,m,n=7,poly_n=2;

double x[7]={1,2,3,4,6,7,8},y[7]={2,3,6,7,5,3,2};

double a[3];

void polyfit(int n,double *x,double *y,int poly_n,double a[]);

system("cls");

polyfit(n,x,y,poly_n,a);

for (i=0;ipoly_n+1;i++)/*這里是升序排列,Matlab是降序排列*/

printf("a[%d]=%g\n",i,a[i]);

getch();

}

/*==================polyfit(n,x,y,poly_n,a)===================*/

/*=======擬合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n========*/

/*=====n是數(shù)據(jù)個數(shù) xy是數(shù)據(jù)值 poly_n是多項式的項數(shù)======*/

/*===返回a0,a1,a2,……a[poly_n],系數(shù)比項數(shù)多一(常數(shù)項)=====*/

void polyfit(int n,double x[],double y[],int poly_n,double a[])

{

int i,j;

double *tempx,*tempy,*sumxx,*sumxy,*ata;

void gauss_solve(int n,double A[],double x[],double b[]);

tempx=calloc(n,sizeof(double));

sumxx=calloc(poly_n*2+1,sizeof(double));

tempy=calloc(n,sizeof(double));

sumxy=calloc(poly_n+1,sizeof(double));

ata=calloc((poly_n+1)*(poly_n+1),sizeof(double));

for (i=0;in;i++)

{

tempx[i]=1;

tempy[i]=y[i];

}

for (i=0;i2*poly_n+1;i++)

for (sumxx[i]=0,j=0;jn;j++)

{

sumxx[i]+=tempx[j];

tempx[j]*=x[j];

}

for (i=0;ipoly_n+1;i++)

for (sumxy[i]=0,j=0;jn;j++)

{

sumxy[i]+=tempy[j];

tempy[j]*=x[j];

}

for (i=0;ipoly_n+1;i++)

for (j=0;jpoly_n+1;j++)

ata[i*(poly_n+1)+j]=sumxx[i+j];

gauss_solve(poly_n+1,ata,a,sumxy);

free(tempx);

free(sumxx);

free(tempy);

free(sumxy);

free(ata);

}

void gauss_solve(int n,double A[],double x[],double b[])

{

int i,j,k,r;

double max;

for (k=0;kn-1;k++)

{

max=fabs(A[k*n+k]); /*find maxmum*/

r=k;

for (i=k+1;in-1;i++)

if (maxfabs(A[i*n+i]))

{

max=fabs(A[i*n+i]);

r=i;

}

if (r!=k)

for (i=0;in;i++) /*change array:A[k]A[r] */

{

max=A[k*n+i];

A[k*n+i]=A[r*n+i];

A[r*n+i]=max;

}

max=b[k]; /*change array:b[k]b[r] */

b[k]=b[r];

b[r]=max;

for (i=k+1;in;i++)

{

for (j=k+1;jn;j++)

A[i*n+j]-=A[i*n+k]*A[k*n+j]/A[k*n+k];

b[i]-=A[i*n+k]*b[k]/A[k*n+k];

}

}

所以這種程序是超級大型的,一般沒人能獨(dú)立寫出來。

編程計算器和一些程序能實現(xiàn),但是源代碼都是不公布的。

急?。?!怎么用C語言編寫程序,用函數(shù)完成:計算從1開始到n的自然數(shù)的和???

C語言是普適性最強(qiáng)的一種計算機(jī)程序編輯語言,它不僅可以發(fā)揮出高級編程語言的功用,還具有匯編語言的優(yōu)點,計算和的方法為:

1、新建一個求1到100自然數(shù)之和項目。

2、添加一個cpp文件。

3、包含需要用到的頭文件。

4、輸入main函數(shù)。

5、定義兩個變量,分別是:a和sum。

6、使用while語句計算1到100之間所有自然數(shù)之和。

7、運(yùn)行程序,打印出結(jié)果。

注意事項:

C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設(shè)計更熟練一些。

c程序語言,函數(shù),求編程實現(xiàn)

第三個函數(shù)

#includestdio.h

void

main()

{

int

a,b,back;

int

mulnum(int

a,int

b);

printf("請輸入兩個整數(shù):");

scanf("%d%d",a,b);

back=mulnum(a,b);

if(back==1)

printf("%d

is

multiple

of

%d\n",a,b);

else

if(back==2)

printf("%d

is

multiple

of

%d\n",b,a);

else

;

}

int

mulnum(int

a,int

b)

{

double

result;

if((result=a%b)==0)

return

1;

else

if((result=b%a)==0)

return

2;

else

return

0;

}

這個函數(shù)能技能判斷a是否為b的倍數(shù),還能判斷b是否為a的倍數(shù)。樓主如果不需要第二個功能,把else

if語句

去掉就行了。

網(wǎng)站欄目:如何用c語言求函數(shù)實現(xiàn) c語言怎么用數(shù)學(xué)函數(shù)
瀏覽地址:http://muchs.cn/article34/dosdspe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作商城網(wǎng)站、網(wǎng)站改版、做網(wǎng)站企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(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)

外貿(mào)網(wǎng)站建設(shè)