鱼C论坛

 找回密码
 立即注册
查看: 2522|回复: 9

一元二次方程根

[复制链接]
发表于 2016-7-19 17:36:34 | 显示全部楼层 |阅读模式

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

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

x
如题,编写完之后,结果一直不对,求解,谢谢啦。
  1. #include <stdio.h>
  2. #include <math.h>
  3. float x1,x2,k,i,j;
  4. int main ()
  5. {
  6.         void f1 ();
  7.         void f2 ();
  8.     void f3 ();
  9.         float a,b,c;
  10.         printf ("请输入三个数字,以逗号隔开:\n");
  11.         scanf ("%lf,%lf,%lf",&a,&b,&c);
  12.         k=b*b-4*a*c;
  13.        
  14.         printf ("方程的根为:\n");
  15. if (k>0)
  16.         {
  17.                 f1 (a,b);
  18.             printf("x1=%f\tx2=%f\n", x1,x2);
  19.         }
  20.      
  21. else if (k==0)
  22.         {
  23.                 f2 (a,b);
  24.                 printf("x1=%f\tx2=%f\n", x1,x2);
  25.         }
  26.                
  27.      else
  28.          {
  29.                  f3 (a,b);
  30.                  printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
  31.          }
  32.      
  33.         return 0;
  34. }
  35. void f1 (float x ,float y)
  36. {

  37.         x1=(-y+sqrt(k))/(2*x);
  38.         x2=(-y-sqrt(k))/(2*x);

  39. }

  40. void f2 (float x ,float y)
  41. {
  42.        
  43.         x1=-y/(2*x);
  44.         x2=-y/(2*x);

  45. }
  46. void f3 (float x ,float y)
  47. {

  48.    i=-y/(2*x);
  49.    j=sqrt(-k)/(2*x);

  50. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-19 18:57:17 | 显示全部楼层
本帖最后由 Krant5 于 2016-7-19 19:01 编辑
  1. #include <stdio.h>
  2. #include <math.h>
  3. float x1,x2,k,i,j;
  4. void f1 (float x ,float y);
  5. void f2 (float x ,float y);
  6. void f3 (float x ,float y);
  7. int main ()
  8. {

  9.         float a,b,c;
  10.         printf ("请输入三个数字,以逗号隔开:\n");
  11.         scanf("%f,%f,%f",&a,&b,&c);
  12.         k=b*b-4*a*c;

  13.         printf ("方程的根为:\n");
  14. if (k>0)
  15.         {
  16.                 f1 (a,b);
  17.             printf("x1=%f\tx2=%f\n", x1,x2);
  18.         }

  19. else if (k==0)
  20.         {
  21.                 f2 (a,b);
  22.                 printf("x1=%f\tx2=%f\n", x1,x2);
  23.         }

  24.      else
  25.          {
  26.                  f3 (a,b);
  27.                  printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
  28.          }

  29.         return 0;
  30. }
  31. void f1 (float x ,float y)
  32. {

  33.         x1=(-y+sqrt(k))/(2*x);
  34.         x2=(-y-sqrt(k))/(2*x);

  35. }

  36. void f2 (float x ,float y)
  37. {

  38.         x1=-y/(2*x);
  39.         x2=-y/(2*x);

  40. }
  41. void f3 (float x ,float y)
  42. {

  43.    i=-y/(2*x);
  44.    j=sqrt(-k)/(2*x);

  45. }
复制代码

QQ截图20160719185643.png

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

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

使用道具 举报

发表于 2016-7-19 22:42:41 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <math.h>
  3. float x1,x2,k,i,j;
  4. void f1 (float x ,float y);
  5. void f2 (float x ,float y);
  6. void f3 (float x ,float y);
  7. int main ()
  8. {
  9.         float a,b,c;
  10.         printf ("请输入三个数字,以逗号隔开:\n");
  11.         scanf ("%f,%f,%f",&a,&b,&c);
  12.         k=b*b-4*a*c;
  13.         printf ("方程的根为:\n");
  14. if (k>0)
  15.         {
  16.                 f1 (a,b);
  17.             printf("x1=%f\tx2=%f\n", x1,x2);
  18.         }
  19.      
  20. else if (k==0)
  21.         {
  22.                 f2 (a,b);
  23.                 printf("x1=%f\tx2=%f\n", x1,x2);
  24.         }
  25.                
  26.      else
  27.          {
  28.                  f3 (a,b);
  29.                  printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
  30.          }
  31.      
  32.         return 0;
  33. }
  34. void f1 (float x ,float y)
  35. {

  36.         x1=(-y+sqrt(k))/(2*x);
  37.         x2=(-y-sqrt(k))/(2*x);

  38. }

  39. void f2 (float x ,float y)
  40. {
  41.         
  42.         x1=-y/(2*x);
  43.         x2=-y/(2*x);

  44. }
  45. void f3 (float x ,float y)
  46. {

  47.    i=-y/(2*x);
  48.    j=sqrt(-k)/(2*x);

  49. }
复制代码

关键是scanf后面要用%f而不是%lf 输入时加上小数点。
C:\Users\Administrator\Desktop

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

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

使用道具 举报

发表于 2016-7-19 22:43:53 | 显示全部楼层
捕获.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-7-21 08:57:43 | 显示全部楼层

膜拜一下大神啊,谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-21 09:14:15 | 显示全部楼层
疾风。意破天晴 发表于 2016-7-19 22:42
关键是scanf后面要用%f而不是%lf 输入时加上小数点。
  1. void f1 ();
  2. void f2 ();
  3. void f3 ();
复制代码


大神,为什么开头我不能在主函数内调用定义无参函数?上一个案例定义空函数,就可以运行了因为换电脑了,文档找不到了,没法提交上来。现在正在学主函数的调用问题。求解,是不是以后都要在主函数内定义调用函数的参数?。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-22 17:38:39 | 显示全部楼层
C语言的话:如果你要调用一个函数有两种情况  1:是你把函数的声明与定义放在了一个头文件里,就是include""。
2:是你要在main函数前面先声明函数,然后再定义。
反正就是不管怎么样子,一定要在main函数前定义函数,如果你不写参数,那么编译器会默认是int类型参数,如果你不加  ,  那就是默认为一个int类型参数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

头像被屏蔽
发表于 2016-7-23 11:50:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 22:59:37 | 显示全部楼层
疾风。意破天晴 发表于 2016-7-22 17:38
C语言的话:如果你要调用一个函数有两种情况  1:是你把函数的声明与定义放在了一个头文件里,就是include" ...

感谢你的热心答复,祝你生活愉快
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-24 08:18:01 | 显示全部楼层

感谢你的热心帮助,真心谢过了, 学C的路不大好走啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 16:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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