1. 主页
  2. 文档
  3. Level1题解(1-10)
  4. 第8课 顺序结构

第8课 顺序结构

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;

文章