2025-4-8-C++ 学习 顺序结构(下)

2025-4-8-C++学习 顺序结构(下)

(1)知识点1
C++ 确定输出的小数的小数点后的位数,使用以下代码:

    cout.setf(ios::fixed);
    cout.precision(3);

P5706 【深基2.例8】再分肥宅水

题目描述

现在有 t t t 毫升肥宅快乐水,要均分给 n n n 名同学。每名同学需要 2 2 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 3 3 位),以及一共需要多少个杯子。

输入格式

输入一个实数 t t t 和一个正整数 n n n,使用空格隔开。

输出格式

输出两行。

第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。

输入输出样例 #1

输入 #1

500.0 3

输出 #1

166.667
6

说明/提示

对于所有数据, 0 ≤ t ≤ 10000 0\leq t\leq 10000 0t10000 且小数点后不超过 3 3 3 位, 1 ≤ n ≤ 1000 1\leq n\leq 1000 1n1000

题解代码

#include <iostream>
using namespace std;

int main()
{
    double a;
    int b;
    cin>>a>>b;
    cout.setf(ios::fixed);
    cout.precision(3);
    cout<<a/b<<endl;
    cout.precision(0);
    cout<<b*2<<endl;
    return 0;
}

P5708 【深基2.习2】三角形面积

题目描述

一个三角形的三边长分别是 a a a b b b c c c,那么它的面积为 p ( p − a ) ( p − b ) ( p − c ) \sqrt{p(p-a)(p-b)(p-c)} p(pa)(pb)(pc) ,其中 p = 1 2 ( a + b + c ) p=\frac{1}{2}(a+b+c) p=21(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 1 1 1 位小数。

输入格式

第一行输入三个实数 a , b , c a,b,c a,b,c,以空格隔开。

输出格式

输出一个实数,表示三角形面积。精确到小数点后 1 1 1 位。

输入输出样例 #1

输入 #1

3 4 5

输出 #1

6.0

说明/提示

数据保证能构成三角形, 0 ≤ a , b , c ≤ 1000 0\leq a,b,c\leq 1000 0a,b,c1000,每个边长输入时不超过 2 2 2 位小数。

题解代码

主要学习一个要点,这个头文件 #include <bits/stdc++.h> ,还有函数 cout<<fixed<<setprecision(1)<<ans<<endl
#include<bits/stdc++.h>是 C++ 里的一个预处理指令。此指令的作用是包含标准库内几乎所有的头文件。 <bits/stdc++.h>是 GCC 编译器所特有的一个头文件,它涵盖了 C++ 标准库中几乎所有的头文件。一旦包含了这个头文件,你就无需再单独包含像<iostream><vector><algorithm>这类常见的头文件了。

#include<bits/stdc++.h>//万能头文件
using namespace std;

int main()
{
    double a, b, c;
    cin>>a>>b>>c;
    double p = 0.5*(a + b + c);
    double ans = sqrt(p*(p - a)*(p - b)*(p - c));
    cout<<fixed<<setprecision(1)<<ans<<endl;
    return 0;
}

P5707 【深基2.例12】上学迟到

题目描述

学校和 yyy 的家之间的距离为 s s s 米,而 yyy 以 v v v 米每分钟的速度匀速走向学校。

在上学的路上,yyy 还要额外花费 10 10 10 分钟的时间进行垃圾分类。

学校要求必须在上午 8:00 \textrm{8:00} 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。

由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

输入格式

一行两个正整数 s , v s,v s,v,分别代表路程和速度。

输出格式

输出一个 24 24 24 小时制下的时间,代表 yyy 最晚的出发时间。

输出格式为 HH:MM \texttt{HH:MM} HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0 0 0

输入输出样例 #1

输入 #1

100 99

输出 #1

07:48

说明/提示

对于 100 % 100\% 100% 的数据, 1 ≤ s , v ≤ 1 0 4 1 \le s,v \le 10^4 1s,v104

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    double s,v;// This type of data is so important.
    cin >> s >> v;
    int t = (24 + 8) * 60 - (ceil(s / v) + 10);
    // cout << s << v << ceil(s/v)<<endl;
    if (t >= (24 * 60))
    {
        t -= 24 * 60;
    }
    
    int hour = t / 60;
    int minute = t % 60;
    if (hour < 10) 
    {
        cout << "0" << hour << ":";
    }
    else
    {
        cout << hour<<":";
    }
    if (minute < 10)
    {
        cout << "0" << minute << endl;
    }
    else
    {
        cout << minute << endl;
    }
    return 0;
}

B2029 大象喝水

题目描述

一只大象口渴了,要喝 20 20 20 升水才能解渴,但现在只有一个深 h h h 厘米,底面半径为 r r r 厘米的小圆桶 ( h h h r r r 都是整数)。问大象至少要喝多少桶水才会解渴。

