16级C++第一次上机解题报告
来源:互联网 发布:网络bug是什么意思啊 编辑:程序博客网 时间:2024/05/22 03:47
A 小山坡
时间限制:1000ms 内存限制:65536kb
通过率:179/181 (98.90%) 正确率:179/261 (68.58%)
题目描述
画出一个小山坡。
输入
没有输入。
输出
画出的小山坡。
输入样例
输出样例
/\
/\ / \ /\
/\/ \/ \""/ \
考察知识点
输出语句,转义符的使用
解题思路
直接输出即可
参考代码1(stdio版)
#include <cstdio>int main() { printf(" /\\ \n"); printf(" /\\ / \\ /\\ \n"); printf("/\\/ \\/ \\\"\"/ \\"); return 0;}
参考代码2(iostream版)
#include<iostream>using namespace std;int main() { cout << " /\\\n" << " /\\ / \\ /\\\n" << "/\\/ \\/ \\\"\"/ \\\n"; return 0;}
助教的话
这题助教打算简单的考一下转义符(当然包括复制粘贴的用法)并且让你们分清楚/和\的区别。然后发现有些同学使用原义字符串来写,思路也非常不错。然后这题打图案顺便演示了一下黑框程序是可以做简单的图形的(有兴趣的同学可以搜索ASCII艺术)
B 取出十位数
时间限制:1000ms 内存限制:65536kb
通过率:179/180 (99.44%) 正确率:179/234 (76.50%)
题目描述
给定一个自然数,取出它的十位上的数字。
输入
一个自然数 n
(0≤n≤2^31−1) 。
输出
取出的十位上的数字。
输入样例
123456789
输出样例
8
考察知识点
基本数据类型int的使用及操作
解题思路
对于输入的数,先除以10再对10取模即可。
即:ans=n/10%10
不推荐把数字作为字符串处理,因为需要对小于10的数进行额外处理。
参考代码
#include<iostream>using namespace std;int main() { int n; while (cin >> n) cout << n / 10 % 10 << endl;}
助教的话
这个题主要演示一下利用取模和除法完成数位的提取。以提取十位数为例,有很多方法可以提取,一个通用的方法是/10%10,不停的进行这一过程,可以很容易提取出各个位的数字。同样有同学尝试使用字符串来读取和处理,也是可取的思路,只不过要注意没有十位的情况。在提取各个位的时候,使用字符串,同样是要注意不存在的位数的处理。
后期学习进制转换时也与本题所涉及的数位提取有很大关联。
C 重力加速度
时间限制:1000ms 内存限制:65536kb
通过率:177/180 (98.33%) 正确率:177/312 (56.73%)
题目描述
小罗乘着他秘密制造的宇宙飞船来到了另一个未知的星球探索。在下飞船之前,小罗需要确认这个星球的重力加速度。
但是飞船上的加速度仪在着陆的时候受到撞击卡住了。
于是他打算使用一个重锤与打点计时器(50Hz)(50Hz)来测量重力加速度。将重锤放在高处,穿入纸带,开启打点计时器,然后使重锤落下。
取纸带与直尺对齐,以与重锤相同的位置为零点,每5个点读数(单位cmcm)。
现在来利用逐差法求出重力加速度的估计值,单位为 m/s2m/s2。
如图所示。
输入
9个数据,为纸带的直接读数(图中的O、A、B、C……),精确到小数点后2位。
输出
重力加速度的估计值,保留2位小数。
输入样例
0.00 1.00 3.00 6.00 10.00 15.00 21.00 28.00 36.00
输出样例
1.00
输出格式说明
保留2位小数: c++中保留小数需要使用iomanip头文件。像这样
#include<iomanip>
输出一个数的时候这样,
double a;
cin>>a;
cout<<fixed<<setprecision(2)<<a<<endl;
这样即对a这个double数字保留了小数点后两位小数。
hint
高中物理忘差不多的童鞋看这里:
首先用纸带的直接读数作差,算出每两个点之间的距离
S1,S2,S3,…,SnS1,S2,S3,…,Sn
然后代入方程
Sj−Si=(j−i)git2Sj−Si=(j−i)git2
用后一半减前一半,
分别解出g1,g2,…,g⌈n2⌉g1,g2,…,g⌈n2⌉,然后求平均值作为估计值
g=∑⌈n2⌉i=0gi⌈n2⌉
考察知识点
基本数据类型float/double的使用及操作
解题思路
依次读入9个数,按照Hint中给的式子进行计算即可。
参考代码
#include<iostream>#include<iomanip>using namespace std;int main() { double s1, s2, s3, s4, s5, s6, s7, s8, s9, g; cin >> s1 >> s2 >> s3 >> s4 >> s5 >> s6 >> s7 >> s8 >> s9; g = (s9 - s5 - s5 + s1) / 16; cout << fixed << setprecision(2) << g << endl; return 0;}
助教的话
这题主要考察一个浮点数的算术操作问题(虽然大部分人的问题都是公式看不懂)。同时助教搞这么长的纸带还有一个目的(肯定会觉得申请那么多变量写那么多一样的公式很烦的对吧)就是引入一下循环的好处和作用。
很多同学意识非常好化简了公式得到了结果,而有些同学没按照公式做导致错误。
虽然本题要求了保留两位小数,基本没有浮点误差,但是浮点数精度仍然是许多编程语言(包括C++)里的大问题。简单的来说,所有的浮点数在计算机里表示出来都会差一点,多次运算以后就会差很多(double大概能够到15位有效数字请自行琢磨),这也是导致运算以后的浮点数不能严格相等的原因(差有效数字后的16位什么的)。以后编程的时候大家也要多多注意。
- 16级C++第一次上机解题报告
- 15级算法第一次上机解题报告
- 【作业解答】第一次上机作业解题报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次C程序设计上机报告
- 第一次c程序设计上机报告
- 第一次C程序设计上机报告
- 第一次c程序设计上机报告
- 第一次C程序设计上机报告
- Redis有序集合命令ZREVRANGEBYSCORE详解与应用
- 148.Sort Colors-颜色分类(中等题)
- 查看mysql数据库引擎
- 周五考试时写的作业
- discuz安装步骤
- 16级C++第一次上机解题报告
- HTTP协议—— 简单认识TCP/IP协议
- POC注意事项
- const 和 #define区别
- PVID - 基于端口的VID
- swift guard关键字使用
- C++中引用(&)的用法和应用实例
- 16级C++第二次上机解题报告
- C++中struct和class的区别