|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
(1) 以下程序的功能是:随机产生2个【10,50】之间的整数a和b,计算(((a-b)/(a+b))*(a/b))的值。运行结果按四舍五入保存4位小数存储到变量中。
#include<time.h>
#include<math.h>
#include<stdlib.h>
void main()
{
int a,b;
float f;
srand(time(0));
a=rand()%41+10;
b=rand()%41+10;
f=(((a-b)/(a+b))*(a/b));
f=(int)(f*10000+0.5)/(float)10000;
printf("a=%d,b=%d,f=%f\n",a,b,f);
getchar();
}
结果f为0.000000 为什么怎么修改,并且改为保留四位小数
本帖最后由 superbe 于 2019-9-29 13:13 编辑
#include<time.h>
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
void main()
{
int a,b,sgn=1;
float f;
srand(time(0));
a=rand()%41+10;
b=rand()%41+10;
f=(((a-b)*1.0/(a+b))*(a*1.0/b)); //这个式子*1.0是将整数变成浮点数再计算,否则整数和整数相除结果还是整数,会截掉小数部分,比如1/2=0
if(f<0) sgn=-1;
f=(int)(fabs(f)*10000+0.5)/(float)10000*sgn; //考虑 f 是负数的情况取绝对值,不能直接+0.5
printf("a=%d,b=%d,f=%f\n",a,b,f); //如果不想显示4位小数后面的零,可以改成f=%.4f
getchar();
}
|
|