2021 年 6 月青少年软编等考 C 语言二级真题解析

news/2024/10/9 12:34:53/

目录

  • T1. 数字放大
    • 思路分析
  • T2. 统一文件名
    • 思路分析
  • T3. 内部元素之和
    • 思路分析
  • T4. 整数排序
    • 思路分析
  • T5. 计算好数
    • 思路分析

T1. 数字放大

给定一个整数序列以及放大倍数 x x x,将序列中每个整数放大 x x x 倍后输出。

时间限制:1 s
内存限制:64 MB

  • 输入
    包含三行:
    第一行为 n n n,表示整数序列的长度, n ≤ 100 n ≤ 100 n100
    第二行为 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 1kn,最后一行满足 ( m − 1 ) n + 1 ≤ k ≤ m n (m - 1)n + 1 \le k \le mn (m1)n+1kmn,第一列满足 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+1k(m1)n,且 i % n ≥ 2 i \% n \ge 2 i%n2 时即为内部元素。

/** 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. 奇数在前,偶数在后;
  2. 奇数按从大到小排序;
  3. 偶数按输入顺序逆序排序。

时间限制: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 1n 之中(包括 1 1 1 n n n)中的好数个数。

时间限制:1 s
内存限制:64 MB

  • 输入
    一个整数,题目中的 n n n n ≤ 1000 n ≤ 1000 n1000
  • 输出
    一个整数,表示 1 ∼ n 1 \sim n 1n 之中(包括 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;
}

http://www.ppmy.cn/news/1526958.html

相关文章

GO 闭包

文章目录 1. **累加器&#xff08;状态保持器&#xff09;**2. **缓存&#xff08;记忆化&#xff09;**3. **工厂函数**4. **函数式编程风格**5. **创建动态行为的函数**6. **控制访问权限** 总结 高级闭包的使用在 Go 中非常灵活和强大&#xff0c;特别是在需要保存状态或对外…

PCIe进阶之TL:First/Last DW Byte Enables Rules Traffic Class Field

1 First/Last DW Byte Enables Rules & Attributes Field 1.1 First/Last DW Byte Enables Rules Byte Enable 包含在 Memory、I/O 和 Configuration Request 中。本文定义了相应的规则。Byte Enable 位于 header 的 byte 7 。对于 TH 字段值为 1 的 Memory Read Request…

【C++】——继承详解

目录 1、继承的概念与意义 2、继承的使用 2.1继承的定义及语法 2.2基类与派生类间的转换 2.3继承中的作用域 2.4派生类的默认成员函数 <1>构造函数 <2>拷贝构造函数 <3>赋值重载函数 <4析构函数 <5>总结 3、继承与友元 4、继承与静态变…

《信息系统安全》课程实验指导

第1关&#xff1a;实验一&#xff1a;古典密码算法---代换技术 任务描述 本关任务&#xff1a;了解古典密码体制技术中的代换技术&#xff0c;并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母&#xff0c;也就是说字母表为26个小写字母。 相关知识 为了完…

通信工程学习:什么是HFC混合光纤同轴电缆

HFC&#xff1a;混合光纤同轴电缆 HFC&#xff08;Hybrid Fiber Coaxial&#xff09;混合光纤同轴电缆是一种结合了光纤与同轴电缆的宽带接入网技术。以下是对HFC混合光纤同轴电缆的详细解释&#xff1a; 一、HFC混合光纤同轴电缆的定义与概述 定义&#xff1a;HFC是一种结合光…

基于微信小程序的高校实验室管理系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的高…

S3C2440开发板点亮LED灯+PWM定时器

目录 GPIO引脚和寄存器概述 点亮LED灯步骤 1.配置GPIO 2.点亮LED 设置引脚为输出 控制引脚电平 完整代码 PWM GPIO引脚和寄存器概述 GPIO端口&#xff1a; S3C2440的GPIO引脚可被配置为输入或输出&#xff08;控制LED的引脚通常配置为输出模式&#xff09;。寄存器&#…

VRRP 笔记

一、概念&#xff1a; vrrp&#xff1a;Virtual Router Redundancy Protocol 虚拟路由冗余协议&#xff0c;当网关发生故障时&#xff0c;进行主备切换&#xff0c;保证业务连续性 把多台物理机的网关虚拟成一台Virtual Router&#xff0c;称为 VRID VIP&#xff1a;虚拟IP VM…