2021 年 6 月青少年软编等考 C 语言二级真题解析
目录
- T1. 数字放大
- 思路分析
- T2. 统一文件名
- 思路分析
- T3. 内部元素之和
- 思路分析
- T4. 整数排序
- 思路分析
- T5. 计算好数
- 思路分析
T1. 数字放大
给定一个整数序列以及放大倍数 x x x,将序列中每个整数放大 x x x 倍后输出。
时间限制:1 s
内存限制:64 MB
- 输入
包含三行:
第一行为 n n n,表示整数序列的长度, n ≤ 100 n ≤ 100 n≤100;
第二行为 n n n 个整数(不超过整型范围),整数之间以一个空格分开;
第三行包含一个整数(不超过整型范围),为指定的整数 x x x。 - 输出
n n n 个整数,为原序列放大之后的序列,整数之间以一个空格分开。 - 样例输入
3 1 5 7 2 - 样例输出
2 10 14 - 提示
注意答案的数据范围。
思路分析
此题考察一维数组的遍历操作,属于入门题。
此题只需要将整数序列存储起来,输入 x x x 之后依次遍历数组中的每个元素,将其乘以 x x x 之后输出即可,注意需要用 long long 类型。
/* * Name:T1.cpp* Problem:数字放大* Author:Teacher Gao.* Date&Time:2024/6/15 06:41*/#include <iostream>using namespace std;int main()
{long long n, a[100], x;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}cin >> x;for (int i = 1; i <= n; i++) {cout << a[i] * x << " ";}return 0;
}
T2. 统一文件名
小 A A A 在命名文件的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将目录下的文件统一规范的格式,即文件名的第一个字符如果是字母要大写,其他字母小写。如将 Test \text{Test} Test、 test \text{test} test 整理成 Test \text{Test} Test。
时间限制:1 s
内存限制:64 MB
- 输入
第一行一个数字 n n n,表示有 n n n 个文件名要统一, n n n 不超过 100 100 100。
接下来 n n n 行,每行一个单词,长度不超过 20 20 20,表示文件的名字。文件名由字母、数字和-组成。 - 输出
n n n 行,每行一个单词,对应统一后的文件名。 - 样例输入
4 Test data 2-TEST problem-6 - 样例输出
Test Data 2-test Problem-6
思路分析
此题考查字符的修改操作,属于入门题。
此题只需要将输入的 n n n 个字符串的首字母改为大写字母,然后输出即可。可以采用 if 语句进行判定,若输入字符串的首字母为小写字母,则将其修改为对应的大写字母之后输出。也可以采用 toupper 函数实现,该函数的功能是将小写字母改为大写字母,若参数不是小写字母,则不做任何修改。
/** Name: T2.cpp* Problem: 统一文件名* Author: Teacher Gao.* Date&Time: 2024/09/15 14:29*/#include <iostream>
#include <string>using namespace std;int main()
{int n;string s;cin >> n;for (int i = 1; i <= n; i++) {cin >> s;s[0] = toupper(s[0]);cout << s << endl;}return 0;
}
T3. 内部元素之和
输入一个整数矩阵,计算位于矩阵内部的元素之和。所谓矩阵内部的元素,不在第一行和最后一行的元素以及第一列和最后一列的元素。
时间限制:1 s
内存限制:64 MB
- 输入
第一行分别为矩阵的行数 m m m 和列数 n n n( m < 100 m < 100 m<100, n < 100 n < 100 n<100),两者之间以一个空格分开。
接下来输入的 m m m 行数据中,每行包含 n n n 个整数(每个数大于等于 0 0 0,小于 1000 1000 1000),整数之间以一个空格分开。 - 输出
输出对应矩阵的内部元素和。 - 样例输入
3 3 3 4 1 3 7 1 2 0 1 - 样例输出
7
思路分析
此题考查二维数组的遍历操作,属于入门题。
此题只需要注意统计输入的二维数组中的元素和时,判定当前元素是否属于内部元素,若是内部元素则进行累加即可。也可以在输入之后另外写一个双重循环嵌套,调整循环起点和终点,免去判断是否为内部元素的麻烦。以上两种方法较为简单,请读者自行实现。
第三种方法不使用二维数组,而是利用二维数组按行输入的特征,将二维下标转换到一维下标进行判断。二维下标 ( i , j ) (i, j) (i,j) 转换到一维下标 k k k 的转换公式为 $k = (i - 1) * n + j,于是第一行满足 1 ≤ k ≤ n 1 \le k \le n 1≤k≤n,最后一行满足 ( m − 1 ) n + 1 ≤ k ≤ m n (m - 1)n + 1 \le k \le mn (m−1)n+1≤k≤mn,第一列满足 k % n = 1 k \% n = 1 k%n=1,最后一列满足 k % n = 0 k \% n = 0 k%n=0。于是当 k k k 满足条件 n + 1 ≤ k ≤ ( m − 1 ) n n + 1 \le k \le (m-1)n n+1≤k≤(m−1)n,且 i % n ≥ 2 i \% n \ge 2 i%n≥2 时即为内部元素。
/** Name: T3.cpp* Problem: 内部元素之和* Author: Teacher Gao.* Date&Time: 2024/09/15 14:49*/#include <iostream>using namespace std;int main()
{int m, n, x, sum = 0;cin >> m >> n;for (int k = 1; k <= m * n; k++) {cin >> x;if (n < k && k <= (m-1)*n && k % n >= 2) {sum += x;}}cout << sum << endl;return 0;
}
T4. 整数排序
给定 10 10 10 个整数的序列,要求对其重新排序。排序要求:
- 奇数在前,偶数在后;
- 奇数按从大到小排序;
- 偶数按输入顺序逆序排序。
时间限制:1 s
内存限制:64 MB
- 输入
输入一行,包含 10 10 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0 0 0,小于等于 100 100 100。 - 输出
按照要求排序后输出一行,包含排序后的 10 10 10 个整数,数与数之间以一个空格分开。 - 样例输入
4 7 3 13 11 12 0 47 34 98 - 样例输出
47 13 11 7 3 98 34 0 12 4
思路分析
此题考查排序算法,难度一般。
此题较为简单的做法是将奇数和偶数分开两个数组存储,对奇数数组做从大到小排序后输出,然后对偶数数组进行逆序输出。请读者自行实现。
此题也可以使用结构体排序,但是排序规则比较繁琐,需要讨论两个关键字的奇偶性,若同时为偶数,还需要考虑其输入次序。简单起见,可以将奇偶性属性也加入结构体成员,并作为第一关键字进行比较。见示例代码。
/** Name: T4.cpp* Problem: 整数排序* Author: Teacher Gao.* Date&Time: 2024/09/15 15:10*/#include <iostream>
#include <algorithm>using namespace std;struct num {// info 为 1 表示奇数,为 0 表示偶数int val, id, info;
}a[15];bool cmp(num x, num y) {if (x.info != y.info) return x.info > y.info;if (x.info == 1) return x.val > y.val;return x.id > y.id;
}int main()
{for (int i = 1; i <= 10; i++) {cin >> a[i].val;a[i].id = i;a[i].info = a[i].val % 2;}sort(a + 1, a + 10 + 1, cmp);for (int i = 1; i <= 10; i++) {cout << a[i].val << " ";}return 0;
}
T5. 计算好数
若将一个正整数化为二进制数,在此二进制数中,我们将数字 1 1 1 的个数多于数字 0 0 0 的个数的这类二进制数称为好数。
例如:
( 13 ) 10 = ( 1101 ) 2 (13)10 = (1101)2 (13)10=(1101)2,其中 1 1 1 的个数为 3 3 3, 0 0 0 的个数为 1 1 1,则此数是好数;
( 10 ) 10 = ( 1010 ) 2 (10)10 = (1010)2 (10)10=(1010)2,其中 1 1 1 的个数为 2 2 2, 0 0 0 的个数也为 2 2 2,则此数不是好数;
( 24 ) 10 = ( 11000 ) 2 (24)10 = (11000)2 (24)10=(11000)2,其中 1 1 1 的个数为 2 2 2, 0 0 0 的个数为 3 3 3,则此数不是好数。
对于给定的 n n n,写程序求出 1 ∼ n 1 \sim n 1∼n 之中(包括 1 1 1 与 n n n)中的好数个数。
时间限制:1 s
内存限制:64 MB
- 输入
一个整数,题目中的 n n n, n ≤ 1000 n ≤ 1000 n≤1000。 - 输出
一个整数,表示 1 ∼ n 1 \sim n 1∼n 之中(包括 1 1 1 与 n n n)中的好数个数。 - 样例输入
10 - 样例输出
5
思路分析
此题主要考查进制转换,即短除法,难度一般。
短除法的实现可以用 while 语句,注意在做短除法之前需要清空统计 1 1 1 和 0 0 0 数量的计数器变量。见示例代码。
/** Name: T5.cpp* Problem: 计算好数* Author: Teacher Gao.* Date&Time: 2024/09/15 15:24*/#include <iostream>using namespace std;int main()
{int n, tot = 0;cin >> n;for (int i = 1; i <= n; i++) {int tmp = i, t1 = 0, t0 = 0;while (tmp) {if (tmp % 2) t1++;else t0++;tmp /= 2;}if (t1 > t0) tot++;}cout << tot << endl;return 0;
}
相关文章:
2021 年 6 月青少年软编等考 C 语言二级真题解析
目录 T1. 数字放大思路分析 T2. 统一文件名思路分析 T3. 内部元素之和思路分析 T4. 整数排序思路分析 T5. 计算好数思路分析 T1. 数字放大 给定一个整数序列以及放大倍数 x x x,将序列中每个整数放大 x x x 倍后输出。 时间限制:1 s 内存限制&#x…...
2024网络安全、应用软件系统开发决赛技术文件
用软件系统开发技术方案 一、竞赛项目 2024 年全国电子信息行业第二届职工技能竞赛四川省应用 软件系统开发选拔赛分理论比赛和实际操作两个部分。理论比赛 成绩占30%,实际操作成绩占70%。 二、理论比赛 1、理论比赛范围 ①计算机系统基础知识: …...
CSP-J初赛每日题目2(答案)
二进制数 00100100和 00010100 的和是( )。 A.00101000 B.01100111 C.01000100 D.00111000 正确答案: D \color{green}{正确答案: D} 正确答案:D 解析: \color{red}{解析:} 解析: 00100100 36 \color{r…...
为什么Node.js不适合CPU密集型应用?
Node.js不适合CPU密集型应用的原因主要基于其设计理念和核心特性,具体可以归纳为以下几点: 单线程模型 Node.js采用单线程模型来处理用户请求和异步I/O操作。虽然这种模型在处理高并发I/O密集型任务时非常高效,因为它避免了传统多线程模型中的…...
数模原理精解【12】
文章目录 广义线性模型多元回归中的 R 2 R^2 R2(也称为决定系数)一、定义二、性质三、计算四、例子五、例题 偏相关系数一、定义二、计算三、性质四、例子 多元回归相关定义性质假设检验定义计算性质检验方法例子和例题例子例题例子 参考文献 广义线性模…...
steamdeck执行exe文件
命令行安装: sudo pacman xxxx //"xxxx"为软件名 ,或者搜索“arch linux 软件安装命令” 安装wine及wineZGUI 命令行输入: sudo pacman -S wine 后面需要输入密码,deck设置的用户密码即可(输入无反应是正…...
三、集合原理-3.2、HashMap(下)
3.2、HashMap(下) 3.2.2、单线程下的HashMap的工作原理(底层逻辑)是什么? 答: HashMap的源码位于Java的标准库中,你可以在java.util包中找到它。 以下是HashMap的简化源码示例,用于说明其实现逻辑&#…...
【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??
【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色?? Activation Function——在卷积神经网络中的激活函数是一个什么样的角色?? 文章目录 【激活函数】Activation Function——在卷积神经网络中…...
重生之我在Java世界------学单例设计模式
什么是单例设计模式? 单例模式是面向对象编程中最简单却又最常用的设计模式之一。它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的原理、常见实现方法、优缺点,以及在使用过程中可能遇到的陷阱。 单…...
快速提升Python Pandas处理速度的秘诀
大家好,Python的Pandas库为数据处理和分析提供了丰富的功能,但当处理大规模数据时,性能问题往往成为瓶颈。本文将介绍一些在Pandas中进行性能优化的方法与技巧,帮助有效提升数据处理速度,优化代码运行效率。 1.数据类…...
在基于线程的环境中运行 MATLAB 函数
MATLAB 和其他工具箱中的数百个函数可以在基于线程的环境中运行。可以使用 backgroundPool 或 parpool("threads") 在基于线程的环境中运行代码。 要在后台运行函数,请使用 parfeval 和 backgroundPool。 具体信息可以参考Choose Between Thread-B…...
黑神话悟空+云技术,游戏新体验!
近期,一款名为黑神话悟空的游戏因其独特的艺术风格和创新的技术实现在玩家中产生了不小的影响。 而云桌面技术作为一种新兴的解决方案,正在改变人们的游戏体验方式,使得高性能游戏可以在更多设备上流畅运行。 那么,黑神话悟空如…...
【Android 13源码分析】WindowContainer窗口层级-3-实例分析
在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析,整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…...
Redis常用操作及springboot整合redis
1. Redis和Mysql的区别 数据模型:二者都是数据库,但是不同的是mysql是进行存储到磁盘当中,而Redis是进行存储到内存中. 数据模型 : mysql的存储的形式是二维表而Redis是通过key-value键值对的形式进行存储数据. 实际的应用的场景: Redis适合于需要快速读写的场景&…...
动态规划day34|背包理论基础(1)(2)、46.携带研究材料(纯粹的01背包)、416. 分割等和子集(01背包的应用)
动态规划day34|背包理论基础(1)(2)、46.携带研究材料、416. 分割等和子集 背包理论基础(1)——二维背包理论基础(2)——一维46.携带研究材料(卡码网 01背包)1. 二维背包2. 一维背包 …...
pytorch优化器
在反向传播计算完所有参数的梯度后,还需要使用优化方法更新网络的权重和参数。例如,随机梯度下降法(SGD)的更新策略如下: weight weight - learning_rate * gradient 手动实现如下: learning_rate 0.01 …...
必备工具,AI生成证件照,再也不用麻烦他人,电子驾驶证等多种证件照一键生成
最近有一个生成证件照的开源项目很火,今天我们来学习一下。之前我生成证件照都是线下去拍照,线上使用也是各种限制,需要付费或看广告,而且效果也不是很理想, 今天要分享的这个 AI 证件照生成工具可以一键可以生成一寸…...
深度解析 MintRich 独特的价格曲线机制玩法
随着 Meme 币赛道的迅速崛起,NFT 市场也迎来了新的变革。作为一个创新的 NFT 发行平台,Mint.Rich 正掀起一场全民参与的 NFT 热潮。其简易的操作界面和独特的价格曲线设计,让任何人都能以极低的门槛发行和交易自己的 NFT,从而参与…...
实时数仓3.0DWD层
实时数仓3.0DWD层 DWD层设计要点:9.1 流量域未经加工的事务事实表9.1.1 主要任务9.1.2 思路9.1.3 图解9.1.4 代码 9.2 流量域独立访客事务事实表9.2.1 主要任务9.2.2 思路分析9.2.3 图解9.2.4 代码 9.3 流量域用户跳出事务事实表9.3.1 主要任务9.3.2 思路分析9.3.3 …...
路径规划 | 基于A*算法的往返式全覆盖路径规划的改进算法(Matlab)
目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 基于A*算法的往返式全覆盖路径规划的改进算法 matlab实现代码 往返式全覆盖路径规划,通过建立二维栅格地图,设置障碍物,以及起始点根据定义往返式路径规划的定义的优先级运动规则从…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
