馒头1 发表于 2016-1-18 12:26:53

【求助】麻烦大神帮忙看看这行代码的错误

# include <stdio.h>
# include <math.h>

int main(void)
{
        int a = 1;
        int b = 5;
        int c = 6;
        double delta;
        double x1;
        double x2;

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

        if(deita > 0)
        {
                x1 = (-b + sqart(delta)) / (2*a);
                x2 = (-b - sqart(delta)) / (2*a);
                printf("该一元二次方程有两个解,x1 = %f, x2 = %f\n", x1, x2);
        }
        else if (deita == 0)
        {
                x1 = (-b) /(2*a);
                x2 = x1;
                printf("该一元二次方程有唯一解,x1 = x2 = %f\n",x1);
        }
        else
        {
                printf("无解\n");

        }





麻烦各位大神了




馒头1 发表于 2016-1-18 12:27:24

自古一楼归楼主

浮尘 发表于 2016-1-18 12:31:22

二楼归我:$

Antergone 发表于 2016-1-18 12:38:09

本帖最后由 Antergone 于 2016-1-18 12:44 编辑

楼主,代码一眼看上去各种问题,我觉得你调试下 什么问题都能解决?
1.include 那里空格?
2.int main 返回值在哪里?
3. delta deita?
4. sqart 你确定平方根是这个?
5.double 打印的时候格式控制符是lf还是f?

不要伸手就问为什么,放到编译器自己调试下,动过手再来问为什么
友情提示:如果linux编译请带上 lm参数gcc test.c -lm

馒头1 发表于 2016-1-18 12:54:41

Antergone 发表于 2016-1-18 12:38
楼主,代码一眼看上去各种问题,我觉得你调试下 什么问题都能解决?
1.include 那里空格?
2.int main 返回 ...

非常感谢,我就一小白,刚自学,所以调试半天也不知道哪错了
总之,非常感谢~~~~~

xiaoye 发表于 2016-1-18 13:18:09

本帖最后由 xiaoye 于 2016-1-18 13:25 编辑





正确:

       

# include <stdio.h>
# include <math.h>

int main(void)
{
      int a = 1;
      int b = 5;
      int c = 6;
      double delta;
      double x1;
      double x2;

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

      if(delta > 0)
      {
                x1 = (-b + sqrt(delta)) / (2*a);
                x2 = (-b - sqrt(delta)) / (2*a);
                printf("该一元二次方程有两个解,x1 = %lf, x2 = %lf\n", x1, x2);
      }
      else if (delta == 0)
      {
                x1 = (-b) /(2*a);
                x2 = x1;
                printf("该一元二次方程有唯一解,x1 = x2 = %lf\n",x1);
      }
      else
      {
                printf("无解\n");

      }
               
                return 0;
}

馒头1 发表于 2016-1-18 13:48:38

xiaoye 发表于 2016-1-18 13:18
正确:

       


谢谢您的认真指导

w2015 发表于 2016-1-19 14:05:02

简直是6的不行啊!支持红客联盟。

热心网友6 发表于 2026-5-20 10:10:00

Re: 【求助】麻烦大神帮忙看看这行代码的错误

看起来你的代码有几个拼写错误导致编译或运行异常: 1. **变量名 `deita`** 写错了,应该是 `delta`。你在 if 条件里用了 `deita`,但前面定义的是 `delta`,编译器会报未定义变量。 2. **函数名 `sqart`** 也写错了,应该是 `sqrt`(来自 math.h 的平方根函数)。 另外,解唯一解时 `x1 = (-b) / (2*a)` 是整数除法,结果会被截断成整数再赋值给 double 型变量。因为 a、b 都是 int,建议改成 `(-b) / (2.0 * a)` 或者 `(-b) / (2 * a) * 1.0`,否则当 b 较小或 a 较大时结果会丢失小数部分。 修正后的代码如下: ```c #include #include int main(void) { int a = 1; int b = 5; int c = 6; double delta; double x1; double x2; delta = b*b - 4*a*c; if(delta > 0) { x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); printf("该一元二次方程有两个解,x1 = %f, x2 = %f\n", x1, x2); } else if(delta
页: [1]
查看完整版本: 【求助】麻烦大神帮忙看看这行代码的错误