为啥我的 C 程序不能正常工作?

Posted

技术标签:

【中文标题】为啥我的 C 程序不能正常工作?【英文标题】:Why is my C program not working correctly?为什么我的 C 程序不能正常工作? 【发布时间】:2020-03-18 12:17:18 【问题描述】:

这是我的程序:

int main()

    struct Koordinaten 
        float x;
        float y;
    Vektor[3];

    typedef struct Koordinaten Koordinaten;

    float A[3], s, b; 
    for(int i = 0; i < 3; i++)
        char d;
        if(i == 0)
            d = 'A';
        if(i == 1)
            d = 'B';
        if(i == 2)
            d = 'C';

        printf("Please enter the coordinates of the %c vector:\nx: ", d);
        scanf("%f", &Vektor[i].x);
        printf("\ny: ");
        scanf("%f", &Vektor[i].y);

        printf("Values of the %c vector x: %f  y: %f\n\n", d, Vektor[i].x, Vektor[i].y);

        A[i] = sqrt(Vektor[i].x * Vektor[i].x + Vektor[i].y * Vektor[i].y);
        printf("The length of the vector %c is: %f\n\n", d, A[i]);
    

    s = 1/2 * (A[0] + A[1] + A[2]);
    printf("s = %f\n", s);

    b = sqrt(s * (s - A[0]) * (s - A[1]) * (s-A[2]));
    printf("The area is: %f", b);

如您所见,我想取三个向量并给出向量的面积。它完美地工作,因为与 s 变量的行。我的程序只给我 s 的值 0,但它必须是 7.5!

【问题讨论】:

请输入,预期输出和实际输出。 s = 1/2 * (A[0] + A[1] + A[2]); 更改为 s = 1/(2 * (A[0] + A[1] + A[2])); char d; if(i == 0) d = 'A'; if(i == 1) d = 'B'; if(i == 2) d = 'C'; -> char d = 'A' + i; 非常感谢大家我发现了错误。 作为关于命名的一般评论,我建议与大写之类的东西保持一致,例如,您的Vektor 是一个数组,但样式与Koordinaten 相同,这是一个类型。此外,大多数单字符名称(sb)可以变得更长、更具描述性,尤其是s 乍一看可能暗示它是“某个字符串”。 【参考方案1】:

在您的代码中

  s = 1/2 * (A[0] + A[1] + A[2]);

相同
  s = (1/2) * (A[0] + A[1] + A[2]);
      ^^^^^^--------------------------This is an integer division, with a result 0, 
                                      so, 's' will always have a value 0. 

您需要将其更改为

 s = 1.0/2 * (A[0] + A[1] + A[2]);
     ^^^^^^-----------------------------now this is floating point division.

确保浮点除法。

【讨论】:

或者只是s = .5 * (A[0] + A[1] + A[2]); @glglgl 当然,只是想保持相同的语法,以便问题更加明显。 :) 关于表达式:1.0/2 这是一个double 除法,这不是我们想要的。建议:1.0f/2.0f

以上是关于为啥我的 C 程序不能正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 pygame 应用程序循环不能正常工作? [复制]

为啥程序不能正常工作?

为啥这个java程序不能正常工作?

为啥 React 路由不能在服务器上正常工作?

为啥我的实体框架应用程序正常工作?

为啥我不能在 docker 中构建这个 nuxtjs 应用程序,而本地构建工作?