弄了好久了。。 一段简单的C语言代码。 但是不知道为什么电脑抽风。 求解释。
答案:6 悬赏:10
解决时间 2021-01-07 20:02
- 提问者网友:轻浮
- 2021-01-07 15:31
弄了好久了。。 一段简单的C语言代码。 但是不知道为什么电脑抽风。 求解释。
最佳答案
- 二级知识专家网友:何以畏孤独
- 2021-01-07 16:26
#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。
#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。
全部回答
- 1楼网友:话散在刀尖上
- 2021-01-07 21:10
a,b,c都木有定义,你怎么把它们三个传给函数呢?
- 2楼网友:第四晚心情
- 2021-01-07 20:43
else if (disc<0) less than(a,b,c);有误
在判别式的值是否为0时,由于实型数据在计算机中存储存在误差,所以最好不要写成dise<0,改成dise<1e-5
在判别式的值是否为0时,由于实型数据在计算机中存储存在误差,所以最好不要写成dise<0,改成dise<1e-5
- 3楼网友:北城痞子
- 2021-01-07 19:13
错误挺多的 但是我觉得楼主主要想知道的问题应该是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);
}
楼主很有想法,还包含虚数的计算,不过下次要谨慎哦,给个好评吧,亲~
#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);
}
楼主很有想法,还包含虚数的计算,不过下次要谨慎哦,给个好评吧,亲~
- 4楼网友:猎心人
- 2021-01-07 19:03
楼主 有很多错误啊 比如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;
}
主函数中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;
}
- 5楼网友:拜訪者
- 2021-01-07 17:43
错误有十几个,如a,b,c未定义;少分号;有n个未知字符;函数less than中间居然有空格;没有返回值却有float的返回类型。。。算法。。。这样看来电脑不要说抽风,就是上吊也没话说了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |