我需要编写一个程序来计算矩形的面积和周长。它必须使用该区域的功能,以及周边的第二功能。
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:声明形式参数列表与定义
答案 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中调用函数perimeter
和area
时,你没有传递参数。正如您在声明和函数定义中所看到的那样,您使用了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);
}