2017-05-14 43 views
-1

我想让这段代码运行,我试过了这两种方式,但无济于事。其目的是使用scanf接收输入并使用printf输出语句。我收到的错误消息是编译器只是挂起。C++主要功能和程序

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

测试用例和期望答案

输入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; 
} 

希望得到任何帮助,不知道为什么功能无法正常工作。感谢您的时间。

+1

看起来像第二个缺少'double area;'和'double a;' – user4581301

+2

如果你的编译器挂在这个代码上,你可能应该得到一个不同的代码。任何工作编译器都应该在此代码上生成一些错误消息。参见例如[here](http://ideone.com/K8BcVK) – user463035818

+0

将'scanf(“%f”,a);''转换为'scanf(“%f”,&a);'这个代码与什么有关C++和BTW?它看起来像普通的c代码给我 –

回答

2

在你的第一次试验就需要你scanf("%f",a);行更改为:

scanf("%lf",&a); 

因为双正确的类型说明符是%lf代表“长漂”。你也需要发送&a作为参数,因为scanf需要一个地址而不是一个值。二审同样的事情。