Q1.浮点数相除的余
计算两个双精度浮点数a和b的相除的余数,题目的重点在于理解余数的计算方法:
通常情况下,不存在小数相除还有余数的说法,这个题目给小数相除的余数下了一个定义a=k×b+r,我们可以这么理解:比如浮点数a/b=c,c肯定也是一个浮点数,我们只取c的整数部分,也就是定义式中说的k。那么很顺利得到余数r=a-k*b。
k = (int)a/b; // k=a/b的整数部分
r = a - k*b; // 根据定义式a=k×b+r,可以得到r=a-k*b
Q2.球的体积
对于半径为 r 的球,其体积的计算公式为V=4/3πr3,这里取 π=3.14。注意结果是保留到小数点后 2 位。
v=4.0/3*PI*r*r*r; //v是体积
Q3.大象喝水
大象的胃口很大,一次要喝水20升。(注意:1立方分米=1升)
小水桶呢是一个圆筒,也就是圆柱体,深h厘米,底面半径为r厘米,这里取 π=3.14。
那么可以求得一个桶的体积v = h*π*r*r/1000; //除以1000的原因是h和r的单位是厘米,那么计算出来的体积是立方厘米,除以1000转化为立方分米。
由此可以得到总共需要多少桶水:20/v
相除的结果是一个小数,输出结果要求是整数。那么需要向上取整,用ceil()函数。 (ceil函数属于<cmath>库)
v = h*PI*r*r/1000; //求得体积,单位转化成升
cout << ceil(20/v) << endl; //向上取整并输出,比如需要2.1桶,那么相当于要3桶
Q4.苹果和虫子
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
分析:1、虫子在y小时吃坏了多少个苹果:y*1.0/x。由于苹果只要啃一口就算是坏掉了,y和x输入是整数,将计算结果转化成浮点数。注意坏掉的苹果数量(浮点数)要向上取整,而不是向下取整。2、总的苹果数量-坏掉的苹果数量=完整的苹果数量。注意:完整的苹果数量最小只能是0,不能取负数。所以在输出结果之前注意判断结果是不是已经成了负数,如果是负数,那么输出0即可。
e = ceil(y*1.0/x); //e表示坏掉的苹果数量
s = n>e?(n-e):0; //s表示剩余苹果数量,这里用到C++中唯一的三目运算符,比较n和e(n>e?),如果n>e,结果取n-e,否则结果取0
上面的三目运算符,显然也可以用条件选择语句代替:
e = ceil(y*1.0/x); //e表示坏掉的苹果数量
if(n>e){ //条件判断
s=n-e; //s表示剩余苹果数量
}else{
s=0;
}
Q5.时分秒计算
小林同学在操场跑步,他总共用了x秒,请编程将其拆解为小时、分钟、秒输出。
这个任务是需要我们熟练运用除法运算和取模运算,将x秒转化为h小时m分钟s秒输出,比如3661秒=1小时1分1秒。
h = t/3600; //整数t表示输入的秒,转化为h小时m分钟s秒
m = t%3600/60;
s = t%60;