| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 程设思维实践-实验E1 -> 正文阅读 |
|
[C++知识库]程设思维实践-实验E1 |
程设思维实践-实验E1
本次实验线上进行,推荐大家使用 CSP(ubuntu) 环境进行实验(Windows 也可以进行实验)。A : 签到题【请在实验开始5分钟内完成签到】???????请在比赛开始 5分钟 以内提交以下代码进行签到。
B : Slot???????给出一个长度为3的字符串,所有字母均为大写英文字母,请判断该字符串是否由同一个字母构成。 输入格式???????输入一行表示字符串。 输出格式???????若该字符串是否由同一个字母构成,输出Won,否则输出Lost。 样例输入
样例输出
思路???????说实话我这道题做的有一段时间(很多大佬都四十分钟把这些都在做完了,我不能比,我需要一步一步来,因为我基础很薄弱。) 代码
C : Discount???????给出商品的原价和现价,求该商品的优惠力度 输入格式???????输入两个数A,B(1 ≤ B < A ≤ 1 0 5 10^5 105) 分别表示原价和现价。 输出格式???????输出一个实数,表示降价的百分比,保留三位小数输出。 样例输入
样例输出
思路???????这道题仅仅需要注意给的样例之中,答案是28.571,这显然是百分比乘以了100。还有就是保留小数的方法: 代码
D : Orthogonality???????给出两个 N 维向量,判断他们的内积是否等于0。 输入格式???????第一行一个整数N,接下来两行分别有N个整数,分别表示向量 A, B 输出格式???????若两个向量的内积等于0,输出Yes,否则输出No。 样例输入
样例输出
思路???????这里直接开了定长数组进行存储。 代码
E : uNrEaDaBlE sTrInG???????我们称一个字符串是“难读的”,当且仅当它的奇数位置的字母都是小写字母,偶数位置的字母都是大写字母。请你判断一个字符串是否为“难读的”字符串。 输入格式???????输入一行包含一个字符串。 输出格式???????如果输入的字符串是“难读的”,输出Yes,否则输出No。 输入样例
输出样例
思路???????使用 while 循环,在这里需要判断“下一个”是奇数还是偶数,是不是很熟悉?正如我们在B题中犯的错,我这里采用了另外一种方式:使用两个变量 i和j 来进行遍历(有一种后续我们将要说到的双指针的感觉)。判定奇数偶数,使用 j 。判定 words 数组是否越界,使用指向当前元素的 i (常数指针)。 代码
F : Remove It???????给出一个长度为n的数列和一个数x,请从数列中删除数值等于x的项,输出剩余的数列。 输入格式???????输入第一行包含两个整数n,x,第二行包含n个整数,表示数列。 输出格式???????输出一行,表示删除后的数列。输出数字的相对顺序应与原数列相同。 输入样例
输出样例
思路???????碰到一样的不输出即可。 代码
G : Rally???????有 n n n个人居住在数轴的整数位置上,第 i i i个人的位置是 x i x_i xi?。现需要选定一个整数位置 p p p,使所有人移动到 p p p使得所有人的代价之和最小,第 i i i个人移动的代价为 ( x i ? p ) 2 (x_i - p)^2 (xi??p)2,求最小代价。 输入格式???????第一行一个整数
n
n
n,接下来一行有
n
n
n个整数,表示每个人的位置。 输出格式???????输出一个整数,表示最小代价。 输入样例
输出样例
思路1???????这道题因为数据范围较小,我直接采用了:对于
p
p
p而言,只有从 1 到 100 一百个数字,完全可以遍历。见代码1。
???????结果不出意料,只有我第一次错的那个值是正确的。最终发现错误并修正。 思路2???????这道题还有一个巧妙的方法,直接求其均值,然后求代价即可。(这里感谢一下李同学) 代码1
代码2
H : : (Colon)???????钟表的时针和分针长度分别为a,b,当前的时间为H时M分,求时针端点与分针端点的距离。 输入格式???????输入一行包含4个整数a,b,H,M 输出格式???????输出一个实数,表示端点之间的距离。你的输出与实际值的误差应小于 1 0 ? 9 10^{-9} 10?9。 输入样例
输出样例
思路???????这里采用 %.12lf 的方式进行最终的格式变化。这里一定要注意分针对时针也是存在影响的。 代码
I : Kaprekar Number???????定义函数
f
(
x
)
f(x)
f(x)
g
1
(
x
)
g_1(x)
g1?(x)
g
2
(
x
)
g_2(x)
g2?(x)如下: 输入格式???????输入一行包含两个整数,包含 N , K N,K N,K, N ≤ 1 0 9 , K ≤ 1 0 5 N ≤ 10^9, K ≤ 10^5 N≤109,K≤105 输出格式???????输出一个整数表示 a k a_k ak? 输入样例
输出样例
思路???????注意题目中的函数到底是怎么运作的,是怎么操作的。 代码
IO操作 :计算a+bJ:IO1(输入N = 行数 = 每行的样例组数)输入格式???????输入第一行是一个整数N,代表接下来N行会有N组样例输入。 输出格式???????每组输出占一行。 输入样例
输出样例
思路???????我采用开定长数组的方法进行计算、存储、输出。 代码
K:IO2(以0 0代表输入结束)输入格式???????有多组样例输入,以0 0代表输入结束。 输出格式???????每组输出占一行 输入样例
输出样例
思路???????这里直接进行一个无限循环,再根据题目中的要求:输入两个 0 即停止,作为终止条件。 代码
L : IO3 (“无”终止条件)输入格式???????有多组样例输入 输出格式???????每组输出占一行 输入样例
输出样例
思路???????这里面没有一个输入的停止,我认为OJ平台在测试时会给停止符号Ctrl Z 或者 Ctrl C。对此的判断条件是: 代码
M : IO4 (输入到某一组数的数字个数为 0 )输入格式???????输入包含多组样例。 输出格式???????对于每组用例,你应当输出这组样例N个数字的和,每个输出占一行。 输入样例
输出样例
思路???????这里要求输入到某一组数的数字个数为 0 的时候停止循环。因此采用: 代码
N : IO5 (输入N组数据且每组数据个数可不同)输入格式???????第一行有一个整数N,表示有N行数。接下来N行,每行第一个为整数M,表示本行后面有M个整数。 输出格式???????对于输入的每一行数,请分别对应输出每一行数的和。 输入样例
输出样例
思路???????需要注意定义变量的时候可以再函数之中定义,重复循环。( 代码
代码’
O : IO6 (“无”停止的NNN即IO3)输入格式???????输入包含多组数据,每组数据占一行。每行第一个数为整数N,后面有N个整数 输出格式???????对于输入的每一行数,请分别对应输出每一行数的和。 输入样例
输出样例
思路???????没有直接的终止标志,就用EOF。然后这里需要判定的是一开始输入的数字个数。因此判定代码为:
代码
P : IO7 (无组数,无组中数据个数)输入格式???????输入包含多组数据,每组数据占一行。每行有若干个整数 输出格式???????对于输入的每一行数,请分别对应输出每一行数的和。 输入样例
输出样例
思路???????本题中助教给了一个Hint:本题相关知识:读取一行的处理和格式化读取字符串,也可使用getline和stringstream。 扩展知识???????下面的引用自该链接,且更多详细知识请点击该链接 ???????getline()函数可以让我们很方便的输入一串字符串。getline()不仅简单,而且安全,因为全局函数 getline() 会帮你处理缓冲区用完之类的麻烦。常见的getline()函数语法有两条:
???????其中的buffer、num、delim的意思分别为: getline()函数功能:???????将输入流num中读到的字符存入buffer中,直到遇到终结符delim才结束。对于第一个函数delim是可以由用户自己定义的终结符;对于第二个函数delim默认为 ‘\n’(换行符)。 eg1:输入get?line() 输出get
???????这里输入流实际上只读入了get,?后面的line()并没有存放到line中(仍停留在输入缓冲区里)。 getline也可以作为成员函数使用:
eg2:输入hello wo?rld 输出hello wo,或者输入hello world 输出hello wor
???????下面的引用自该链接,且更多详细知识请点击该链接 输入原理简述:???????程序的输入都建有一个缓冲区,即输入缓冲区。每次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据(cin读取数据是从第一个非空白字符开始到下一个空白字符结束)。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。 ???????下面的引用自该链接,且更多详细知识请点击该链接 stringstream总结:???????1.stringstream实际是在其底层维护了一个string类型的对象用来保存结果。 代码
Q : IO8 (“无”终止16进制加法)???????给定两个十六进制整数a和b,输出他们的和 输入格式???????输入多组数据,以EOF作为数据的结束。每组数据在一行中包含了两个十六进制整数a和b。 输出格式???????对于每一组数据,以十进制输出a+b的和。每组输出占用一行。 输入样例
输出样例
思路???????依然使用 EOF ,输入用 %x ,输出用 %d。简单粗暴。 代码
总结???????第一周题目确实不少,但是这些题目给我了我许多警醒。一些BUG让我学会了很多。而且最后几个IO的题目,真的有很多学问。首先要看是否“明显”的终止标志,如果没有就是用EOF。如果有看是否有类似“组数”或者“组内成员个数”类的数据,像这样的,我们使用 ???????最后,感谢本文中被我引用的两个博主。希望这篇文章对你有所帮助!感谢观看! |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:19:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |