c语言函数求一元二次方程 c语言编程求一元二次方程

c语言编写一元2次方程 。程序想法没错c语言函数求一元二次方程,但设计的时候有点失误 。
void
main()
{
float
a=0,b=0,c=0,d=0,x1=0,x2=0,e=0;/*定义变量*/
printf("axe2 bx c=0,(a,b,c):\n");/*提示输入3个数*/
scanf("%f,%f,%f",a,b,c);/*输入的时候用float型
*/
e=sqrt(d);/*根号d
*/
x1=(-b e)/(2*a);/*计算方程c语言函数求一元二次方程,公式有点不点,逻辑*/
x2=(-b-e)/(2*a);/*计算方程*/
printf("\n
positive:\n
x1=%f,\n
negative:\nx2=%f",x1,x2);/*输出x1
x2,输出的时候也要用float型*/
}
else
printf("equation");/*方程无解*/
getch();
}
//经修改 , 可以正常运行 ,
还有建议下,你就在定义变量的时候不要一大串一起定义类型,
有时候变量的类型是不无法隐型转换的,就会出错 。
就像程序里面的,开根号又不一定都开出个整数,大多都是带小数的,就应该定义成float型,
最后的解也会直接化成带小数的,要是你用long(长整型 , 也是整型的一种),
那小数点后面就将被程序自动省略,那问题可就大c语言函数求一元二次方程了,呵呵 , 。
还在做为printf输出的时候,要给点提示,不然人家也不知道 , 这a,b,c是干嘛用的 。
c语言怎么求解一元二次方程c语言一元二次方程编程是#include iostream。#include cmath 。using namespace std 。int main() 。{float a,b,c;float x1,x2; cinabc;float dlt=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)的一元二次方程可采用直接开平方的方法解一元二次方程.如果方程化成x2=p的形式,那么可得x=±p;(x2=p,x=±根号p)如果方程能化成(nx m)=p(p≥0)的形式 , 那么nx m=±p 。
简洁的语言:
【c语言函数求一元二次方程 c语言编程求一元二次方程】C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简 。
实际上 , 语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能 , 需要通过配合编译系统所支持的各类库进行编程 , 故c语言拥有非常简洁的编译系统 。
提供的控制语句具有结构化特征,如for语句、if...else语句和switch语句等 。可以用于实现函数的逻辑控制 , 方便面向过程的程序设计 。
c语言一元二次方程求根程序c语言一元二次方程求根程序:
手动输入三个系数,分别代表二次项系数、一次项系数、常数项 。
判断输入的二次项系数是否为0,如果为0,提示“输入的第一个值不合法,请重新输入!” 。
如果二次项系数不为0,利用根的判别式,计算一元二次方程是否有根 。
如果判别式 Δ = 0 ,代表方程有两个根,输出根 。
如果 Δ0 ,提示“方程无根” 。
c语言一元二次方程求根程序算法的构思过程:
一元二次方程的一般式:ax^2 bx c=0 。
我们知道,一元二次方程有解(根)的充要条件是:b^2-4ac=0 。如果不满足此关系式,那么方程无解 。接着当方程有解的时候又出现了两种情况 。
有两个重根(大小相等的根)或者两个大小不等的根,为了是程序更加完善还要考虑到a =0的情况 , 即此时不能看做一元二次方程而只能将其看作一元一次方程,本程序运用求根公式来实现功能 。
c语言求解一元二次方程#includestdio.h
#includemath.h
int main()
{int a,b,c;
float x,x1,x2,d;
scanf("%d%d%d",a,b,c);
d=b*b-4*a*c;
if(a==0)
{if(b==0)
{
printf("Input error!\n");}
else
printf("x=%.6f",-c/(float)b);//转为float类型 。
}
else
{
if(d0)
{x1=(-b sqrt(-d))/(2*a);
x2=(-b-sqrt(-d))/(2*a);
printf("x1=%.6f %.6fi\nx2=%.6f-%.6fi\n",(float)(-b)/(2*a),sqrt(-d)/(2*a),(float)(-b)/(2*a),sqrt(-d)/(2*a));}//这里少了一个(-b)另外两个int操作转为float
else if(d==0)
{printf("x1=x2=%.6f\n",(-b)/(2.0*a));}//缺));
else
{
x1=(-b sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.6f\nx2=%.6f",x1,x2);
}
}
}
C语言一元二次方程求解#include stdio.h
#include math.h
void main()
{
float a,b,c,x,x1,x2;//应该为浮点数 。
printf("请输入:");
scanf("%f%f%f",a,b,c);//1,输入一起改为浮点数个数输入 。2 , 输入最好别用非空格符','不然将限制你输入格式 。
a*x*x b*x c==0;//不应该赋值运算符 。
if(a==0)
printf("此方程不是二次方程\n");//没有格式输出符就不应该有参数 。
else if(b*b-4*a*c==0)
printf("此方程有两相等实根,根为:%f.\n",x=b/(2*a));//有参数应该有格式输出符 。
else if(b*b-4*a*c0)
printf("此方程有两不相等实根,根为:%f,%f.\n",x1=(-b sqrt(b*b-4*a*c))/(2*a),x2=(-b-sqrt(b*b-4*a*c))/(2*a));//同上
else if(b*b-4*a*c0)
printf("此方程有两共轭复根,实部:%f,虚部:%f.\n",-b/(2*a),sqrt(-(b*b-4*a*c))/(2*a));//1 , 同上 。2,参数应为表达式 。
}
如果还有其他的错,那就是算法的错了 。
c语言解一元二次方程多出一句“请正确输入 , 谢谢合作!”与“是否正确?(是y\否n)”的原因:
注意一下scanf,scanf并不是像通常所误解的,认为是直接读取用户的当前输入为输入值 。
而是读取当前键盘缓冲区中的数据为本次输入值 。
所以如果当前的键盘缓冲区内仍有数据,那么就不会接受当前的用户输入值 。
在这个程序中,
由于键盘缓冲区内仍有用户上次输入数据时所残留的回车符(也就是输入a,b,c时最后敲的回车),
所以scanf("%c",z); 这一句就将键盘缓冲区中的回车读入,作为z值了 。
所以判断失败,多出一句“请正确输入,谢谢合作!”与“是否正确?(是y\否n)” 。
改正办法:
在每句scanf前,加上强制清空键盘缓冲区的处理fflush(stdin);,以保证接收的数据的正确性 。
这也是一个好的编程习惯 。
改过以后的程序:
#include "stdio.h"
#include "math.h"
void main()
{
printf("求方程ax^2 bx c=0的根:\n");
L: printf("请分别输入a,b,c的值 。\n");
double a,b,c,x1,x2,x,y;
char z;
printf("a=");
fflush(stdin); //强制清空键盘缓冲区
scanf("%lf",a);
printf("b=");
fflush(stdin); //强制清空键盘缓冲区
scanf("%lf",b);
printf("c=");
fflush(stdin); //强制清空键盘缓冲区
scanf("%lf",c);
printf("你所输入的方程为%lfx^2 %lfx %lf=0 。\n",a,b,c);
M: printf("是否正确?(是y\否n)\n");
fflush(stdin); //强制清空键盘缓冲区
scanf("%c",z);
if (z=='n')
goto L;
else if (z=='y')
{
if ((b*b-4*a*c)0)
x1=(-b sqrt(b*b-4*a*c))/(2*a),
x2=(-b-sqrt(b*b-4*a*c))/(2*a),
printf("有两个不同的实根:\nx1=%lf\nx2=%lf\n",x1,x2),
printf("\n");
if ((b*b-4*a*c)==0)
x1=-b/(2*a),
printf("有两个相同的实根:\nx1=x2=%lf\n",x1),
printf("\n");
if ((b*b-4*a*c)0)
x=-b/(2*a),
y=sqrt(4*a*c-b*b)/(2*a),
printf("有两表个不同的曾根:\nx1=%lf %lfi\nx2=%lf-%lfi\n",x,y,x,y),
printf("\n");
goto L ;
}
else printf("请正确输入 , 谢谢合作!\n");
goto M;
}
关于c语言函数求一元二次方程和c语言编程求一元二次方程的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读