#include <stdio.h>
#define PI 3.14159
int Circle (int);
int Rectangle (int, int);
int main()
{
int a;
int b;
int c;
int d;
int area;
int AreaOfCircle;
int AreaOfRectangle;
int area1;
printf("Program to calculate area\n");
printf("1 - Circle\n");
printf("2 - Rectangle\n");
printf("\n");
printf("What option = \n");
scanf("%d", &a);
if(a=1)
{
area=Circle(b);
printf("Area= %d\n", area);
}
else if(a=2)
{
area1=Rectangle(c,d);
printf("Area= %d\n", area1);
}
return 0;
}
int Circle (int b)
{
int area;
printf("radius= \n");
scanf("%d", &b);
area=PI*b*b;
return area;
}
int Rectangle(int c, int d)
{
int area1;
printf("length= \n");
scanf("%d",&c);
printf("width= \n");
scanf("%d",&d);
area1=c*d;
return area1;
}
//我想问我的编码是否正常..但是当我运行它时输出只询问半径,这是圆的调用函数..但是如果我想调用矩形,输出也会显示圆的计算..有人可以帮助我发现错误..顺便说一下这是我关于调用函数的第一个编码,我上个月刚开始学习编码c .. TT
答案 0 :(得分:1)
使用C,您可以使用==来评估(例如if(x == 1))。 &#34; =&#34;是作业,所以你总是会碰到第一个街区。
此外,您正在接受您当时正在修改的参数,这不是一个好习惯。考虑在使用时也声明你的变量,&#34;块顶部的所有内容&#34;范式非常过时。
这个问题不关于函数式编程,这是命令式编程的一个例子。
此外,您的输入直接倾注到一个整数未被检查边界,考虑一个开关/案例,所以你可以添加一个默认的&#34;无效输入&#34;并在未来扩展到不同的形状。
答案 1 :(得分:0)
是的,只要make(a == 1)和if if(a == 1)。
答案 2 :(得分:0)
您已使用作业=
运算符而非比较==
运算符。
像
这样的陈述if(a=1)
会将1
的值分配给a
并检查然后检查a
的非零值[总是评估为TRUE]。
相反,你想要的是
if (a == 1)
如果a
包含1
,则评估为TRUE。对于其他比较也是如此。
注意:在int Circle (int b)
案例中,您将结果存储到int
,这将截断double
/ float
乘法的结果。要获得准确值,请将area
设为float
或double
并使用%f
/ %lf
格式说明符。
接下来,根据逻辑部分,您不需要将b
,c
,d
作为参数传递给被调用的函数。只需函数中的局部变量即可完成任务。