历年同济大学计算机保研机试真题 - PGCode考研平台

最后更新:2025-12-08

历年同济大学计算机保研机试真题

本文整理同济大学计算机保研机试真题,并提供详细解析与代码实现,帮助同学们了解保研机试的难度与题型分布

字母列位置输出

题目描述

给定一个仅包含小写英文字母的字符串(长度≥1),已知英文字母与“列号”的对应规则为: $a$ 对应第1列、 $b$ 对应第2列、 $c$ 对应第3列…… $z$ 对应第26列。

请遍历字符串中的每个字母,按照“一个字母一行”的规则输出该字母对应的列号。

输入格式

输入数据为单个字符串,无空格、无数字及特殊字符,仅包含 $a$ - $z$ 的小写字母。

输出格式

遍历字符串的每个字符,每个字符对应一行输出,每行内容为该字符对应的列号(整数)。

输出顺序与字符串中字符的顺序一致(即第一个字符对应第一行输出,第二个字符对应第二行输出,以此类推)。

数据范围

字符串长度范围:$1 \leq$ 字符串长度 $\leq 100$。

输入样例

cat

输出样例

3
1
20

高精度二进制小数转十进制

题目描述

给定一个合法的二进制小数(格式为 “整数部分。小数部分”),需将其转换为十进制数并输出。

由于二进制小数的小数部分长度可能超过 200 位(远超 long double 的精度范围,直接使用浮点数会导致严重精度丢失),因此必须通过字符串逐位解析结合高精度计算实现转换,确保结果准确性。

输入格式

  1. 输入为单个字符串,仅包含字符 '0''1''.',代表合法的二进制小数;

  2. 字符串仅含 1 个小数点,且小数点前后均至少有 1 位字符(排除 “0.”、“1.”、“.0”、“.1” 等无效格式);

  3. 整数部分仅由 '0''1' 组成(如 “0”、“1”、“101”、“1110” 等),小数部分仅由 '0''1' 组成;

  4. 小数部分长度范围:$1 \leq$ 小数部分长度 $\leq 200$(确保超过常规浮点数精度,强制要求高精度处理);

  5. 无需处理无效输入(如含非 0/1 字符、多个小数点等)。

输出格式

  1. 有限小数处理:若转换结果为有限小数(二进制小数有限的充要条件是:小数部分无无限循环的 1,即分母仅含 2 的因子),需精确输出所有有效数字,末尾无多余 0,小数点后无数字时不输出小数点(例:二进制 “1.000” 输出 “1”,而非 “1.0”);

  2. 无限小数处理:若转换结果为无限小数(如二进制 “0.010101...” 对应十进制 $1/3$),则输出保留小数点后 15 位,第 16 位数字四舍五入(若第 16 位 $\ge 5$,则第 15 位加 1,依次进位,如 0.3333333333333334→0.333333333333333);

  3. 输出结果禁止使用科学计数法,仅以 “整数” 或 “整数。小数” 形式呈现。

数据范围

输入样例1

0.1101

输出样例1

0.8125

输入样例2

10.101

输出样例2

2.625

输入样例3

0.1101110110

输出样例3

0.865234375

加法运算符重载

题目描述

定义一个模板矩阵类 $Matrix$(其中 $T$ 为数据类型,$ROW$ 为矩阵行数,$COL$ 为矩阵列数,$ROW$ 和 $COL$ 为编译期固定的正整数),用于存储 $ROW$ 行、$COL$ 列的同类型数据。

