#include?iostream

10多年的旌陽網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整旌陽建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。成都創新互聯公司從事“旌陽網站設計”,“旌陽網站推廣”以來,每個客戶項目都認真落實執行。
int?main()
{
int?a?=?0,b?=?0;
printf("請輸入一次方程的系數a和b(以逗號隔開):");
scanf("%d,%d",a,b);
double?c?=?(double)-b?/?a;
printf("一次方程?%dx+%d=0?的根是:x?=?%lf\n",a,b,c);
system("pause");
return?0;
一元多項式簡單的計算器的功能:
1)輸入并建立多項式;
2)輸出多項式;
3)兩個多項式相加,輸出和多項式;
4)兩個多項式相減,輸出差多項式。
例程
#include?dos.h?/*DOS接口函數*/
#include?math.h?/*數學函數的定義*/
#include?conio.h?/*屏幕操作函數*/
#include?stdio.h?/*I/O函數*/
#include?stdlib.h?/*庫函數*/
#include?stdarg.h?/*變量長度參數表*/
#include?graphics.h?/*圖形函數*/
#include?string.h?/*字符串函數*/
#include?ctype.h?/*字符操作函數*/
#define?UP?0x48?/*光標上移鍵*/
#define?DOWN?0x50?/*光標下移鍵*/
#define?LEFT?0x4b?/*光標左移鍵*/
#define?RIGHT?0x4d?/*光標右移鍵*/
#define?ENTER?0x0d?/*回車鍵*/
void?*rar;?/*全局變量,保存光標圖象*/
struct?palettetype?palette;?/*使用調色板信息*/
int?GraphDriver;?/*?圖形設備驅動*/
int?GraphMode;?/*?圖形模式值*/
int?ErrorCode;?/*?錯誤代碼*/
int?MaxColors;?/*?可用顏色的最大數值*/
int?MaxX,?MaxY;?/*?屏幕的最大分辨率*/
double?AspectRatio;?/*?屏幕的像素比*/
void?drawboder(void);?/*畫邊框函數*/
void?initialize(void);?/*初始化函數*/
void?computer(void);?/*計算器計算函數*/
void?changetextstyle(int?font,?int?direction,?int?charsize);?/*改變文本樣式函數*/
void?mwindow(char?*header);?/*窗口函數*/
int?specialkey(void)?;?/*獲取特殊鍵函數*/
int?arrow();?/*設置箭頭光標函數*/
/*主函數*/
int?main()
{
initialize();/*?設置系統進入圖形模式?*/
computer();?/*運行計算器?*/
closegraph();/*系統關閉圖形模式返回文本模式*/
return(0);?/*結束程序*/
}
/*?設置系統進入圖形模式?*/
void?initialize(void)
{
int?xasp,?yasp;?/*?用于讀x和y方向縱橫比*/
GraphDriver?=?DETECT;?/*?自動檢測顯示器*/
initgraph(?GraphDriver,?GraphMode,?""?);
/*初始化圖形系統*/
ErrorCode?=?graphresult();?/*讀初始化結果*/
if(?ErrorCode?!=?grOk?)?/*如果初始化時出現錯誤*/
{
printf("Graphics?System?Error:?%s\n",
grapherrormsg(?ErrorCode?)?);?/*顯示錯誤代碼*/
exit(?1?);?/*退出*/
}
getpalette(?palette?);?/*?讀面板信息*/
MaxColors?=?getmaxcolor()?+?1;?/*?讀取顏色的最大值*/
MaxX?=?getmaxx();?/*?讀屏幕尺寸?*/
MaxY?=?getmaxy();?/*?讀屏幕尺寸?*/
getaspectratio(?xasp,?yasp?);?/*?拷貝縱橫比到變量中*/
AspectRatio?=?(double)xasp/(double)yasp;/*?計算縱橫比值*/
}
/*計算器函數*/
void?computer(void)
{
struct?viewporttype?vp;?/*定義視口類型變量*/
int?color,?height,?width;
int?x,?y,x0,y0,?i,?j,v,m,n,act,flag=1;
float?num1=0,num2=0,result;?/*操作數和計算結果變量*/
char?cnum[5],str2[20]={""},c,temp[20]={""};
char?str1[]="1230.456+-789*/Qc=^%";/*?定義字符串在按鈕圖形上顯示的符號?*/
mwindow(?"Calculator"?);?/*?顯示主窗口?*/
color?=?7;?/*設置灰顏色值*/
getviewsettings(?vp?);?/*?讀取當前窗口的大小*/
width=(vp.right+1)/10;?/*?設置按鈕寬度?*/
height=(vp.bottom-10)/10?;?/*設置按鈕高度?*/
x?=?width?/2;?/*設置x的坐標值*/
y?=?height/2;?/*設置y的坐標值*/
setfillstyle(SOLID_FILL,?color+3);
bar(?x+width*2,?y,?x+7*width,?y+height?);
/*畫一個二維矩形條顯示運算數和結果*/
setcolor(?color+3?);?/*設置淡綠顏色邊框線*/
rectangle(?x+width*2,?y,?x+7*width,?y+height?);
/*畫一個矩形邊框線*/
setcolor(RED);?/*設置顏色為紅色*/
outtextxy(x+3*width,y+height/2,"0.");?/*輸出字符串"0."*/
x?=2*width-width/2;?/*設置x的坐標值*/
y?=2*height+height/2;?/*設置y的坐標值*/
for(?j=0?;?j4?;?++j?)?/*畫按鈕*/
{
for(?i=0?;?i5?;?++i?)
{
setfillstyle(SOLID_FILL,?color);
setcolor(RED);
bar(?x,?y,?x+width,?y+height?);?/*畫一個矩形條*/
rectangle(?x,?y,?x+width,?y+height?);
sprintf(str2,"%c",str1[j*5+i]);
/*將字符保存到str2中*/
outtextxy(?x+(width/2),?y+height/2,?str2);
x?=x+width+?(width?/?2)?;?/*移動列坐標*/
}
y?+=(height/2)*3;?/*?移動行坐標*/
x?=2*width-width/2;?/*復位列坐標*/
}
x0=2*width;
y0=3*height;
x=x0;
y=y0;
gotoxy(x,y);?/*移動光標到x,y位置*/
arrow();?/*顯示光標*/
putimage(x,y,rar,XOR_PUT);
m=0;
n=0;
strcpy(str2,"");?/*設置str2為空串*/
while((v=specialkey())!=45)?/*當壓下Alt+x鍵結束程序,否則執行下面的循環*/
{
while((v=specialkey())!=ENTER)?/*當壓下鍵不是回車時*/
{
putimage(x,y,rar,XOR_PUT);?/*顯示光標圖象*/
if(v==RIGHT)?/*右移箭頭時新位置計算*/
if(x=x0+6*width)
/*如果右移,移到尾,則移動到最左邊字符位置*/
{
x=x0;
m=0;
}
else
{
x=x+width+width/2;
m++;
}?/*否則,右移到下一個字符位置*/
if(v==LEFT)?/*左移箭頭時新位置計算*/
if(x=x0)
{
x=x0+6*width;
m=4;
}?/*如果移到頭,再左移,則移動到最右邊字符位置*/
else
{
x=x-width-width/2;
m--;
}?/*否則,左移到前一個字符位置*/
if(v==UP)?/*上移箭頭時新位置計算*/
if(y=y0)
{
y=y0+4*height+height/2;
n=3;
}?/*如果移到頭,再上移,則移動到最下邊字符位置*/
else
{
y=y-height-height/2;
n--;
}?/*否則,移到上邊一個字符位置*/
if(v==DOWN)?/*下移箭頭時新位置計算*/
if(y=7*height)
{
y=y0;
n=0;
}?/*如果移到尾,再下移,則移動到最上邊字符位置*/
else
{
y=y+height+height/2;
n++;
}?/*否則,移到下邊一個字符位置*/
putimage(x,y,rar,XOR_PUT);?/*在新的位置顯示光標箭頭*/
}
c=str1[n*5+m];?/*將字符保存到變量c中*/
if(isdigit(c)||c=='.')?/*判斷是否是數字或小數點*/
{
if(flag==-1)?/*如果標志為-1,表明為負數*/
{
strcpy(str2,"-");?/*將負號連接到字符串中*/
flag=1;
}?/*將標志值恢復為1*/
sprintf(temp,"%c",c);?/*將字符保存到字符串變量temp中*/
strcat(str2,temp);?/*將temp中的字符串連接到str2中*/
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,str2);?/*顯示字符串*/
}
if(c=='+')
{
num1=atof(str2);?/*將第一個操作數轉換為浮點數*/
strcpy(str2,"");?/*將str2清空*/
act=1;?/*做計算加法標志值*/
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
if(c=='-')
{
if(strcmp(str2,"")==0)?/*如果str2為空,說明是負號,而不是減號*/
flag=-1;?/*設置負數標志*/
else
{
num1=atof(str2);?/*將第二個操作數轉換為浮點數*/
strcpy(str2,"");?/*將str2清空*/
act=2;?/*做計算減法標志值*/
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);?/*畫矩形*/
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
}
if(c=='*')
{
num1=atof(str2);?/*將第二個操作數轉換為浮點數*/
strcpy(str2,"");?/*將str2清空*/
act=3;?/*做計算乘法標志值*/
setfillstyle(SOLID_FILL,color+3);?bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
if(c=='/')
{
num1=atof(str2);?/*將第二個操作數轉換為浮點數*/
strcpy(str2,"");?/*將str2清空*/
act=4;?/*做計算除法標志值*/
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
if(c=='^')
{
num1=atof(str2);?/*將第二個操作數轉換為浮點數*/
strcpy(str2,"");?/*將str2清空*/
act=5;?/*做計算乘方標志值*/
setfillstyle(SOLID_FILL,color+3);?/*設置用淡綠色實體填充*/
bar(2*width+width/2,height/2,15*width/2,3*height/2);?/*畫矩形*/
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
if(c=='%')
{
num1=atof(str2);?/*將第二個操作數轉換為浮點數*/
strcpy(str2,"");?/*將str2清空*/
act=6;?/*做計算模運算乘方標志值*/
setfillstyle(SOLID_FILL,color+3);?/*設置用淡綠色實體填充*/
bar(2*width+width/2,height/2,15*width/2,3*height/2);?/*畫矩形*/
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
if(c=='=')
{
num2=atof(str2);?/*將第二個操作數轉換為浮點數*/
switch(act)?/*根據運算符號計算*/
{
case?1:result=num1+num2;break;?/*做加法*/
case?2:result=num1-num2;break;?/*做減法*/
case?3:result=num1*num2;break;?/*做乘法*/
case?4:result=num1/num2;break;?/*做除法*/
case?5:result=pow(num1,num2);break;?/*做x的y次方*/
case?6:result=fmod(num1,num2);break;?/*做模運算*/
}
setfillstyle(SOLID_FILL,color+3);?/*設置用淡綠色實體填充*/
bar(2*width+width/2,height/2,15*width/2,3*height/2);?/*覆蓋結果區*/
sprintf(temp,"%f",result);?/*將結果保存到temp中*/
outtextxy(5*width,height,temp);?/*顯示結果*/
}
if(c=='c')
{
num1=0;?/*將兩個操作數復位0,符號標志為1*/
num2=0;
flag=1;
strcpy(str2,"");?/*將str2清空*/
setfillstyle(SOLID_FILL,color+3);?/*設置用淡綠色實體填充*/
bar(2*width+width/2,height/2,15*width/2,3*height/2);?/*覆蓋結果區*/
outtextxy(5*width,height,"0.");?/*顯示字符串*/
}
if(c=='Q')exit(0);?/*如果選擇了q回車,結束計算程序*/
}
putimage(x,y,rar,XOR_PUT);?/*在退出之前消去光標箭頭*/
return;?/*返回*/
}
/*窗口函數*/
void?mwindow(?char?*header?)
{
int?height;
cleardevice();?/*?清除圖形屏幕?*/
setcolor(?MaxColors?-?1?);?/*?設置當前顏色為白色*/
setviewport(?20,?20,?MaxX/2,?MaxY/2,?1?);?/*?設置視口大小?*/
height?=?textheight(?"H"?);?/*?讀取基本文本大小?*/
settextstyle(?DEFAULT_FONT,?HORIZ_DIR,?1?);/*設置文本樣式*/
settextjustify(?CENTER_TEXT,?TOP_TEXT?);/*設置字符排列方式*/
outtextxy(?MaxX/4,?2,?header?);?/*輸出標題*/
setviewport(?20,20+height+4,?MaxX/2+4,?MaxY/2+20,?1?);?/*設置視口大小*/
drawboder();?/*畫邊框*/
}
void?drawboder(void)?/*畫邊框*/
{
struct?viewporttype?vp;?/*定義視口類型變量*/
setcolor(?MaxColors?-?1?);?/*設置當前顏色為白色?*/
setlinestyle(?SOLID_LINE,?0,?NORM_WIDTH?);/*設置畫線方式*/
getviewsettings(?vp?);/*將當前視口信息裝入vp所指的結構中*/
rectangle(?0,?0,?vp.right-vp.left,?vp.bottom-vp.top?);?/*畫矩形邊框*/
}
/*設計鼠標圖形函數*/
int?arrow()
{
int?size;
int?raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4};?/*定義多邊形坐標*/
setfillstyle(SOLID_FILL,2);?/*設置填充模式*/
fillpoly(8,raw);?/*畫出一光標箭頭*/
size=imagesize(4,4,16,16);?/*測試圖象大小*/
rar=malloc(size);?/*分配內存區域*/
getimage(4,4,16,16,rar);?/*存放光標箭頭圖象*/
putimage(4,4,rar,XOR_PUT);?/*消去光標箭頭圖象*/
return?0;
}
/*按鍵函數*/
int?specialkey(void)
{
int?key;
while(bioskey(1)==0);?/*等待鍵盤輸入*/
key=bioskey(0);?/*鍵盤輸入*/
key=key0xff??key0xff:key8;?/*只取特殊鍵的掃描值,其余為0*/
return(key);?/*返回鍵值*/
}
#include stdio.h
#include stdlib.h
//高精度計算s=1/n+1/(n+1)+1/(n+2)+……+1/m表達式的值
//求得的s是個分數,分子放在result[0]中,分母放在result[1]中
void func(double *result)
{
int m, n, i;
double *numerator; //分子
printf("Please input n and m (Separate by space and 0nm): \n");
while(scanf("%d%d", n, m))
{
if((0 n) (n m))
break;
printf("Value Invalid, please try again!\n");
printf("Please input n and m (Separate by space and 0nm): \n");
}
numerator = (double *)calloc(m, sizeof(double));
if(!numerator)
{
printf("malloc failed!\n");
exit(0);
}
result[1] = 1;
//下面兩個for循環是進行通分
for(i=n; i=m; i++)
result[1] *= i;
for(i=n; i=m; i++)
numerator[i-n] = result[1]/i;
result[0] = 0;
//對分母進行相加
for(i=n; i=m; i++)
result[0] += numerator[i-n];
for(i=n; im; i++)
printf("1/%d + ", i);
printf("1/%d = ", m);
free(numerator);
}
int main()
{
double result[2];
func(result);
printf("%g/%g\n", result[0], result[1]);
return 0;
}
//如果你還想對結果化為最簡分數的話,可以告訴我,我會改程序
#includestdio.h 聲明部分:源代碼含有2個文件
#includemalloc.h
typedef struct pnode // 定義指針//
{int coef; //定義系數//
int exp; //定義指數//
struct pnode *next;
}pnode;
pnode * creat() //creat函數用來存放多項式//
{int m,n;
pnode *head,*rear,*s;
head=(pnode *)malloc(sizeof(pnode));
rear=head;
printf("\n輸入指數(按遞增順序輸入):");
scanf("%d",m);
printf("輸入一元式系數(0為退出):");
scanf("%d",n);
do
{
s=(pnode *)malloc(sizeof(pnode));
s-coef=n; //n為系數//
s-exp=m; //m為指數//
rear-next=s;
s-next=NULL;
rear=s;
printf("\n輸入指數(按遞增順序輸入):");
scanf("%d",m);
printf("輸入一元式系數(0為退出):");
scanf("%d",n);
}while(n);
return head;
}
pnode * add(pnode *heada,pnode *headb)
{pnode *headc,*a,*b,*s,*rearc;
int sum;
a=heada-next;b=headb-next;
headc=(pnode *)malloc(sizeof(pnode));
rearc=headc;
//多項式的存放//都放到s中里//
while(a!=NULLb!=NULL) //指數相等,則系數相加。//
{
if(a-exp==b-exp)
{ sum=a-coef+b-coef;
if(sum)
{s=(pnode *)malloc(sizeof(pnode));
s-coef=sum;
s-exp=a-exp;
rearc-next=s;
rearc=s;
a=a-next;
b=b-next;}
else
{a=a-next;
b=b-next;
}
}
else if(a-expb-exp)
//a指數如果小于b,則a放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s-coef=a-coef;
s-exp=a-exp;
rearc-next=s;
//用下一個結點s取代下一個c//
rearc=s;
a=a-next;
}
else //如果a的指數大,則b放到s中//
{ s=(pnode *)malloc(sizeof(pnode));
s-coef=b-coef;
s-exp=b-exp;
rearc-next=s;
rearc=s;
b=b-next;
}
}
if(a)
{while(a!=NULL) //b空了放a中的項//
{s=(pnode *)malloc(sizeof(pnode));
s-coef=a-coef;
s-exp=a-exp;
rearc-next=s;
s-next=NULL;
rearc=s;
a=a-next;
}
}
else if(b)
{while(b!=NULL) //a空了放b中的項//
{s=(pnode *)malloc(sizeof(pnode));
s-coef=b-coef;
s-exp=b-exp;
rearc-next=s;
s-next=NULL;
rearc=s;
b=b-next;
}}
return headc;
}
void main()
{pnode *a,*b,*c;
printf("建立A:");
a=creat();
printf("\n建立B:");
b=creat();
c=add(a,b);
c=c-next;
printf("%dx^%d",c-coef,c-exp);
c=c-next;
while(c!=NULL)
{printf("+%dx^%d",c-coef,c-exp);
c=c-next;
}
}
兩種方法:
一、定義求根公式,根據a、b、c的值計算結果。
二、暴力枚舉,每隔 0.001 取一個值,當abs(f(x)-0) 0.00001 時視為得出結果。
網站標題:C語言簡單一元函數求值,用c語言求函數的值
網站路徑:http://www.yijiale78.com/article38/dsihjsp.html
成都網站建設公司_創新互聯,為您提供虛擬主機、響應式網站、網站收錄、網站制作、云服務器、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