请问这个代码有设么问题吗,运行没有错,但是结果不正常
|
#include#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;} |
免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。
版权声明:作者保留权利,不代表本站立场。
|
|
|
|
|
|
|
include//此处头文件改为:#include#definepi3.1415926intarea(doubler);main(){ intx,m; printf("pleaseinputx:"); scanf("%f",&x);//错误一:你上面定义时,x为int类型,但是这里却用的是%f格式 m=area(x);//看area的函数参数为double类型,x却为整形 printf("%f\n",m);//area函数返回值类型为int,你这里却用%f格式输出 return0;}//下面函数体错误就省略了intarea(doubler){ doublec; //s=pi*r*r; c=2*pi*r; returnc;}/*
*所以 整个程序到处弥漫着 强制转换 精度损失 的气息
*解决办法, 把所有类型 改为 double类型, 输入输出 都用 %lf 格式控制
*/
#include#definePI3.1415926//#define定义的变量,记得全部大写,,如果不信,可以看书,绝对有的doublearea(doubler);intmain(){ doublex,m; printf("pleaseinputx:"); scanf("%lf",&x); //printf("%lf\n",area(x)); printf("%.2lf\n",area(x));//为了整洁,这里输出保留两位小数 return0;}doublearea(doubler){ return2*PI*r;}另外,贴代码, 要像上面这样贴......
你那样太乱了
-----------------------------------------------------分--割--线--------------------------------------------------------------
啦啦~~Imcainiao |
|
|
|
|
|
|
|
|
写代码没用代码格式,一般人是不想看的。很乱没有可读性 |
|
|
|
|
|
|
|