Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用函数计算矩形的长度和面积_C - Fatal编程技术网

C 用函数计算矩形的长度和面积

C 用函数计算矩形的长度和面积,c,C,我需要写一个程序来计算矩形的面积和周长。它必须为面积使用一个函数,为周长使用第二个函数 周长=2x长+2x宽=2l+2w 面积=长x宽=长x宽 到目前为止,我的代码是: #include <stdio.h> double perimeter(double x); double area(double w); int main (){ double x, w; printf("Enter the length: "); scanf("%lf", &x)

我需要写一个程序来计算矩形的面积和周长。它必须为面积使用一个函数,为周长使用第二个函数

周长=2x长+2x宽=2l+2w
面积=长x宽=长x宽
到目前为止,我的代码是:

#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);
}
#包括
双周长(双x);
双面积(双w);
int main(){
双x,w;
printf(“输入长度:”);
扫描频率(“%lf”、&x);
prntf(“输入宽度:”);
扫描频率(“%lf”、&w)
printf(“周长为%lf\n”,周长);
printf(“区域为%lf\n”,区域);
返回0;
}   
双周长(双x,双w){
返回(2*x)+(2*w);
}
双面积(双x,双w){
返回(x*w);
}
我收到以下错误:

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


不要用
双周长(双x,双w)
,而是用如下参数编写函数
双周长(双x,双w)

好的,似乎您有更多的错误,所以我将它们全部更正,并发布一个带有完整更正代码的新答案,您可以将其与您的答案进行比较

#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);
}
#包括
双周长(双x,双w);
双面积(双x,双w);
int main(){
双x,w;
printf(“输入长度:”);
扫描频率(“%lf”、&x);
printf(“输入宽度:”);
扫描频率(“%lf”、&w);
printf(“周长为%lf\n”,周长(x,w));
printf(“面积为%lf\n”,面积(x,w));
返回0;
}
双周长(双x,双w){
返回(2*x)+(2*w);
}
双面积(双x,双w){
返回(x*w);
}

这里有几个问题

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

//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);
}
printf("The perimeter is %lf\n", perimeter);
printf("The area is %lf\n", area);
在函数声明中,您只有一个参数,但在定义中,您尝试使用两个参数

试试这个:

double perimeter(double length, double width){
    return (2*length)+(2*width);
}
double area(double length, double width){
    return (length*width);
}
第二个问题是调用函数时:

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

祝你好运
#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;
}
#包括
双周长(双x,双w){
返回(2*x)+(2*w);
}
双面积(双x,双w){
返回(x*w);
}
int main(){
双x,w;
printf(“输入长度:”);
扫描频率(“%lf”、&x);
printf(“输入宽度:”);
扫描频率(“%lf”、&w);
printf(“周长为%lf\n”,周长(x,w));
printf(“面积为%lf\n”,面积(x,w));
返回0;
}

请将此代码与您的代码一起检查并查找错误

代码的问题是

声明和定义不匹配。正确的声明应该是
双周长(双w,双x)
双区域(双w,双x)

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

在printf中调用函数
periment
area
时,不能传递参数。正如您在所使用的函数声明和定义中所看到的那样,
周长(双x,w)
面积(双x,w)

所以正确的路线应该是

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

谢谢你们,这解决了很多错误。现在我开始讨论这个问题:(17)警告C4477:“printf”:格式字符串“%lf”需要类型为“double”的参数,但变量参数1的类型为double(uuuuuu cdecl*)(double,double)”,我已经弄明白了。