C不能计算圆的面积和周长的程序

时间:2019-10-15 15:10:11

标签: c

问题:

当我尝试编译程序时,我得到3条错误语句,其中2条与使用pow数学函数尝试对半径变量求平方有关。最后一条错误声明指出,我在第11行上缺少分号,但我看不到哪里。对于这些新手问题,我深表歉意,希望您能有所帮助。

我尝试过的事情:

我已经尝试过仅通过“ radius * radius”来获取radius ^ 2,而不是使用pow(radius,2,0);并且可以,但是我仍然收到“期望的第11行”错误。另外,对于我的任务,我需要使用pow函数,因此有必要让它正常工作。

我的代码

#include <stdio.h> //Including standard library

double calculatingFunction(diameter) {
    const double pi = 3.14159;      //Declaring pi as a constant
    double radius = diameter * 0.5;     //Calculating radius
    double circumference = 2 * pi * radius; //Calculating circumference
    double area = pi * (pow(radius, 2.0));  //Calculating area

    return (circumference, area);   //returning values of circumference of area
}

//Beggning of main function
int main(void) {

    //Prompting User for Input
    printf("Please enter a value for the diameter of a circle"); 

    double diameter; //Variable to store User's input
    scanf("%lf", &diameter); //Scanning for User's input

    //Final Output listing the calculated perimeter and area of circle
    printf("\nPerimeter of Circle: %lf Area of Circle: %lf", 
    calculatingFunction(diameter));


    return 0; //End of Program

}

错误:

homework.c: In function ‘calculatingFunction’:
homework.c:8: warning: implicit declaration of function ‘pow’
homework.c:8: warning: incompatible implicit declaration of built-in 
function ‘pow’
homework.c:11: error: expected ‘;’ before ‘of’

程序目的:

我在代码上留下了注释,因此应该很清楚期望输出什么。该程序基本上是在输入用户的圆直径,然后从中计算出面积和周长。

2 个答案:

答案 0 :(得分:1)

首先,第11行的错误是写入的单词区域,而没有表明它是注释。其次,pow<math.h>内部定义。包括此选项最有可能解决问题,否则请参见this帖子。

最后,主要问题在于return语句。在C语言中,您必须创建一个结构以返回多个值,或使用指针参数。

typedef struct {
    double circumference, area;
} data;

data calculatingFunction(double diameter) {
    ...
    data ret = {circumference, area};
    return ret; //returning values of circumference of area
}

还要将直径声明为double,否则编译器通常会假定参数为intdouble似乎更适合此参数。

答案 1 :(得分:0)

pow() is declared in <math.h>.是否已将其包括在标题中?

(此外,您在第9-10行上的注释正在第二行上运行,转义了注释掉的部分,并导致编译器错误。)