c语言新手求教!
#include<stdio.h>#include<math.h>
void main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf,%lf,%lf",&a,&b,&c);
disc = b*b-a*4*c;
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);
}
我输入:
3.0,4.0,5.0
x1=30853210449772612000000000000000000000000000000000000000000000.00
x2= 0.00
Press any key to continue
为什么会出现这个情况,是哪里错了??看了好久没看出来,求教!!!
C语言中sqrt函数是指的开方运算函数,得到的结果是函数变量(可以是数值,也可以是变量名)的算术平方根。如输入m=sqrt(4);,则输出结果为2。或者对于变量a有赋值9,,则输入m=sqrt(9),输出结果为3.
需要注意的是以下三点:
sqrt函数运行的是结果是算术平方根,即不能运算处负数值,也不能输出虚数结果。如需要得到算术平方根中的负数值,则应该在sqrt函数前添加负号。
sqrt函数的参数必须是非负数值,如果是负数值,则输出会报错,即数值无效;如果参数是未定义的非数字变量,则按回车后也会报错,即变量名有误。
sqrt函数的计算精度与C语言设置的精度有关,可以通过设置更改精度。 建议写 int main(), return 0。这对调试有帮助。
scanf 里边是没有空格的,但你的输入却有空格,造成无效输入。里边在多重输入的情况,要有空格,才可吸收用户的无限空白之输入。
另外 3 4 5,是共轭复数根,double 不支持
最后,您的代码还是把该空格的地方空一下,不方便阅读~ claws0n 发表于 2018-8-6 23:53
建议写 int main(), return 0。这对调试有帮助。
scanf 里边是没有空格的,但你的输入却有空格,造成无效 ...
好的好的,谢谢,我会注意空格的,谢谢您的提醒
那个我的输入没有输入空格我用的是‘,’可能是我打字出来看起来有空格把哈哈
为什么现在我换成2.0,7.0,3.0这个数字还是没打印出正确的答案呢,这个不是共轭复数根了呀。 ba21 发表于 2018-8-6 23:35
C语言中sqrt函数是指的开方运算函数,得到的结果是函数变量(可以是数值,也可以是变量名)的算术平 ...
好的好的,谢谢您的答案,是我没了解清楚那个函数。
可是为什么现在我换成2.0,7.0,3.0的数值还是打印不出正确的答案呢? #include<stdio.h>
#include<math.h>
int main()
{
double a, b, c, disc, x1, x2, p, q;
scanf("%lf, %lf, %lf",&a,&b,&c);
disc = (b*b)-(a*4*c);
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);
return 0;
}
编译器吧,我的用 void main() 会有问题,换成 int main() 就可以。我不喜欢用 void。main() 在一开始的设计是 int 然后配合 return 0 的。这个对调试是有帮助的。 claws0n 发表于 2018-8-7 22:42
编译器吧,我的用 void main() 会有问题,换成 int main() 就可以。我不喜欢用 void。main() 在一开始的 ...
好的,谢谢!!
页:
[1]