当前位置:编程学习 > C/C++ >>

二次函数问题(C++)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
 float a,b,c,disc,q,p,z,j,x1,x2,u,i;
      scanf("%f,%f,%f",&a,&b,&c);
      disc=b*b-4*a*c;
      p=-b/(2*a);
      q=sqrt(disc)/(2*a);
      x1=p+q;
      x2=p-q;
      z=x1+x2;
      j=x1*x2;
      u=-b/(2*a);
      i=(4*a*c-b*b)/(4*a);
     
   if (a==0){
  printf("此程序只支持二次函数,请不要乱来!\n");
   }
   else {
         if (disc>0){
                printf("此方程无实数根\n");
                    }
         else {{
                printf("与X轴交点为%f,%f\n",x1,x2);
                printf("与y轴交点为%f\n",c);
                printf("顶点坐标为(%f,%f)\n",u,i);
                printf("对称轴为%f\n",u);
                printf("x1+x2=%f\nx1*x2=%f\n",z,j);
                } 
           if (a>0){
                printf("开口方向向上\n");
                printf("最小值为%f\n",i);
                   }
           else {
                printf("开口方向向下\n");
                printf("最大值为%f\n",i);}
             }
           }    
      system("pause"); 
      return 0;
}

 

编译过了,但是输出的数据基本上是0.000000和-1.#IND00  怎么回事啊?

不管输入任何值 只要a不等于0都是输出一样的数据

 

还有如果我if (disc>0)改成小于号就不管输入什么数只要a不等于0都是执行

 printf("此方程无实数根\n");

 

求教啊!!!!!!

追问:这样不行 早试过了输出的东西都有问题
答案:#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
 float a,b,c,disc,q,p,z,j,x1,x2,u,i;
      scanf("%f,%f,%f",&a,&b,&c);
      disc=b*b-4*a*c;
      p=-b/(2*a);
      q=sqrt(disc)/(2*a);
      x1=p+q;
      x2=p-q;
      z=x1+x2;
      j=x1*x2;
      u=-b/(2*a);
      i=(4*a*c-b*b)/(4*a);
     
   if (a==0){
  printf("此程序只支持二次函数,请不要乱来!\n");
   }
   else if (disc<0){
                printf("此方程无实数根\n");
                    }
         else {
                printf("与X轴交点为%f,%f\n",x1,x2);
                printf("与y轴交点为%f\n",c);
                printf("顶点坐标为(%f,%f)\n",u,i);
                printf("对称轴为%f\n",u);
                printf("x1+x2=%f\nx1*x2=%f\n",z,j);
              } 
           if (a>0){
                printf("开口方向向上\n");
                printf("最小值为%f\n",i);
                   }
           else {
                printf("开口方向向下\n");
                printf("最大值为%f\n",i);
                }  
      system("pause"); 
      return 0;
}

你是按格式输入的吗?

1,4,4

我试过了,没有问题

上一个:C++语言的难学吗?
下一个:c++ 图的根顶点

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,