关于#c语言#的问题,请各位专家解答!

img

img


可以有专家帮我看看为什么会出现乱码吗,真的感谢,很着急,一开始看提示说是我m,n没有赋初值,但我想知道我怎么赋初值啊,就是赋初值为0吗,往哪里放,

请直接传代码,不然不好看,用 Markdown 的个式插入代码。或者点击插入代码后直接粘贴。不然实在难看。
肉眼看出问题如下

  • 所有值均没有没初始化
  • main 函数内的 mn并没有被赋过值而被直接使用会导致 mn 在使用时会产生不可预测的结果。
  • C语言函数无法同时返回 两个值 而且在函数结束的时候在函数内部使用的空间除了返回值 其他值均被销毁。返回值也在执行到下一个语句之前被销毁。
  • C语言无元组这个概念 如果是返回 (a,b) ,那么会依次运行 a , b 语句 。并将 b 的值作为返回值。
  • 返回值未被其他值接收则会被销毁。
  • 不同函数内的 变量 不可公用,除非通过指针的形式传入,并且修改指针所值的内存区域的值。

我根据你的代码 推测出你是需要求可能是 求二次方程的根:
代码如下 望采纳!

#include <stdio.h>
#include <math.h>
 
void add(double a,double b,double c,double *m,double *n);

int main(){
    double a,b,c,m,n;
    printf("请依次输入a b c用空格隔开");
    scanf("%lf%lf%lf",&a,&b,&c);
    double delt = b * b - 4*a*c;
    if( delt > 0 ){
        add(a,b,c,&m,&n);
        printf("方程有两个不相等的实数根 : %g , %g",m,n);
    } else if( delt == 0 ){
        printf("方程有一个实数根 : %g  ",(-b + sqrt(delt)) / (2 * a) );
    } else {
        printf("方程没有实数根");
    }

}
void add(double a,double b,double c, double *m ,double *n){
    *m = (-b + sqrt(b * b - 4*a*c)) / (2 * a) ;
    *n = (-b - sqrt(b * b - 4*a*c)) / (2 * a) ;
}