Update:数据更新,这里我们近似地取圆周率 π = 3.14 \pi = 3.14 π=3.14

输入格式

输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深 h h h 和底面半径 r r r,单位都是厘米。

输出格式

输出一行,包含一个整数,表示大象至少要喝水的桶数。

输入输出样例 #1

输入 #1

23 11

输出 #1

3

说明/提示

数据规模与约定

对于全部的测试点,保证 1 ≤ h ≤ 500 1 \leq h \leq 500 1h500 1 ≤ r ≤ 100 1 \leq r \leq 100 1r100

题解代码

注意:单位上的换算,1L = 1000 mL

#include <bits/stdc++.h>
using namespace std;

int main()
{
    double h, r, area;
    cin >> h >> r;
    area = 3.14 * h * r * r * 0.001;
    cout << ceil(20.0 / area);
    return 0;
}

P1425 小鱼的游泳时间

题目描述

伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。

这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 24 24 24 小时制计算),它发现自己从 a a a b b b 分一直游泳到当天的 c c c d d d 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?

小鱼游的好辛苦呀,你可不要算错了哦。

输入格式

一行内输入四个整数,以空格隔开,分别表示题目中的 a , b , c , d a, b, c, d a,b,c,d

输出格式

一行内输出两个整数 e e e f f f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f f f 应该小于 60 60 60

输入输出样例 #1

输入 #1

12 50 19 10

输出 #1

6 20

说明/提示

对于全部测试数据, 0 ≤ a , c ≤ 24 0\le a,c \le 24 0a,c24 0 ≤ b , d ≤ 60 0\le b,d \le 60 0b,d60,且结束时间一定晚于开始时间。

题解代码

主要是 if 条件的设置

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    if (d > b)
    {
        cout << (c - a) << " " << (d - b) <<endl;
    }
    else
    {
        cout << (c - a - 1) << " " << (60 + d - b) <<endl;
    }
    return 0;
}

P1421 小玉买文具

题目描述

班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一只签字笔的价格是 1 1 1 9 9 9 角,而班主任给小玉的钱是 a a a b b b 角,小玉想知道,她最多能买多少只签字笔呢。

输入格式

输入只有一行两个整数,分别表示 a a a b b b

输出格式

输出一行一个整数,表示小玉最多能买多少只签字笔。

输入输出样例 #1

输入 #1

10 3

输出 #1

5

说明/提示

数据规模与约定

对于全部的测试点,保证 0 ≤ a ≤ 1 0 4 0 \leq a \leq 10^4 0a104 0 ≤ b ≤ 9 0 \leq b \leq 9 0b9

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    cout << (a * 10 + b) / 19;
    return 0;
}

P3954 [NOIP 2017 普及组] 成绩

题目背景

NOIP2017 普及组 T1

题目描述

牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:

总成绩 = 作业成绩 × 20 % + 小测成绩 × 30 % + 期末考试成绩 × 50 % \text{总成绩}=\text{作业成绩}\times 20\%+\text{小测成绩}×30\%+\text{期末考试成绩} \times 50\% 总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%

牛牛想知道,这门课程自己最终能得到多少分。

输入格式

三个非负整数 A , B , C A,B,C A,B,C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是 100 100 100 分。

输出格式

一个整数,即牛牛这门课程的总成绩,满分也是 100 100 100 分。

输入输出样例 #1

输入 #1

100 100 80

输出 #1

90

输入输出样例 #2

输入 #2

60 90 80

输出 #2

79

说明/提示

样例 1 说明

牛牛的作业成绩是 100 100 100 分,小测成绩是 100 100 100 分,期末考试成绩是 80 80 80 分,总成绩是 100 × 20 % + 100 × 30 % + 80 × 50 % = 20 + 30 + 40 = 90 100 \times 20\%+100 \times 30\%+80 \times 50\%=20+30+40=90 100×20%+100×30%+80×50%=20+30+40=90

样例 2 说明

牛牛的作业成绩是 60 60 60 分,小测成绩是 90 90 90 分,期末考试成绩是 80 80 80 分,总成绩是 60 × 20 % + 90 × 30 % + 80 × 50 % = 12 + 27 + 40 = 79 60 \times 20\%+90 \times 30\%+80 \times 50\%=12+27+40=79 60×20%+90×30%+80×50%=12+27+40=79

数据说明

对于 30 % 30\% 30% 的数据, A = B = 0 A=B=0 A=B=0

对于另外 30 % 30\% 30% 的数据, A = B = 100 A=B=100 A=B=100

对于 100 % 100\% 100% 的数据, 0 ≤ A , B , C ≤ 100 0≤A,B,C≤100 0A,B,C100 A , B , C A,B,C A,B,C 都是 10 10 10 的整数倍。

题解代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    cout << (a * 0.2 + b * 0.3 + c * 0.5);
    return 0;
}

小结

顺序结构,理解的差不多了,继续往后面走。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值