C语言求一元二次方程解的函数问题 新手题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言求一元二次方程解的函数问题 新手题相关的知识,希望对你有一定的参考价值。

#include "stdio.h"
void hanshu(int a,int b,int c)
int x,y,z;
z=b*b-4*a*c;
if(a==0)
printf("该方程不是一元二次方程");
else if(a!=0&&z<0)
printf("该一元二次方程无实数解");
else if(a=!0&&z=0)
printf("该一元二次方程有两个相同的实数解");
x=(z-b)/2a;
y=x;
else
printf("该一元二次方程有两个不同的实数解");
x=(z-b)/2a;
y=(b*(-1)+z*(-1))/2a;
return x,y;
void main()

scanf("%d %d %d",&a,&b,&c);
printf("%d %d",hanshu(x),hanshu(y));

为什么不能运行?怎么修改?我的想法对吗?
能不能将这个程序修改一下,代码发上来

    #include "stdio.h"

  void hanshu(int a,int b,int c)

  int x,y,z;

  z=b*b-4*a*c;

  if(a==0)

  printf("该方程不是一元二次方程");

  else if(a!=0&&z<0)        // 这里不需要在设置a!=0这个条件

  printf("该一元二次方程无实数解");

  else if(a=!0&&z=0)        // 同样不需要设置a!=0这个条件

          // 如果一个分支中有多条语句,一定要用


  printf("该一元二次方程有两个相同的实数解");

  x=(z-b)/2a;

  y=x;

  


  else

  printf("该一元二次方程有两个不同的实数解");

  x=(z-b)/2a;

  y=(b*(-1)+z*(-1))/2a;

  return x,y;        // return 只能返回一个值,这个语句的结果是返回y的值,具体请看逗号表达式

          // 缺少


  void main()

  

  int a,b,c;


  scanf("%d %d %d",&a,&b,&c);        //在使用变量之前要先定义

  printf("%d %d",hanshu(x),hanshu(y));        // 你定义的hanshu(int a,int b, int c)有三个int类型的参数,()中放置的是向函数传递的参数!!!

  


    你可以在函数hanshu()中直接打印出结果而不是返回出来,因为一个函数只能返回一个值!

  如下:

  #include <stdio.h>

  void hanshu(dobule a, double b, double c)

       

          double x,y,z;

          z=b*b-4*a*c;

          if(a==0)

                  printf("该方程不是一元二次方程");

          else if(z<0)

                  printf("该一元二次方程无实数解");

          else if(z=0)

         

                  x=(z-b)/2a;

                  y=x;

                  printf("该一元二次方程有两个相同的实数解: %lf %lf", x, y);

         

          else

         

                     x=(z-b)/2a;

                     y=(b*(-1)+z*(-1))/2a;

                    printf("该一元二次方程有两个不同的实数解: %lf %lf", x, y);

         

  

  int main(void)

  

          double a,b,c;

          scanf("%lf %lf %lf",&a,&b,&c);

          hanshu(a,b,c);

                return 0;

  


    如果你想在主函数main()中使用计算结果,可以利用指针!

参考技术A 因为你传递的结果是b*b-4*a*c=0,而函数中对于delta等于0的情况并没有计算结果,所以打印不出来。 参考技术B else if(a=!0&&z=0)

printf("该一元二次方程有两个相同的实数解");
x=(z-b)/2a;
y=x;


else


printf("该一元二次方程有两个不同的实数解");
x=(z-b)/2a;
y=(b*(-1)+z*(-1))/2a;
return x,y;


子函数还少一个花括号,后面那个
参考技术C 开始定义的是int,没有小数?
main()函数有问题,不能返回值
参考技术D #include <stdio.h>
#include <stdlib.h>
void fun(int a,int b,int c)

float z,y,x1,x2;
z=b*b-4*a*c;
if(z<0)
printf("该方程无解");
else if(z==0)
y=(-b)/(2*a);
printf("方程只有一个根%.2f",y);
else

x1=(-b-z)/(2*a);
x2=(-b+z)/(2*a);
printf("方程有两个根%.2f\t%.2f",x1,x2);


int main(int argc, char *argv[])

float a,b,c;
printf("请输入方程参数");
scanf("%f%f%f",&a,&b,&c);
printf("%.2fx^2+%.2fx+%.2f=0",a,b,c);
fun(a,b,c);

system("PAUSE");
return 0;
追问

这个才对 不好意思

以上是关于C语言求一元二次方程解的函数问题 新手题的主要内容,如果未能解决你的问题,请参考以下文章

用c语言编程求线性方程组的解

非齐次线性方程组有唯一解怎么求

c++求解一元二次方程

用switch语句编写求一元二次方程的解的方程

c语言解线性方程组的编程题 【做的好会多给分】

紧急求助:matlab求解唯一解的齐次线性方程组