网站建设资讯

NEWS

网站建设资讯

c语言二元函数的根 求二元一次方程的根的C语言

C语言求二元一次方程的根

#include stdio.h

为岚皋等地区用户提供了全套网页设计制作服务,及岚皋网站建设行业解决方案。主营业务为成都做网站、网站设计、岚皋网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

#include math.h

#include malloc.h

void main()

{

double a,b,c;

double s;

double *e,*f;

void d(double a ,double b,double c,double s,double* e,double* f);

void de(double a ,double b,double c,double *e);

void x();

e=(double*)malloc(sizeof(double));

f=(double*)malloc(sizeof(double));

*e=0;

*f=0;

printf("Please input coefficient:\n");

scanf("%lf%lf%lf",a,b,c);

if(a==0)

{

if(b==0c==0)

printf("x is any number");

if(b==0c!=0)

x();

if(b!=0)

{

*e=-c/b;

printf("%lf",*e);

}

}

else

{

s=(b*b-4*a*c);

if(s0)

x();

else

{

s=sqrt(s);

printf("The equation is %lf x^2 + %f x + %f\n",a,b,c);

printf("s=%lf\n",s);

if(s0)

{

d(a,b,c,s,e,f);

printf("%lf\n",*e);

printf("%lf\n",*f);

}

else if(s==0)

{

de(a,b,c,e);

printf("%lf\n",*e);

}

}

}

}

void d(double a ,double b,double c,double s,double *e ,double *f)

{

double m,n;

m=-0.5*(b+s)/a;

n=-0.5*(b-s)/a;

*e=m;

*f=n;

}

void de(double a ,double b,double c,double *e)

{

double m;

m=-0.5*b/a;

*e=m;

}

void x()

{

printf("The equation has no root!\n");

}

这是改后正确的代码,以下是你代码的错误:

1.函数如果想在main中声明,不能在执行语句后声明。

2.当调用d(double a...)函数时,e和f作为参数穿过去只是他们的值,在函数内部对它们赋值是不能改变他们内存真正的值的。

3.if(s=0)是对s赋值使s=0,如果是判断应该是if(s==0)。

4.x函数中参数a、b、c没有用到,而且你已经把abc设为全局变量,就不需要把他们当成参数传递,所以我把所有变量都改为局部变量。

5.d函数的算法错误,应该是e=-(b+s)/2a;f=-(b-s)/2a;

6.你没有考虑当a=0,b=0,时的情况。

7.当b2-4ac0时,用sqrt开方就已经错误啦。

写的有些乱,见谅~

c语言求解2元一次方程根,我的全部是无解,求大神看是哪错了。

//问题有点多,不方便指出,更改如下,对应着看吧,调试过的,没问题;

#includestdio.h

#includemath.h //使用开方函数要引入这个头文件

void main()

{

float a,b,c,d,e,x1,x2,x;

//输入最好一个一个输入,一下子输入容易出毛病

printf("请输入a:\n");

scanf("%f",a);

printf("请输入b:\n");

scanf("%f",b);

printf("请输入c:\n");

scanf("%f",c);

d=b*b-4*a*c;

if (d0)

{

e=(float)sqrt(d);//使用开放函数得到的是double类型,比float级别高,要强转为float

x1=(-b+e)/(2*a);

x2=(-b-e)/(2*a);

printf("x1=%.2f,x2=%.2f",x1,x2);//输出保留两位小数

}

else if (d==0)

{

x=-b/(2*a);

printf("x=%.2f",x);

}

else

printf("无解");

printf("\n");

}

我的这个C语言编写的求解二元方程的两个根的程序有哪些错误?

这个问题在于,当判别式-1E-6(相当于判别式小于0),求共轭复数根时,你的x1和x2事先都是double类型(双精度浮点实数型),这个类型不能存储虚数。再加上rparti没有定义(因为系统会把rparti作为一个完整的标识符看待,所以你不能那样写)

我的建议,在求共轭复根时,x1和x2就不要再表示两个根了,分别用来代表实数部分和去掉虚数单位的虚数部分就行,然后用“字符串组合"的方式输出。在这种情况下,不要直接只写一条输出语句在最后(倒数第2行),而是在每个判别式的分支都写一次printf语句比较好。

具体说,就是在前面的if分支和else if分支都写上输出(倒数第二行的输出去掉),后面else分支写成

x1=-b/(2*a); x2=sqrt(-disc)/(2*a);

这里的x1和x2代表实数部分和虚数部分。

然后写如下的输出语句:

printf("x1=%lf+%lfi, x2=%lf-%lfi", x1,fabs(x2),x1,fabs(x2));

注意,虚数部分x2的符号要去掉(所以用了fabs函数),而是在字符串中写上+和-号,以形成共轭复数的形式

另外,这个程序当中a==0的情况你没有求解,而是显示了一行错误信息,所以,你的printf更不能放在倒数第二行了(这已经是所有分支的外面了),原因是a==0的时候x1和x2从未赋值

c语言:求二次函数ax^2+bx+c=0的根

#include stdio.h

#include math.h

void main()

{    

float a,b,c,x1,x2,p,q,disc;    

printf("input a,b,c\n");    

scanf("a=%f,b=%f,c=%f",a,b,c);    

disc=b*b-4*a*c;

if (disc0)

{

printf("没根\n");

}

else

{

p=-b/(2*a);    

q=sqrt(disc)/(2*a);    

x1=p+q;    

x2=p-q;    

printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);

}

}

你输入的那个方程根本就没有根,这个你需要加一个判断条件,这样才能正确处理求根公式

用C语言求二元一次方程的根

# include stdio.h

# include math.h

int main(void)

{

double a, b, c;

double delta;

double x1, x2;

char ch;

do

{

printf("请输入一元二次方程的三个系数:\n");

printf("a = ");

scanf("%lf", a);

printf("b = ");

scanf("%lf", b);

printf("c = ");

scanf("%lf", c);

delta = b*b - 4*a*c;

if (delta 0)

{

x1 = (-b + sqrt(delta)) / (2*a);

x2 = (-b - sqrt(delta)) / (2*a);

printf("有两个解,x1 = %lf, x2 = %lf\n", x1, x2);

}

else if (0 == delta)

{

x1 = x2 = (-b) / (2*a);

printf("有唯一解,x1 = x2 = %lf\n", x1, x2);

}

else

{

printf("无实数解!\n");

}

printf("您想继续么(Y/N): ");

scanf(" %c", ch); //%c前面必须得加一个空格 原因略

} while ('y'==ch || 'Y'==ch);

return 0;

}

希望可以帮到你,如果满意请采纳!

c语言求二次函数的根

#include stdio.h

int main(void)

{

double a,b,c,d,e;

double x1,x2;

printf("请输入ax^2+bx +c = 0中a,b,c的值");

scanf("%lf,%lf,%lf",a,b,c);

e = b * b - 4 * a * c;

if (e0) {

printf("无解,请重新输入\n");

scanf("%lf,%lf,%lf",a,b,c);

}

printf("输入正确,正在计算....\n");

d = sqrt(e);

x1 = (-b + d)/(2 * a);

x2 = (-b - d)/(2 * a);

printf("x1=%f\n",x1);

printf("x2=%f\n",x2);

return 0;

}


文章题目:c语言二元函数的根 求二元一次方程的根的C语言
当前网址:http://njwzjz.com/article/hjjdhc.html