求助:我的程序哪里有问题 急!!

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:39:26
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,x,x1,x2,da,xs,xx1,xx2;
int s,q;

state_0:scanf("a=%f\n",&a);
if (a==0)
{
printf("a为零\n");
printf("请选择:\n1.重新输入\n2.计算一次方程\n");
scanf("%d\n",&s);
switch(s)
{
case 1:goto state_0;break;
case 2:goto state_1;break;
}
}
else
{
goto state_2;
}

state_1:scanf("b=%f\n"),&b;
if (b==0)
{
printf("b不能为零");
goto state_1;
}
else
{
scanf("c=%f\n",&c);
x=-c/b;
q=1;
goto state_3;
}

state_2:scanf("%b=f\n c=%f\n",&b,&c);
da=b*b-4*a*c;
if(da>0)
{
x1=(-b+sqrt(da))/(2*a);
x2=(-b-sqrt(da))/(2*

scanf() 不能那样用
scanf("a=%f\n",&a);
改为
scanf("%f\n",&a);

你闹那
一个计算一元二次方程的题弄这么长
还用那么多GOTO语句
没悬赏
不给你看了
眼睛花

不能将浮点数直接与0进行比较,因为浮点数有精度误差,有两种解决方法:一,将a,b,c,x,x1,x2等要与0进行比较的变量改为int ;二,用如if (a < 1e-6),其中1e-6是一个非常小的数,如果a小于一个非常小的数,那么就可以认为a 与0相等。

state_2:scanf("%b=f\n c=%f\n",&b,&c);

#include "math.h"//最好不用goto语句
#include "stdio.h"
#define ZERO 0
typedef struct equation
{
char show;
double x[2];
double a;
double b;
double c;
}EQ;
//-----------------------------------------------------------
int in_put(EQ *one)
{
printf("\n\t\t\t请输入初始方程式参数:\n");
printf("\n\t\t\t二次项系数: a=");
scanf("%f",one->a);
printf("\n\t\t\t二次项系数: b=");
scanf("%f",one->b);