c语言编程,求多组一元二次方程组,这样的问题在哪里呢

来源:百度知道 编辑:UC知道 时间:2024/06/11 01:20:27
#include <stdio.h>
#include <math.h>
struct root {float a,b,c;};
void main()
{root a[10];int i;void get_rt(root,flag);
for(i=0;i<10;i++)
while(a!=0&&b!=0&&c!=0){scanf("%f%f%f",&a[i].a,&a[i].b,&a[i].c);}
get_root ( a, b, c);
if (flag=1) {printf("x1=%f x2=%f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));};
if (flag=-1) {printf("x1=%f+%fi x2=%f-%fi",-b/(2*a),sqrt(-d)/(2*a),-b/(2*a),sqrt(-d)/(2*a));};
}
}
void get_root(root x,int flag)
{float d;
d=(x.b)*(x.b)-4*(x.c)*(x.a);
if(d>=0)flag=1;
if(d<0)flag=-1;

楼主,你的基础打得不太好,加油
指出几个方面的错误:
1.main()函数中,d,flag等没有定义,必须定义才能使用
2.函数的返回值,变量作用域那里要好好看看
3.结构体成员a,b,c,必须写成a[i].a,a[i].b,a[i].c才能引用
4.一些细节,比如if(flag=1),是不对的,应该是if(flag==1)
我将你的程序改了一下,某些地方删除了,结束输入的方法是输入3个0
你对比一下,祝你进步~
-----------------------------------------------------
#include <stdio.h>
#include <math.h>
struct root
{
float a,b,c;
};
float get_root(struct root,int *flag);
void main()
{
root a[10];
int i,flag;
float d;

for(i=0;i<10;i++)
{
scanf("%f%f%f",&a[i].a,&a[i].b,&a[i].c);
if(!a[i].a&&!a[i].b&&!a[i].c)
break;
d=get_root(a[i],&flag);
if (flag==1)
{
printf("x1=%.2f x2=%.2f\n",(-a[i].b+sqrt(d))/(2*a[i].a),(-a[i].b-sqrt(d))/(2*a[i].a));
}
if (flag==-1) {
printf("x1=%.2f+%.2fi x2=%.2f-%.2fi\n",-a[i].b/(2*a[i].a),sqrt(-d)/(2*a[i].a),