【问题标题】:How would I set up function to calculate the area of a circle - C我将如何设置函数来计算圆的面积 - C
【发布时间】:2017-11-13 02:51:48
【问题描述】:

我有这个 C 程序需要计算用户输入的圆的面积。 我必须在 main 函数之前使用它:

void area_circum(double radius, double *area, double *circum);

我无法让程序运行。我正在使用 main 函数和另一个名为 area_circum();

这就是我现在拥有的:

#include <stdio.h>


void area_circum(double radius, double *area, double *circum);

int main(void) {

    double radius, area, circum;

    printf("Please enter the radius of the circle: ");
    scanf("%f", &radius);

    area_circum(radius, area, circum);

    printf("Area of circle : %0.4f\n", area);

    return 0;
}


void area_circum(double radius, double *area, double *circum) {
    double PIE = 3.141;

    double areaC = 0;

    areaC = PIE * radius * radius;
}

当我构建并运行它时,它可以工作,我输入一个数字,但它返回 0.00

【问题讨论】:

  • 请获取任何关于 C 的教科书并查看main 的签名。阅读第一章时也从第二章开始
  • 修复this
  • 谢谢@BLUEPIXY。我看到我不应该在主函数参数中传递任何东西。
  • main() 的参数列表是……嗯,这不仅是非正统的,而且是错误的。这些参数应该是main() 中的局部变量,您应该使用int main(void)。此外,您希望 areacircum 是普通的 double,而不是 double *;你将&amp;area&amp;circum 传递给函数——它们是指针。 (你['已经修改了main() 的签名——因为没有答案,没关系。你没有注意编译器警告。在这个阶段,如果编译器抱怨,你的代码中有错误。在运行之前修复它。)
  • scanf("%f", &amp;radius) 是类型错误(scanf %f 采取什么?&amp;radius 的类型是什么?)。 area_circum 是一个空操作:它设置了一个从不读取的局部变量,它忽略了它的两个参数。

标签: c function area


【解决方案1】:

从该函数的名称和签名可以看出,它应该计算面积和周长。同样很明显,您应该将两个 int 变量(或两个指向 int 的指针)的地址传递给它,然后给出计算结果:

#include <stdio.h>

void area_circum(double radius, double *area, double *circum);

int main(void)
{
    double radius, area, circum;

    printf("Please enter the radius of the circle: ");
    scanf("%lf", &radius); // Note: You should add a check to see if
                           //       scanf() failed.
    area_circum(radius, &area, &circum);  // &area is the address of area
                                          // &circum is the address of circum
    printf("Area of circle : %0.4f\n", area);
    printf("Circumference of circle : %0.4f\n", circum);
    return 0;
}

void area_circum(double radius, double *area, double *circum)
{
    double PIE = 3.1416;
    *area = PIE * radius * radius;
    *circum = PIE * radius * 2;
}

【讨论】:

    【解决方案2】:

    你快到了。您需要做的就是返回计算的值:

    void area_circum(double radius, double *area) {
        double PIE = 3.141;
        *area = PIE * radius * radius;
    }
    

    然后像这样调用:

        area_circum(radius, &area);
    

    【讨论】:

      【解决方案3】:
      #include <stdio.h>
      
      void area_circum(double radius);
      
      int main() {
      
         double radius;
      
         printf("Please enter the radius of the circle: ");
      
         scanf("%lf", &radius);
      
         area_circum(radius);
      
         return 0;
      
      }
      
      
      void area_circum(double radius) {
      
         double PIE = 3.141;
      
         double areaC = 0;
      
         areaC = PIE * radius * radius;
      
         printf("Area of circle : %0.4f\n", areaC);
      
      }
      

      【讨论】:

      • yathanx 我没有注意到文本编辑器没有包含#
      • 这是一种方法。谢谢
      • @melpomene scanf("%f", &amp;radius); 更改为 scanf("%lf", &amp;radius);
      • @JDog 不,不是。它会更改 area_circum 的签名,根据您的问题,您 必须 使用。
      • 您打印的是面积而不是周长。您的函数既不返回面积也不返回周长(更不用说两者),因此您回答的问题与问题中的问题不同。 π 也有更好的近似值,从 3.142 开始(因为展开通常是 3.1415926535897…)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多