需为该模板类重载加法运算符 +,使不同数据类型、不同固定维度的矩阵支持合法的加法运算,具体规则如下:

  1. 运算前提:两个相加的矩阵必须为同类型、同维度(即 $T$ 相同、$ROW$ 相同、$COL$ 相同),否则视为非法运算,需提示 “维度或类型不匹配,无法相加”;

  2. 不同类型的加法规则

  3. 当 $T = int$ 且 $ROW=2$、$COL=3$ 时(即 $Matrix$):加法为对应位置元素的整数相加(如矩阵 $A$ 的 $(i,j)$ 元素 + 矩阵 $B$ 的 $(i,j)$ 元素,结果作为新矩阵的 $(i,j)$ 元素);

  4. 当 $T = double$ 且 $ROW=3$、$COL=2$ 时(即 $Matrix$):加法为对应位置元素的浮点数相加,结果保留 6 位小数(若末尾为 0 可省略,如 $2.500000$ 输出 $2.5$);

  5. 当 $T = string$ 且 $ROW=3$、$COL=3$ 时(即 $Matrix$):加法为对应位置字符串的拼接(如矩阵 $A$ 的 $(i,j)$ 字符串 + 矩阵 $B$ 的 $(i,j)$ 字符串,结果作为新矩阵的 $(i,j)$ 元素);

  6. 需实现矩阵的输入函数(从标准输入读取矩阵元素)和输出函数(将矩阵元素按行输出,每行元素用空格分隔,行末无多余空格),支持上述三种特定类型矩阵的输入输出。

输入格式

输入分为三个独立的测试用例,分别对应 $Matrix$、$Matrix$、$Matrix$ 的加法运算,每个测试用例的输入格式如下:

测试用例 1:int 类型矩阵(2 行 3 列)

  1. 第 1-2 行:输入第一个 $Matrix$ 的元素,每行 3 个整数,整数范围 [-1000, 1000],元素间用空格分隔;

  2. 第 3-4 行:输入第二个 $Matrix$ 的元素,格式与第一个矩阵一致。

测试用例 2:double 类型矩阵(3 行 2 列)

  1. 第 1-3 行:输入第一个 $Matrix$ 的元素,每行 2 个浮点数(可表示为整数形式如 5 或小数形式如 5.23、-3.1415),数值范围 [-10000.0, 10000.0],元素间用空格分隔;

  2. 第 4-6 行:输入第二个 $Matrix$ 的元素,格式与第一个矩阵一致。

测试用例 3:string 类型矩阵(3 行 3 列)

  1. 第 1-3 行:输入第一个 $Matrix$ 的元素,每行 3 个字符串(字符串不含空格,长度 [1, 20]),元素间用空格分隔;

  2. 第 4-6 行:输入第二个 $Matrix$ 的元素,格式与第一个矩阵一致。

输出格式

针对每个测试用例,输出结果如下:

  1. 若矩阵类型或维度不匹配(题目保证测试用例输入合法,此情况仅为代码健壮性要求,实际输入中不出现),输出维度或类型不匹配,无法相加

  2. 若运算合法,输出加法结果矩阵,具体格式:

  3. $int$ 矩阵:每行 3 个整数,元素间用空格分隔,行末无多余空格;

  4. $double$ 矩阵:每行 2 个浮点数,保留 6 位有效小数(若小数部分全为 0,仅输出整数部分,如 3.000000 输出 3;若小数部分非全 0,去除末尾多余的 0,如 2.500000 输出 2.5,1.234000 输出 1.234);

  5. $string$ 矩阵:每行 3 个拼接后的字符串,元素间用空格分隔,行末无多余空格。

三个测试用例的输出顺序与输入顺序一致,每个测试用例输出后空一行(最后一个测试用例输出后无需空行)。

数据范围

输入样例1

1 2 3
4 5 6
7 8 9
10 11 12

输出样例1

8 10 12
14 16 18

输入样例2

1.2 3.4
5.6 7.8
9.0 10.11
12.34 13.56
14.78 15.90
16.12 17.34

输出样例2

13.54 16.96
20.38 23.7
25.12 27.44

输入样例3

a b c
d e f
g h i
1 2 3
4 5 6
7 8 9

输出样例3

a1 b2 c3
d4 e5 f6
g7 h8 i9

完整题目及在线评测:https://www.pgcode.cn/