编写c语⾔程序解⼀元⼀次⽅程,⼀元⽅程计算器1.0的代码(C
语⾔实现)
该计算器的代码由本⼈独⽴创作,如有错误及需要改进的地⽅,恳请指正,不胜感激。
⼀、基础知识
1.⼀元⼀次⽅程
1.1 基本形式
ax + b = 0(其中a≠0)
1.2 求解⽅法
⼀元⼀次⽅程的求解⽐较简单,只需移项、系数化为⼀即可,则⼀元⼀次⽅程的解为
x = -b / a
2.⼀元⼆次⽅程
2.1 基本形式
ax^2 + bx + c = 0(其中a≠0)
2.2 求解⽅法
⼀元⼆次⽅程的求解⽅法较多,这⾥为了编程的⽅便,运⽤求根公式法,⽅法如下:
(1)把Δ=
b^2 -4ac 叫做⼀元⼆次⽅程ax^2
+ bx + c = 0(其中a≠0)的根的判别式。
(2)⽤求根公式解⼀元⼆次⽅程的⽅法叫做求根公式法。
(3)⽤求根公式法解⼀元⼆次⽅程的⼀般步骤为:
①把⽅程化成⼀般形式,进⽽确定a,b,c的值(注意符号);
②求出Δ=
b^2 -4ac的值(若Δ<0,则⽅程⽆实数根;若Δ>0,则⽅程有两个不相等的实数根;若Δ=0,则⽅程有两个相等实数根);
③在Δ=
b^2 -4ac>=0的前提下,把a、b、c的值代⼊公式进⾏计算求出⽅程的根。
注意:⽤求根公式法解⼀元⼆次⽅程的前提条件有两个:①a≠0;
②Δ⼤于等于0
⼀元⼆次⽅程的求根公式:
利⽤⼀元⼆次⽅程根的判别式(△=b-4ac)判断⽅程的根的情况。
⼀元⼆次⽅程ax^2
+ bx + c = 0(其中a≠0)的根与△=b-4ac有如下关系:
①当Δ>0时,⽅程有两个不相等的实数根;
②当Δ=0时,⽅程有两个相等的实数根;
③当Δ<0时,⽅程⽆实数根。
上述结论反过来也成⽴。
3.⼀元三次⽅程
3.1 基本形式
ax^3 + bx^2 + cx +d =0(其中a≠0)
3.2 求解⽅法
为了编程的⽅便,这⾥只叙述盛⾦求根法:
(1)盛⾦定理:
当b=0,c=0时,盛⾦公式1⽆意义;当A=0时,盛⾦公式3⽆意义;当A≤0时,盛⾦公式4⽆意义;当T1时,盛⾦公式4⽆意义。
当b=0,c=0时,盛⾦公式1是否成⽴?盛⾦公式3与盛⾦公式4是否存在A≤0的值?盛⾦公式4是否存在T1的值?盛⾦定理给出如下回答:
盛⾦定理1:当A=B=0时,若b=0,则必定有c=d=0(此时,⽅程有⼀个三重实根0,盛⾦公式1仍成⽴)。盛⾦定理2:当A=B=0时,若b≠0,则必定有c≠0(此时,适⽤盛⾦公式1解题)。
盛⾦定理3:当A=B=0时,则必定有C=0(此时,适⽤盛⾦公式1解题)。
盛⾦定理4:当A=0时,若B≠0,则必定有Δ>0(此时,适⽤盛⾦公式2解题)。
盛⾦定理5:当A<0时,则必定有Δ>0(此时,适⽤盛⾦公式2解题)。
盛⾦定理6:当Δ=0时,若A=0,则必定有B=0(此时,适⽤盛⾦公式1解题)。
盛⾦定理7:当Δ=0时,若B≠0,盛⾦公式3⼀定不存在A≤0的值(此时,适⽤盛⾦公式3解题)。
盛⾦定理8:当Δ<0时,盛⾦公式4⼀定不存在A≤0的值。(此时,适⽤盛⾦公式4解题)。
盛⾦定理9:当Δ<0时,盛⾦公式4⼀定不存在T≤-1或T≥1的值,即T出现的值必定是-1<T<1。
显然,当A≤0时,都有相应的盛⾦公式解题。
注意:盛⾦定理逆之不⼀定成⽴。如:当Δ>0时,不⼀定有A<0。
盛⾦定理表明:盛⾦公式始终保持有意义。任意实系数的⼀元三次⽅程都可以运⽤盛⾦公式直观求解。(2)利⽤盛⾦定理进⾏计算:(图⽚来⾃百度百科)
4.⼀元四次⽅程
4.1 基本形式
ax^4 + bx^3 +cx^2 + dx + e = 0(其中a≠0)
4.2 求解⽅法
为了编程的⽅便,这⾥只叙述置换解法与盛⾦公式综合求根:(图⽚来⾃百度百科)
⼆、源代码
//整体架构
#include
#include
void fun1();  //定义“⼀元⼀次⽅程”的函数
void fun2();  //定义“⼀元⼆次⽅程”的函数
void fun3(); //定义“⼀元三次⽅程”的函数
void fun4();  //定义“⼀元四次⽅程”的函数
int main(void)
{
char sel;
//初始化界⾯设计
printf("  ⼀元⽅程计算器1.0\n");
printf("\n\n");
printf("选择你要计算的⽅程:\n");
printf("a.⼀元⼀次⽅程(ax + b = 0, a !=0)\n");
printf("b.⼀元⼆次⽅程(ax^2 + bx + c = 0, a != 0)\n");
printf("c.⼀元三次⽅程(ax^3 + bx^2 + cx + d = 0, a != 0)\n");
printf("d.⼀元四次⽅程(ax^4 + bx^3 + cx^2 + dx + e = 0, a != 0)\n"); printf("你的选择是(a,b,c,d中的⼀个):");
//对所选择的⽅程输⼊数值并计算
while( scanf("%c", &sel) != 0 )
{
if( sel == 'a' )
{
fun1();
printf("\n\n");
}
else if( sel == 'b')
{
fun2();
printf("\n\n");
}
else if( sel == 'c')
{
fun3();
printf("\n\n");
}
else if( sel == 'd')
{
fun4();
printf("\n\n");
}
else{
printf("看清楚选项!你个逗逼!\n");
printf("再选⼀次:");
continue;
}
printf("需要继续计算⽅程吗?\n");
printf("如果需要,通过输⼊a,b,c,d选择⽅程计算;\n"); printf("如果不需要,按“关闭”退出。\n");
printf("你的选择是:");
scanf("%c", &sel);
}
return 0;
}
//“⼀元⼀次⽅程”的函数
void fun1()
{
float a, b;
printf("请输⼊⽅程的系数\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("该⼀元⼀次⽅程的解为:x = %.3f\n", -b/a);
}
//“⼀元⼆次⽅程”的函数
void fun2()
{
float a, b, c;
double delta;
double x1, x2;
printf("请输⼊⽅程的系数:\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
delta = b * b - 4 * a * c;
if( delta > 0 )
{
x1 = ( -b - sqrt(delta) ) / ( 2 * a );
x2 = ( -b - sqrt(delta) ) / ( 2 * a );
printf("⽅程有两个解:x1 = %.3lf, x2 = %.3lf\n", x1, x2); }
else if( delta == 0 )
{
x1 = -b / ( 2 * a );
printf("⽅程有唯⼀解:x1 = x2 = %.3lf\n", x1);
}
else
printf("⽅程⽆实数根\n");
}
//“⼀元三次⽅程”的函数
void fun3()
{
明解c语言
float a, b, c, d;  //存放三元⼀次⽅程的系数
double A, B, C, delta;  //存放判别式
double x1, x2, x3;  //存放⽅程的根
double Y1, Y2, X, T;  //存放中间变量

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。