工科男 发表于 2016-7-19 17:36:34

一元二次方程根

如题,编写完之后,结果一直不对,求解,谢谢啦。
#include <stdio.h>
#include <math.h>
float x1,x2,k,i,j;
int main ()
{
        void f1 ();
        void f2 ();
    void f3 ();
        float a,b,c;
        printf ("请输入三个数字,以逗号隔开:\n");
        scanf ("%lf,%lf,%lf",&a,&b,&c);
        k=b*b-4*a*c;
       
        printf ("方程的根为:\n");
if (k>0)
        {
                f1 (a,b);
          printf("x1=%f\tx2=%f\n", x1,x2);
        }
   
else if (k==0)
        {
                f2 (a,b);
                printf("x1=%f\tx2=%f\n", x1,x2);
        }
               
   else
       {
               f3 (a,b);
               printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
       }
   
        return 0;
}
void f1 (float x ,float y)
{

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

}

void f2 (float x ,float y)
{
       
        x1=-y/(2*x);
        x2=-y/(2*x);

}
void f3 (float x ,float y)
{

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

}


Krant5 发表于 2016-7-19 18:57:17

本帖最后由 Krant5 于 2016-7-19 19:01 编辑

#include <stdio.h>
#include <math.h>
float x1,x2,k,i,j;
void f1 (float x ,float y);
void f2 (float x ,float y);
void f3 (float x ,float y);
int main ()
{

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

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

else if (k==0)
      {
                f2 (a,b);
                printf("x1=%f\tx2=%f\n", x1,x2);
      }

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

      return 0;
}
void f1 (float x ,float y)
{

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

}

void f2 (float x ,float y)
{

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

}
void f3 (float x ,float y)
{

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

}

疾风。意破天晴 发表于 2016-7-19 22:42:41

#include <stdio.h>
#include <math.h>
float x1,x2,k,i,j;
void f1 (float x ,float y);
void f2 (float x ,float y);
void f3 (float x ,float y);
int main ()
{
      float a,b,c;
      printf ("请输入三个数字,以逗号隔开:\n");
      scanf ("%f,%f,%f",&a,&b,&c);
      k=b*b-4*a*c;
      printf ("方程的根为:\n");
if (k>0)
      {
                f1 (a,b);
            printf("x1=%f\tx2=%f\n", x1,x2);
      }
   
else if (k==0)
      {
                f2 (a,b);
                printf("x1=%f\tx2=%f\n", x1,x2);
      }
               
   else
         {
               f3 (a,b);
               printf("x1=%f+%fi\tx2=%f-%fi\n", i,j,i,j);
         }
   
      return 0;
}
void f1 (float x ,float y)
{

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

}

void f2 (float x ,float y)
{
      
      x1=-y/(2*x);
      x2=-y/(2*x);

}
void f3 (float x ,float y)
{

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

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

疾风。意破天晴 发表于 2016-7-19 22:43:53

工科男 发表于 2016-7-21 08:57:43

疾风。意破天晴 发表于 2016-7-19 22:43


膜拜一下大神啊,谢谢啦

工科男 发表于 2016-7-21 09:14:15

疾风。意破天晴 发表于 2016-7-19 22:42
关键是scanf后面要用%f而不是%lf 输入时加上小数点。

void f1 ();
void f2 ();
void f3 ();

大神,为什么开头我不能在主函数内调用定义无参函数?上一个案例定义空函数,就可以运行了因为换电脑了,文档找不到了,没法提交上来。现在正在学主函数的调用问题。求解,是不是以后都要在主函数内定义调用函数的参数?。

疾风。意破天晴 发表于 2016-7-22 17:38:39

C语言的话:如果你要调用一个函数有两种情况1:是你把函数的声明与定义放在了一个头文件里,就是include""。
2:是你要在main函数前面先声明函数,然后再定义。
反正就是不管怎么样子,一定要在main函数前定义函数,如果你不写参数,那么编译器会默认是int类型参数,如果你不加,那就是默认为一个int类型参数。

m9128213 发表于 2016-7-23 11:50:38

工科男 发表于 2016-7-23 22:59:37

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

感谢你的热心答复,祝你生活愉快{:7_123:}

工科男 发表于 2016-7-24 08:18:01

Krant5 发表于 2016-7-19 18:57


感谢你的热心帮助,真心谢过了,{:5_91:} 学C的路不大好走啊
页: [1]
查看完整版本: 一元二次方程根