编程编写一个程序求一元二次方程的解

编程编写一个程序求一元二次方程的解,第1张

第二题:

#include<iostreamh>

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(gg+ss+bb==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<stdioh>

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=ni; return n; } int main() { int t; double y=1; for(t=1;(10/a(t))>=1e-6;t++) { if(t%2==0) y=y-(10/a(t)); else y=y+(10/a(t)); } cout<<"y=1+1/1!-1/2!+1/3!-1/4!+="<<y<<endl; return 0; }

求三元一次方程的程序:方法一:1、用代入法(或加减代入)消元法把三元一次方程组转化成二元一次方程组。2、相理在把二元一次方程组再转化成一元一次方程进行求值。3、然后再分别用代入法求出其它两个未知数的解。

方法二:用线性代数法(行列式法)求解。

假设的情况:

输入没有错误;

x 总是在前面,y 总是在后面;

不存在某个变量系数为 0 的情况(即总是二元方程);

不考虑小数,其实考虑小数也简单,你可以自己思考如何实现。

首先,使用 scanf() 将回车之前的整个字符串扫描进来,放进 str 变量中;

之后,分别以 x y = 为界,找到它们分隔的三个字符串,即从 str 的第一位开始循环,当遇到 'x' 时,停止并将之前的所有字符存到 x 的系数字符串 xStr 中,再从 x 之后开始寻找,遇到 'y' 时将找到的 'x' 与 'y' 之间的字符存到 y 的系数字符串 yStr 中,再向后从 '=' 开始直到结束,存为结果字符串 sumStr。

这样,我们得到的三个字符串都具有相同的格式,一定可以通过某种方式将其转换为一个数字,使用同一个函数就可以做到。

对于某个字符串来说,它可能是以负号 '-' 开头,也可能以正号开头 '+',也可能没有符号,也可能为空,分别考虑:以负号开头的,将其作为负数,以正号开头或没有符号的,将其作为正数;为空的字符串将其视为 1。

截取符号之后,如果没有剩余字符了,将其视为 1,再与符号相乘,就是最终结果。

如果还有剩余,那么之后的字符都是纯数字了(不考虑小数),从字符串的最后一位往前开始循环,下标记为 i(从0开始一直到最前面的数字位数),每一位字符记为 ch,则 n=(int)(ch-'0') 就是当前字符所代表的数字,用 npow(10, i) 就得到了当前数字的实际值,把所有的乘积都加起来,就得到了总的系数的绝对值,再乘以符号,就得到了系数值。

实现了这个部分之后,假设的情况也可以一一实现了,无非就是标记归属的问题。我没有贴代码是因为我看到你问的问题非常认真,我希望你可以通过我的描述自己去实现它。这里用到了一些字符串相关的函数,例如 strlen(str) 可以获得 str 字符串的长度,strncpy(dest, src, 3) 可以将 src 字符串的前三位拷贝到 dest 字符串中,strncpy(dest, src+3, 3) 可以将 src 字符串的 4~7 位拷贝到 dest 字符串中。

材料/工具

MATLAB R2017b

解一元方程

1

解一元方程:首先打开MATLAB R2017b(如下图

2

在“command Window”下直接输入需要解决的方程的公式如:x=solve('x^2+2x+1=0','x'),该公式是用于求方程“x^2+2x+1=0”的解(如下图)

3

接着点击回车键后即可查看该方程的解(如下图)

END

解二元方程

1

解二元一次方程:同样在“command window”下直接输入需要求解方程的公式,因为二元方程有两个未知变量,所以解二元方程的公式如下例:[x,y]=solve('5x+8y=10','3x+14y=12','x','y')(如下图)

2

方程之间还需要用“逗号”隔开(如下图)

3

点击回车键即可查看方程的解(如下图)

4

解二元多次方程:方法与求解二元一次一样,都是输入需要求解方程的公式,但是获取方程的解时,有所不同,如求解方程x^2+y^2=1,x+y=1,输入公式[x,y]=solve('x^2+y^2=1','x+y=1','x','y')(如下图)

5

点击回车键查看方程的解,这种非线性方程的解,一般有多个,上面公式的解也可以表示一个圆心在原点,半径为1的圆,与直线“x+y=1”的交点(如下图)

END

解多元方程

1

解多元方程:求多元方程的解,方法与求解其他方程类似,只需要添加相应的变量值就行,比如求解一个三元方程:x+y+z=10,x+y-2z=5,3x-y+z=2的解,同样在“command Window”界面下输入公式:[x,y,z]=solve('x+y+z=10','x+y-2z=5','3x-y+z=2','x','y','z')(如下图)

2

然后点击回车键即可查看方程的解(如下图)

需要写下它的方程式:

ax+by=m

cx+dy=n

可以求得x,y的通解

x=(md-bn)/(ad-bc)

y=(mc-an)/(bc-ad)

#include<iostream>,#include<cmath>,usingnamespacestd,intmain()。

2{doublea,b,c,root1,root2;cout<<"请输入一元二次方程的系数(a,b,c)

3<<endl;cin>>a>>b>>c;if(a==0)//判断系数a是否为0{cout<<"不是一个一元二次方程”<<endl;return-1;}。

4doublet=bb-4ac;if(t<0)//判断议程是否有实根{cout<<"方程没有实根"<<endl;

return-1;}。

5if(t==0)//判断议程是否有等根root1=root2=-b/(2a);else{root1=(-b+sqrt(t))/(2a);root2=(-b-sqrt(t))/(2a);}。

6cout<<"方程的根为:"<<root1<<"和"<<root2<<endl;return0;}。

以上就是关于编程编写一个程序求一元二次方程的解全部的内容,包括:编程编写一个程序求一元二次方程的解、求解三元一次方程程序、用C语言编写解二元一次方程的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9278798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存