【问题标题】:C++ main function and program [duplicate]C ++主函数和程序[重复]
【发布时间】:2017-10-13 12:06:03
【问题描述】:

我正在尝试让这段代码运行,我尝试了这两种方法,但无济于事。目的是使用 scanf 接收输入并使用 printf 打印出语句。我得到的错误消息是编译器只是挂起。

另外,我不会使用任何数学函数,例如平方根或幂

测试用例和预期答案

输入1:1.41421356237

输出1:圆的面积是3.141590

输入2:5.65

输出2:圆的面积是50.143703

试用 1

#include <stdio.h>
double function(double a){
    double area;
    area = 3.14159*((a/2)*(a/2)*2);
    return area;
}

int main(void){

    double a;
    scanf("%f",a);
    double result = function(a);
    printf("Area of the circle is %f\n",result);
    return 0;
}

试用 2

#include <stdio.h>
int main(void){


    scanf("%f",a);
    area = 3.14159*((a/2)*(a/2)*2);
    printf("Area of the circle is %f\n",area);
    return 0;
}

不胜感激,不知道为什么该功能不起作用。感谢您的宝贵时间。

【问题讨论】:

  • 看起来第二个缺少double area;double a;
  • 如果你的编译器挂在这个代码上,你可能应该得到一个不同的。任何工作的编译器都应该在此代码上产生一些错误消息。参见例如here
  • scanf("%f",a); 更改为scanf("%f",&amp;a);。这段代码与 c++ BTW 有什么关系?对我来说,它看起来像普通的 c 代码。
  • 还可以考虑使用std::cinstd::cout。他们会轻松完成您需要的 IO。
  • 输入 1:1.41421356237 输出 1:圆的面积是 3.141590 写这篇文章的人对几何有着有趣的想法。

标签: c function main


【解决方案1】:

在您的第一次试用中,您需要将scanf("%f",a); 行更改为:

scanf("%lf",&a);

因为 double 的正确类型说明符是 %lf,它代表“long float”。您还需要发送 &amp;a 作为参数,因为 scanf 需要一个地址而不是一个值。二审也是一样。

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 2022-01-13
    • 2011-07-25
    • 2012-03-17
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多