编程C调用圆和矩形的函数区域

时间:2015-01-31 15:31:41

标签: c

#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

3 个答案:

答案 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设为floatdouble并使用%f / %lf格式说明符。

接下来,根据逻辑部分,您不需要将bcd作为参数传递给被调用的函数。只需函数中的局部变量即可完成任务。