为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
dRill 2016-10-26 11:00:35
 #include<stdio.h>#define pi 3.1415926int 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;}
查看完整描述

3 回答

已采纳
?
Yexiaomo

TA贡献152条经验 获得超157个赞

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

查看完整回答
3 反对 回复 2016-10-26
?
杜发明

TA贡献202条经验 获得超301个赞

写代码没用代码格式,一般人是不想看的。很乱没有可读性

查看完整回答
2 反对 回复 2016-10-26
  • 3 回答
  • 0 关注
  • 1419 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信