鱼C论坛

 找回密码
 立即注册
查看: 2951|回复: 6

[已解决]c语言新手求教!

[复制链接]
发表于 2018-8-6 23:12:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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
为什么会出现这个情况,是哪里错了??看了好久没看出来,求教!!!



最佳答案
2018-8-6 23:53:03
建议写 int main(), return 0。这对调试有帮助。
scanf 里边是没有空格的,但你的输入却有空格,造成无效输入。里边在多重输入的情况,要有空格,才可吸收用户的无限空白之输入。
另外 3 4 5,是共轭复数根,double 不支持

最后,您的代码还是把该空格的地方空一下,不方便阅读~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-6 23:35:03 | 显示全部楼层
201886_233217.png

 C语言中sqrt函数是指的开方运算函数,得到的结果是函数变量(可以是数值,也可以是变量名)的算术平方根。如输入m=sqrt(4);,则输出结果为2。或者对于变量a有赋值9,,则输入m=sqrt(9),输出结果为3.

  需要注意的是以下三点:

sqrt函数运行的是结果是算术平方根,即不能运算处负数值,也不能输出虚数结果。如需要得到算术平方根中的负数值,则应该在sqrt函数前添加负号。

sqrt函数的参数必须是非负数值,如果是负数值,则输出会报错,即数值无效;如果参数是未定义的非数字变量,则按回车后也会报错,即变量名有误。

sqrt函数的计算精度与C语言设置的精度有关,可以通过设置更改精度。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-6 23:53:03 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
建议写 int main(), return 0。这对调试有帮助。
scanf 里边是没有空格的,但你的输入却有空格,造成无效输入。里边在多重输入的情况,要有空格,才可吸收用户的无限空白之输入。
另外 3 4 5,是共轭复数根,double 不支持

最后,您的代码还是把该空格的地方空一下,不方便阅读~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-7 22:18:46 | 显示全部楼层
claws0n 发表于 2018-8-6 23:53
建议写 int main(), return 0。这对调试有帮助。
scanf 里边是没有空格的,但你的输入却有空格,造成无效 ...

好的好的,谢谢,我会注意空格的,谢谢您的提醒
那个我的输入没有输入空格我用的是‘,’可能是我打字出来看起来有空格把哈哈
为什么现在我换成2.0,7.0,3.0这个数字还是没打印出正确的答案呢,这个不是共轭复数根了呀。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-7 22:20:18 | 显示全部楼层
ba21 发表于 2018-8-6 23:35
 C语言中sqrt函数是指的开方运算函数,得到的结果是函数变量(可以是数值,也可以是变量名)的算术平 ...

好的好的,谢谢您的答案,是我没了解清楚那个函数。
可是为什么现在我换成2.0,7.0,3.0的数值还是打印不出正确的答案呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-7 22:42:16 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<math.h>

  3. int main()
  4. {
  5.         double a, b, c, disc, x1, x2, p, q;
  6.         scanf("%lf, %lf, %lf",&a,&b,&c);
  7.         disc = (b*b)-(a*4*c);
  8.         p=-b/(2*a);
  9.         q=sqrt(disc)/(2*a);
  10.         x1=p+q;
  11.         x2=p-q;
  12.         printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
  13.        
  14.         return 0;
  15. }
复制代码

编译器吧,我的用 void main() 会有问题,换成 int main() 就可以。我不喜欢用 void。main() 在一开始的设计是 int 然后配合 return 0 的。这个对调试是有帮助的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-8 21:27:25 | 显示全部楼层
claws0n 发表于 2018-8-7 22:42
编译器吧,我的用 void main() 会有问题,换成 int main() 就可以。我不喜欢用 void。main() 在一开始的 ...

好的,谢谢!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表