我遇到以下代码问题:
#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作为输出?
答案 0 :(得分:7)
您的打印声明是:
printf("\nArea of circle is %d\n",area);
area
是float
,您使用的是%d
格式字符串,适用于int
个变量。这不会奏效 - 使用%e
,%f
,%g
或%a
。
答案 1 :(得分:4)
对于浮点数,请在printf中使用%f。更一般地说,要非常小心地将printf中的%与传递的参数进行匹配。没有检查,这完全由程序员负责
printf("\nArea of circle is %f\n",area);
答案 2 :(得分:2)
您正在使用%d
打印float
这是您的问题。
除了你的错误之外还有一件事:
只是不要被conio.h
困住,好的......继续生活:)
答案 3 :(得分: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);
答案 4 :(得分:0)
printf(“\ nArea of circle is%d \ n”,area);
区域是浮动的,因此上述语句不起作用,请使用下面正确的语句:
printf(“\ nArea of circle is%f \ n”,area);