-1

我在使用以下代码时遇到问题:

#include<stdio.h>
#include<conio.h>
float area_crcl(int);
float area_rect(int,int);

void main()
 {
 int n,a,b,r;
 float area;
 clrscr();
  printf("\nEnter your choice-\n1.Area of circle\n2.Area of Square\n3.Area of Rectangle\n");
  scanf("%d",&n);
   switch(n)
     {
     case 1:printf("\nEnter the radius of circle..\n");
        scanf("%d",&r);
        area=area_crcl(r);
        printf("\nArea of circle is %d\n",area);
        break;

     case 2:printf("\nenter the edge of square\n");
        scanf("%d",&a);
        area=area_rect(a,a);
        printf("\nArea of square is %d\n",area);
        break;

     case 3:printf("\nenter the lenght n breadth of rectangle\n");
        scanf("%d%d",&a,&b);
        area=area_rect(a,b);
        printf("\nArea of rectangle is %d\n",area);
        break;

     default:printf("\nU entered wrong choice..\n");
   }
  getch();
 }

 float area_crcl(int r)
   {
    float area;
    area=3.14*r*r;
    return area;
   }

 float area_rect(int a,int b)
   {
    float area;
    area=a*b;
    return area;
   }

我得到的输出是:

输入您的选择 - 1.圆的面积 2.正方形的面积 3.矩形的面积 1

输入圆的半径.. 2

圆的面积为 0

为什么我得到 0 作为输出?

4

5 回答 5

7

您的打印声明是:

printf("\nArea of circle is %d\n",area);

area是 afloat并且您使用的%d是用于int变量的格式字符串。那行不通 - 使用%e, %f, %g, 或%a.

于 2013-07-13T18:21:31.780 回答
4

对于浮点数,请在 printf 中使用 %f。更一般地,要非常小心地将 printf 中的 % 与传递的参数匹配。没有检查,这完全由程序员负责

printf("\nArea of circle is %f\n",area);
于 2013-07-13T18:23:50.257 回答
2

您正在使用%d打印float那是您的问题。

除了您的错误之外,还有一件事:

只是不要被困住conio.h,好吧......继续生活:)

于 2013-07-13T18:25:22.083 回答
0

area是类型float,您正在使用%d说明符来打印它。功能

 area_rect()
 area_crcl()

两者都返回分配给的浮点值area(也是浮点数)
更改

 printf("\nArea of circle is %d\n",area);

 printf("\nArea of circle is %f\n",area);
于 2013-07-13T18:23:17.917 回答
0

printf("\n圆的面积是%d\n",area);

面积是浮动的,所以上面的语句不起作用,请使用下面正确的一个:

printf("\n圆的面积是%f\n",area);

于 2013-07-13T18:23:59.373 回答