搜索
查看: 2000|回复: 7
打印 上一主题 下一主题

计算圆的面积,结果里得有小数,哪里错了吗?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-4 03:14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币


#include <stdio.h>
   float area(r)
  {
      return 3.14*r*r;
   }
   void main()
   {
             float a,r=2.3;
        a=area(r);
        printf("the area is %f",a);
        getchar();
    }

最佳答案

查看完整内容

记得声明函数原型,此外永远不要写void main()
沙发
发表于 2013-4-4 03:14:10 | 只看该作者
  1. #include <stdio.h>
  2.    float area(float);

  3.    int main()
  4.    {
  5.         float a,r=2.3;
  6.         a=area(r);
  7.         printf("the area is %f",a);
  8.         getchar();
  9.         return 0;
  10.     }

  11.     float area(float r)
  12.     {
  13.       return 3.14 * r * r;
  14.     }
复制代码
记得声明函数原型,此外永远不要写void main()
板凳
 楼主| 发表于 2013-4-4 03:15:28 | 只看该作者
要求计算半径为2.3的圆的面积,编写一个函数并要在主函数里调用它
地板
发表于 2013-4-4 09:09:07 | 只看该作者
#include<stdio.h>
float area(float r);
void getr(float r);
const PI=3.14159;
int main()
{
int r0;
getr(r0);
area(r0);
return 0;
}
float area(float r)
{
float area;
float area=PI*r*r;
printf("The area is %f",area);
}

void getr(float r)
{
printf("Please input r");
scanf("%f",&r);
}

5#
发表于 2013-4-4 09:13:37 | 只看该作者
你申明的函数 float area(r)
  {
      return 3.14*r*r;
   }
没有指定 “r” 的类型,就按照默认类型int了,你输入的float强制转换成int,算完有强制转换成了float
6#
发表于 2013-4-4 11:01:20 | 只看该作者
cha 发表于 2013-4-4 09:09
#include
float area(float r);
void getr(float r);

你这样写
首先,C语言的符号常量不用const,而是用宏
#define PI 3.14159
其次,习惯上控制输入输出的语句是放在主函数里,多写一个函数会增加运行时的开销
最后,r0定义的时候是int型,后面的操作全是float型
7#
发表于 2013-4-4 11:12:06 | 只看该作者
cha 发表于 2013-4-4 09:13
你申明的函数 float area(r)
  {
      return 3.14*r*r;

转换成int明显不是这个结果
这是兼容old style C造成的问题

float arer(r)
没有声明r的类型,编译器认为这是old style C的写法,于是跳过了语法检查
但实际上下面也没声明r的类型,于是就出现奇怪的结果
8#
发表于 2013-4-4 15:43:58 | 只看该作者
都是看不懂的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表