2016-05-24 36 views
1

我需要编写一个程序来计算矩形的面积和周长。它必须使用该区域的功能,并为周界使用第二个功能。使用函数的矩形长度和面积程序

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): error C2146: syntax error: missing ';' before identifier 'printf'
(17): warning C4477: 'printf' : format string '%lf" requires an argument of type 'double', but variadic argument 1 has type 'double (___cdecl *)(double)'
(18): warning C4477: 'printf' : format string '%lf" requires an argument of type 'double', but variadic argument 1 has type 'double (___cdecl *)(double)''
(21): error C2081: 'w': name in formal parameter list illegal
(21): warning C4029: declared formal parameter list different from definition
(24): error C2081: 'w': name in formal parameter list illegal
(24): warning C4029: declared formal parameter list different from definition

回答

2

相反的double perimeter(double x, w),写函数像这样double perimeter(double x, double w)参数。

+1

谢谢你,拿了一堆错误的照顾。 (17)警告C4477:'printf':格式化字符串'%lf'需要和'double'类型的参数,但可变参数1的类型是double(___cdecl *)(double,double)' – Thad

+0

我明白了。 – Thad

-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); 
} 
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); 

你是不是经过长度宽度值的功能。 你也在第二次扫描后错过了一个分号。

试试这个:

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

好运。

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

检查此代码与您的并找到您的错误。

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)); 
相关问题