一元二次方程編程
⑴ c語言,求一元二次方程的解
對於如下的一元二次方程:
ax*x+bx+c=0
設計C語言程序,輸入一元二次方程的三個系數a、b、c,求解出該方程的兩個根,並且允許用戶在程序中多次輸入不同的系數,以求解不同的一元二次方程的解。
編程思路分析:
對於該方程,令delta=b^2-4*a*c,從數學的角度來講,我們需要根據delta的值來判斷該方程的根情況:
當delta>=0時,其兩個根為實數解,分別為(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);
當delta<0時,其兩個根為復數解,實部皆為-b/(2*a),虛部分別為sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。
其中,sqrt(delta)代表對delta作開根號運算。
在代碼設計中,可定義一個結構體Complex存儲該方程的根,在該結構體中包括實部和虛部兩個變
在程序中,定義兩個Complex類型的根x1和x2,當delta>=0時,兩個根的虛部為0,否則,分別求解兩個根的虛部值。
具體編程如下:
#include"stdio.h"
#include"math.h"
/*求一元二次方程ax*x+bx+c=0的解*/
main()
{floata,b,c,x1,x2,d;
printf("請輸入a:");
scanf("%f",&a);
printf("請輸入b:");
scanf("%f",&b);
printf("請輸入c:");
scanf("%f",&c);
d=b*b-4*a*c;if(d<0)
printf("方程沒有實數解。
");
if(d==0){x1=(-b)/(2*a);
printf("x1=%f
",x1);}
if(d>0){x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f
",x1,x2);}}
請輸入a:12
請輸入b:34
請輸入c:4
x1=-0.122985,x2=-2.710348
Pressanykeytocontinue
為迭代序列。
⑵ C語言編程,求一元二次方程 ax2+bx+c=0 的解,謝謝
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
for (int i=0;i<2;i++)
{
double a,b,c,delta,p,q;
cin>>a>>b>>c;
delta=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(fabs(delta))/(2*a);
if (delta>=0)
cout<<p+q<<endl<<p-q<<endl;
else
{
cout<<p<<"+j"<<q;
cout<<endl<<p<<"-j"<<q<<endl;
}
}
return 0;
}
(2)一元二次方程編程擴展閱讀:
return表示從被調函數返回到主調函數繼續執行,返回時可附帶一個返回值,由return後面的參數指定。return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。
如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
如果函數名前有返回類型定義,如int,double等就必須有返回值,而如果是void型,則可以不寫return,但這時即使寫了也無法返回數值。
⑶ 編程實現求一元二次方程的解。有圖看圖答題,謝謝各位大神!
代碼實現如下: 輸入的時候按照1 2 1類似的格式輸入,分別代表二次一次零次項的系數
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,delt,x1,x2;
printf("輸入方程的三個系數:");
scanf("%f%f%f",&a,&b,&c);
delt = b*b-4*a*c;
if(delt>=0) {
x1 = (-b+sqrt(delt))/(2*a);
x2 = (-b-sqrt(delt))/(2*a);
printf("方程的解分別為:x1=%.2f x2=%.2f \n",x1,x2);
}
else {
printf("方程無實根\n");
}
return 0;
}
⑷ C語言編程 求一元二次方程的解
#include <stdio.h>
#include <math.h>/*用到數學函數時要把這個包含進來*/
int main(void)
{
int a,b,c;
double X,X1,X2;
printf("Input a:");
scanf("%d",&a); /*%f改成%d*/
printf("Input b:");
scanf("%d",&b); /*%f改成%d*/
printf("Input c:");
scanf("%d",&c); /*%f改成%d*/
if (a==0) /*=改成==*/
printf("該方程不是一元二次方程");
else if ((b*b-4*a*c)<0)
printf("該方程無解");
else if ((b*b-4*a*c)==0)/*應該是先判斷後計算*/
{
X=(double)(-b/(2*a));
printf("X= %lf",X);)/*double的格式輸出符對應是%lf*/
}
else if ((b*b-4*a*c)>0)
{
X1=(double)((-b+sqrt(b*b-4*a*c))/(2*a));
X2=(double)((-b-sqrt(b*b-4*a*c))/(2*a));
printf("X1=%lf, X2=%lf",X1,X2);
}
getch();
return 0;
}
⑸ 編程編寫一個程序求一元二次方程的解
第二題:
#include<iostream.h>
void main()
{
int i,g,s,b;
for(i=100;i<1000;i++)
{
g=i%100;
b=i/100; //百位數
s=g/10; //十位數
g=g%10; //個位數
if(g*g+s*s+b*b==99)
cout<<i<<endl;
}
}
第三題:
#include <iostream>
using namespace std;
int main()
{
int i,j,maxi,maxj,mini,minj,max,min;
int a[2][3];
cout<<"請輸入6個整數作為矩陣元素"<<endl;
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
cin>>a[i][j];
};
maxi=maxj=mini=minj=0;
max=a[maxi][maxj];min=a[mini][minj];
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
if(max<a[i][j])
{
max=a[i][j];
maxi=i;maxj=j;
};
}
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
if(min>a[i][j])
{
min=a[i][j];
mini=i;minj=j;
}
}
cout<<"矩陣中最大值為"<<max<<"\n"<<"其位置位於a["<<maxi<<"]["<<maxj<<"]"<<endl;
cout<<"矩陣中最小值為"<<min<<"\n"<<"其位置位於a["<<mini<<"]["<<minj<<"]"<<endl;
return 0;
}
第四題:
#include<stdio.h>
viod main()
{
int sum=0,a[3][3];
printf("輸入數據:\n");
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
printf("\n");
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
sum+=a[i][j];
printf("%d\n",sum);
}
第五題:
#include <iostream> using namespace std; double a(int m) { double n=1; for (int i=1;i<=m;i++) n=n*i; return n; } int main() { int t; double y=1; for(t=1;(1.0/a(t))>=1e-6;t++) { if(t%2==0) y=y-(1.0/a(t)); else y=y+(1.0/a(t)); } cout<<"y=1+1/1!-1/2!+1/3!-1/4!+......="<<y<<endl; return 0; }
⑹ c語言一元二次方程編程是怎麼樣的
c語言一元二次方程編程是#include<iostream> 。#include<cmath>。usingnamespacestd。intmain()。{floata,b,c;floatx1,x2; cin>a>>b>>c;floatdlt=b*b-4*a*c;if(dlt>=0){x1=-b/2/a+sqrt(dlt)。/2/ax2=-b/2/a-sqrt(dlt)/2/a。
形如x=p或(nx+m)=p(p≥0)的一元二次方程可採用直接開平方的方法解一元二次方程.如果方程化成x²=p的形式,那麼可得x=±p;(x²=p,x=±根號p)如果方程能化成(nx+m)=p(p≥0)的形式,那麼nx+m=±p。
簡潔的語言:
C語言包含的各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。
實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
提供的控制語句具有結構化特徵,如for語句、if...else語句和switch語句等。可以用於實現函數的邏輯控制,方便麵向過程的程序設計。
⑺ 怎樣用C語言編一個解一元二次方程的程序(可以看步驟)!
#include <stdio.h>
#include <math.h>
int main(void)
{
int a, b, c; //定義一元二次方程的三個數值;
printf("請依次輸入一元二次方程的三個參數a b c,中間以空格隔開\n");
scanf("%d %d %d", &a, &b, &c); //依次輸入一元二次方程的三個參數
double delta = b*b - 4*a*c; //定義delta的值為b*b - 4*a*c
double x1 = (-b + sqrt(delta))/(2 * a);
double x2 = (-b - sqrt(delta))/(2 * a);
if (delta>0) //delta大於0時,方程有兩個解
{
printf("一元二次方程有兩個解\n");
printf("一元二次方程的第一個解,x1 = %f\n",x1);
printf("一元二次方程的第二個解,x2 = %f\n",x2);
}
else if (delta ==0) //delta等於0,方程有兩個相同的解
{
printf("一元二次方程有兩個相同的解\n");
printf("一元二次方程的解為x1 = x2 =%f\n",x1);
}
else //delta小於0時,方程沒有解
{
printf("一元二次方程沒有解\n");
}
return 0;
}