使用函数编程矩形的长度和面积

时间:2016-05-24 01:44:19

标签: c

我需要编写一个程序来计算矩形的面积和周长。它必须使用该区域的功能,以及周边的第二功能。

perimeter = 2 x length + 2 x width = 2l + 2w
area = legnth x width = l x w

到目前为止,我的代码是:

#include <stdio.h>
double perimeter(double x);
double area(double w);
int main (){
    double x, w;
    printf("Enter the length: ");
    scanf("%lf", &x);
    prntf("Enter the width: ");
    scanf("%lf", &w)
    printf("The perimeter is %lf\n", perimeter);
    printf("The area is %lf\n", area);
    return 0;   
}   
double perimeter(double x, w){
    return (2*x)+(2*w);
}
double area(double x, w){
    return (x*w);
}

我收到以下错误:

  

(17):错误C2146:语法错误:缺少';'在标识符'printf'之前   (17):警告C4477:'printf':格式字符串'%lf'需要类型为'double'的参数,但是variadic参数1的类型为'double(___ cdecl *)(double)'
  (18):警告C4477:'printf':格式字符串'%lf'需要类型为'double'的参数,但是variadic参数1的类型为'double(___ cdecl *)(double)''   (21):错误C2081:'w':正式参数列表中的名称非法
  (21):警告C4029:声明正式参数列表与定义
不同   (24):错误C2081:'w':正式参数列表中的名称非法
  (24):警告C4029:声明形式参数列表与定义

不同

5 个答案:

答案 0 :(得分:2)

而不是double perimeter(double x, w),使用像double perimeter(double x, double w)这样的参数编写函数。

答案 1 :(得分:2)

这里有一些问题。

首先,定义的函数与声明的函数不匹配:

//Declared:
double perimeter(double x);
double area(double w);

//Defined:
double perimeter(double x, w){
    return (2*x)+(2*w);
}
double area(double x, w){
    return (x*w);
}

在函数声明中,您只有一个参数,但在您的定义中,您尝试使用两个参数。

试试这个:

double perimeter(double length, double width){
    return (2*length)+(2*width);
}
double area(double length, double width){
    return (length*width);
}

第二个问题是当你打电话给你的职能时:

printf("The perimeter is %lf\n", perimeter);
printf("The area is %lf\n", area);

您没有将长度 width 值传递给您的函数。 第二次扫描后你也错过了分号。

尝试一下:

int main (){
    double length, width;
    printf("Enter the length: ");
    scanf("%lf", &length);
    prntf("Enter the width: ");
    scanf("%lf", &width);
    printf("The perimeter is %lf\n", perimeter(length, width);
    printf("The area is %lf\n", area(length, width);
    return 0;   
}   
祝你好运。

答案 2 :(得分:0)

在下面的代码中,您的程序运行良好,错误就是您使用函数的方式,考虑上面其他人写的东西。

#include <stdio.h>

double perimeter(double x, double w){
    return (2*x)+(2*w);
}
double area(double x, double w){
    return (x*w);
}

int main (){
    double x, w;
    printf("Enter the length: ");
    scanf("%lf", &x);
    printf("Enter the width: ");
    scanf("%lf", &w);
    printf("The perimeter is %lf\n", perimeter(x,w));
    printf("The area is %lf\n", area(x,w));
    return 0;
}

与您的代码核对并查找错误。

答案 3 :(得分:0)

您的代码存在问题

声明和定义不匹配。正确的声明是
double perimeter(double w, double x)double area(double w,double x)

注意:请记住,在声明,定义和调用相应的函数时,参数的顺序,类型和数量必须匹配。

当你在printf中调用函数perimeterarea时,你没有传递参数。正如您在声明和函数定义中所看到的那样,您使用了perimeter(double x,w)area(double x,w)

所以正确的行是

 printf("The perimeter is %lf\n", perimeter(x,w));
 printf("The area is %lf\n", area(x,w));

答案 4 :(得分:-1)

好吧,你似乎犯了更多的错误,所以我纠正了所有错误并发布了一个完整更正代码的新答案,你可以将它与你的错误进行比较。

#include <stdio.h>
double perimeter(double x, double w);
double area(double x, double w);
int main (){
    double x, w;
    printf("Enter the length: ");
    scanf("%lf", &x);
    printf("Enter the width: ");
    scanf("%lf", &w);
    printf("The perimeter is %lf\n", perimeter(x, w));
    printf("The area is %lf\n", area(x, w));
    return 0;
}
double perimeter(double x, double w){
    return (2*x)+(2*w);
}
double area(double x, double w){
    return (x*w);
}