请问这个代码有设么问题吗,运行没有错,但是结果不正常

 

#include<stdio.h>
#define pi 3.1415926
int area(double r);
main(){

 int x,m;
 printf("please input x:");
 scanf("%f",&x);
 m=area(x);
 printf("%f\n",m);
    return 0;

}
int area(double r)
{
 double  c;
 //s=pi*r*r;
 c=2*pi*r;
 return c;

}

dRill
浏览 1420回答 3
3回答

Yexiaomo

include<stdio.h>//此处 头文件 改为: #include<stdio.h> #define pi 3.1415926 int area(double r); main(){  int x,m;  printf("please input x:");  scanf("%f",&x); //错误一: 你上面定义时, x 为 int 类型, 但是这里却用的是 %f 格式   m=area(x); //看area的函数参数为 double 类型, x 却为 整形  printf("%f\n",m); //area 函数 返回值类型为 int , 你这里却用 %f 格式输出  return 0; } //下面函数体错误就省略了 int area(double r) {  double  c;  //s=pi*r*r;  c=2*pi*r;  return c; }/**所以 整个程序到处弥漫着 强制转换 精度损失 的气息*解决办法, 把所有类型 改为 double类型, 输入输出 都用 %lf 格式控制*/#include<stdio.h> #define PI 3.1415926 //#define 定义的 变量, 记得全部大写,, 如果不信, 可以看书,绝对有的 double area(double r); int main(){  double x,m;  printf("please input x: ");  scanf("%lf",&x);  //printf("%lf\n", area(x));  printf("%.2lf\n", area(x));//为了整洁, 这里输出保留两位小数  return 0; } double area(double r) { return 2*PI*r; }另外,贴代码, 要像上面这样贴......你那样太乱了-----------------------------------------------------分--割--线--------------------------------------------------------------啦啦~~Imcainiao

杜发明

写代码没用代码格式,一般人是不想看的。很乱没有可读性
打开App,查看更多内容
随时随地看视频慕课网APP