二分法計(jì)算函數(shù)f(x)=x*x*x*x+2*x*x*x-x-1;
路南ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
本程序在turbo c或c++下編譯:
#include "stdio.h"
#include math.h
float f(float x)
{float y;
y=x*x*x*x+2*x*x*x-x-1;
return y;
}
void main()
{float a=0,b=0,h,y,x;
int k,n0;
printf("please input qujian a and b");
scanf("%f%f%d",a,b,n0); /*輸入含根區(qū)間a,b,循環(huán)次數(shù)n0 */
for(k=0;k=n0;k++)
{ x=(a+b)/2;
h=(b-a)/2;
y=f(x);
if(h10e-6||fabs(y)10e-6)
{ printf("k=%d,x=%f,y=%f",k,x,y);
break; } /*輸出分半次數(shù)k,函數(shù)的根x,及x對(duì)應(yīng)的函數(shù)值.*/
else
{if(f(a)*f(x)0)
b=x;
else a=x;
}
}
}
if語句的一般形式如下:
if(表達(dá)式)語句1
[else語句2]
if語句中的“表達(dá)式”可以是關(guān)系表達(dá)式、邏輯表達(dá)式,甚至是數(shù)值表達(dá)式。其中最直觀、最容易理解的是關(guān)系表達(dá)式。所謂關(guān)系表達(dá)式就是兩個(gè)數(shù)值進(jìn)行比較的式子。
例如:
if(xy)
printf("%d",x);
else
printf("%d",y);
擴(kuò)展資料
if-else語句引入了一種二義性問題稱為空懸else(dangling-else)問題,這種問題出現(xiàn)在當(dāng)if子句多于else子句時(shí)。問題是這些else子句分別和哪一個(gè)if子句匹配。
例如:
if(minVal=ivec[i])
if(minVal==ivec[i])
++occurs;
else
{
minVal=ivec[i];
occurs=1;
}
#includestdio.h
#includemath.h
typedef double(*fun)(double xx);//函數(shù)指針
#define e 0.000001 //誤差
void eff(double a,double b,fun hs)//二分法
{int i=0;
while(fabs(hs(a)-hs(b))efabs(a-b)e){i++;
if(hs(a)*hs((b+a)/2)0){
a=(a+b)/2;
printf("迭代第%d次:\t%f\n",i,a);
}
else {
b=(a+b)/2;
printf("迭代第%d次:\t%f\n",i,b);
}
}
}
double hs1(double xx)//函數(shù)f(x)=x^3+x^2-3x-3
{return xx*xx*xx+xx*xx-3*xx-3;}
double hs2(double xx)//函數(shù)f(x)=lnx+x
{return log(xx)+xx;}
void main()
{
printf("用二分法求方程x^3+x^2-3x-3=0在1.5附近的根\n");
eff(1.0,2.0,hs1);
printf("用二分法求方程lnx+x在0.5附近的根\n");
eff(0.0,1.0,hs2);
}
#include?stdio.h
int?main()
{
FILE?*fp=fopen("test.bin",?"wb"?);
char?ch1=0xEF?;
char?ch2=0xFF?;
if?(?fp?==?NULL?)
return?-1;
fwrite(?(char?*)ch1,1,1,fp?);
fwrite(?(char?*)ch2,1,1,fp?);
fwrite(?(char?*)ch1,1,1,fp?);
fwrite(?(char?*)ch2,1,1,fp?);
fclose(fp);
return?0;
}
不能寫出來單數(shù)的F!
#includestdio.h
void main()
{
int a,b,i;
for(i=999;i0;i++)
{
printf("請(qǐng)輸入員工業(yè)績\n");
scanf("%d",a);
if a=2000
b=a;
else if a=5000
b=1.08*a;
else if a=10000
b=1.1*a;
else if a10000
b=1.12*a;
printf("該員工工資為%d",b)
}
}
第一題代碼如下,很簡單所以沒有什么注釋:
#includestdio.h
#includemath.h
float Fl(float x)
{
float y;
y=cos(x)-x;
return y;
}
float newtoon(float x)
{
float y;
y=x-Fl(x)/(-sin(x)-1);
return y;
}
void main()
{
float x0,x1;
printf("Please input x0:\n");
scanf("%f",x1);
do
{
float z;
x0=x1;
x1=newtoon(x0);
}while(fabs(x1-x0)=1e-5);
printf("The root of equation is %f\n",x1);
}
糾正一下上面沒看清題目,應(yīng)該是1e-6
第二題代碼如下:
#includestdio.h
#includemath.h
double eff(double x)
{
double y;
y=log(x)+pow(x,2);
for(;y=1e-4;){
if(y0)
{
x=(x+1/exp(1))/2;
eff(x);
}
else
{
x=(x+1)/2;
eff(x);
}
}
return y;
}
void main()
{
double x,z;
printf("Please input x:\n");
do
{
scanf("%lf",x);
}while(x=1/exp(1)||(x=1));//輸入的數(shù)字必須在區(qū)間內(nèi),因?yàn)轭}目中已經(jīng)指出在這個(gè)區(qū)間有一個(gè)根!
z=eff(x);
printf("the root of the equation is:%lf\n",z);
}
上面的程序我都運(yùn)行了一下,差不多對(duì)了,第二題用double和float其實(shí)是一樣的,只不過log函數(shù)得到的是double型數(shù)據(jù),為了使得程序更加精確我擅自修改了下,樓主改回float也可以。
文章標(biāo)題:c語言eff函數(shù) ef函數(shù)怎么用
網(wǎng)頁鏈接:http://m.newbst.com/article24/hpohje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、軟件開發(fā)、用戶體驗(yàn)、小程序開發(fā)、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)