中易网

弄了好久了。。 一段简单的C语言代码。 但是不知道为什么电脑抽风。 求解释。

答案:6  悬赏:10  
解决时间 2021-01-07 20:02
弄了好久了。。 一段简单的C语言代码。 但是不知道为什么电脑抽风。 求解释。
最佳答案
#include
#include
//求y=a*x*x+b*x+c
float lt(float a,float b,float c)
{
float q,w;
q=(-b+sqrt(b*b-4*a*c))/(2*a);
w=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("the equation has distincal real toos:\n%4f %4f",q,w); //当b*b-4*a*c大于零时的根。
return 0;
}

float less_than(float a,float b,float c)
{
float i,j;
i=(-b/2*a);
j=(sqrt(-b*b+4*a*c))/(2*a);
printf("the equation has complex roots:\n");
printf("%8.4f+%8.4fi",i,j);
printf("%8.4f-%8.4fi",i,j); //当b*b-4*a*c小于零时的根。 
return 0;
}

float equal(float a,float b,float c)
{
float i;
i=(-b+sqrt(b*b-4*a*c))/(2*a);
printf("the equation has twe equal roots:\n%.4f",i);//当b*b-4*a*c等于于零时的根。
return 0;
}

void main()
{
float lt(float a,float b,float c);
float less_than(float a,float b,float c);
float equal(float a,float b,float c);
float a,b,c,disc;
printf("please input the a b c :\n");
scanf("%.4f%.4f%.4f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc>0) lt(a,b,c);
else if (disc<0) less_than(a,b,c);
else equal(a,b,c); //分别输出。 但是。。。。。系统要在这报错。 求解释、、
}

以上是改后运行无错结果。再指出你程序中的一些错误。
首先,输入代码不够仔细,代码混乱,没有条理。
逗号输成句号。要么少了分号、最重要的一点
函数名是不可以有空格的,编译器认为空格分开就是两个变量或者其他的。
lessthan函数声明不能空格,另外没有给函数写返回类型。默认返回int。
全部回答
a,b,c都木有定义,你怎么把它们三个传给函数呢?
else if (disc<0) less than(a,b,c);有误
在判别式的值是否为0时,由于实型数据在计算机中存储存在误差,所以最好不要写成dise<0,改成dise<1e-5
错误挺多的 但是我觉得楼主主要想知道的问题应该是scanf("%.4f”,&a);的问题 因为输入时不能限定输入数据的格式,应该改成scanf("%f%f%f",&a,&b,&c);下面是正确的程序,其余问题都注释了,可能有些记不住了呵呵
#include
#include
//求y=a*x*x+b*x+c
void lt(float a,float b,float c)//没有返回值就给改成void了,否则总警告好讨厌
{
double q,w;//因为sqrt的结果是double型,double型是放不进float型的,下面同理
q=(-b+sqrt(b*b-4*a*c))/(2*a);
w=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("the equation has distincal real toos:\n%4f %4f",q,w); //当b*b-4*a*c大于零时的根.
}
void less_than(float a,float b,float c)//变量名中不能有空格,所以改成下划线了
//记住个口诀:字母数字下划线,数字不能放前面
{
double i,j;
i=(-b/2*a);
j=(sqrt(-b*b+4*a*c))/(2*a);
printf("the equation has complex roots:\n");
printf("%8.4f+%8.4fi",i,j);//貌似误写成i.j了。。。
printf("%8.4f-%8.4fi",i,j); //当b*b-4*a*c小于零时的根。 
}
void equal(float a,float b,float c)
{
double i;
i=-b/(2*a);
printf("the equation has twe equal roots:\n%.4f",i);//当b*b-4*a*c等于于零时的根。
}
void main()
{
void lt(float a,float b,float c);
void less_than(float a,float b,float c);
void equal(float a,float b,float c);
float a,b,c,disc;//之前没定义
printf("please input the a b c:\n");
scanf("%f%f%f",&a,&b,&c);//主要问题
disc=b*b-4*a*c;
if(disc>0) lt(a,b,c);
else if(disc<0) less_than(a,b,c);
else equal(a,b,c);
}
楼主很有想法,还包含虚数的计算,不过下次要谨慎哦,给个好评吧,亲~
楼主 有很多错误啊 比如main函数中a,b,c都没有定义
主函数中float lt(float a,float b,float c); 这个是写成it(a, b, c);
调用函数中 写了要返回一个float类型值的 没有返回值
printf("%8.4f-%8.4fi",i.j); //当b*b-4*a*c小于零时的根。 这个i后面不是 逗号 等等
我给你份好的把
# include
# include
int main(void)
{
int a, b, c;
printf ("请输入三个数:");
scanf ("%d %d %d", &a, &b, &c); //输入的数中间以空格为间隔
double delta; //delt存放的是 b*b - 4*a*c
double x1; //存放一元二次方程的其中一个解
double x2; //存放一元二次方程的其中一个解

delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("该一元二次方程有两个解, x1 = %f, x2 = %f\n", x1, x2);
}
else if (delta == 0)
{
x1 = (-b) / (2*a);
x2 = x1; //右边赋给左边
printf("该一元二次方程有一个唯一解, x1 = x2 = %f\n", x1);
}
else
{
printf("无解\n");
}
return 0;
}
错误有十几个,如a,b,c未定义;少分号;有n个未知字符;函数less than中间居然有空格;没有返回值却有float的返回类型。。。算法。。。这样看来电脑不要说抽风,就是上吊也没话说了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
现代欧洲所有国家都男女平等吗
法语:Proférer ne是什么意思
有一2m×3m的平板立于室内,气流沿着长度方向
建三江属哪个县市
wow勇敢的伊勇在哪 求具体位置
1月26日从金卅到北票南列车表有座吗
同一微分方程组 不同的方法求解 结果为什么不
能动专业怎么样
95后中专学历怎样进公司
锡矿和铜矿珍贵吗。
安昭熙。
金钟旅社怎么去啊,有事要去办理
寻5首关于隐居的诗词(古代,现代,均可)
办理了新的身份证,旧的二代身份证会消磁吗
商品房楼上下阳台能打通做楼梯吗
推荐资讯
如图,若将左图正方形剪成四块,恰能拼成右图
农村自建房在村里可以开这样的证明吗?1、房
lol中射手那个射程远攻击力强
王开婚纱摄影名店地址有知道的么?有点事想过
结婚的那天手上带的戒指和手链必须是谁买的,
怎么给手机装网秦杀毒软件到。
以路过为题写一首诗
Aptio Setup Utility-Copyright(c) 2011
电容上面有个点1UF到底是1UF还是0.1UF,请高
韦神熬夜看动漫 lgd还能在lpl混下去吗
大学生背书包上课的吗?
万分之几用百分符号怎么表示
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?