news 2026/5/30 12:46:32

OJ1009:University

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OJ1009:University

题目描述

在大学里,很多单词都是一词多义,偶尔在文章里还要用引申义。

这困扰 Redraiment 很长的时间,他开始搜集那些单词的所有意义。

他发现了一些规律,例如 a 能用 e 来代替,c 能用 f来代替…… 现在他给出了字母的替换规则,如下所示,A 被 E 替换,B 被 C 替换,依次类推。

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z E C F A J K L B D G H I V W Z Y M N O P Q R S T U X a b c d e f g h i j k l m n o p q r s t u v w x y z e r w q t y g h b n u i o p s j k d l f a z x c v m

输入

本题包括多组测试数据。每组测试数据为一行仅由字母和空格组成的字符串(空格不变)。 输入以单行#结束。

输出

对应每组测试数据,替换后输出它的引申义。

输入 Ilttabaje zaujljg # 输出 Different meaning
#include <stdio.h> #include <string.h> int main() { // 大写字母映射表 char upper_map[26] = { 'E', 'C', 'F', 'A', 'J', 'K', 'L', 'B', 'D', 'G', 'H', 'I', 'V', 'W', 'Z', 'Y', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'X' }; // 小写字母映射表 char lower_map[26] = { 'e', 'r', 'w', 'q', 't', 'y', 'g', 'h', 'b', 'n', 'u', 'i', 'o', 'p', 's', 'j', 'k', 'd', 'l', 'f', 'a', 'z', 'x', 'c', 'v', 'm' }; char line[1000]; while (1) { // 读取一行,包括空格 if (fgets(line, sizeof(line), stdin) == NULL) break; // 去掉换行符 int len = strlen(line); if (len > 0 && line[len - 1] == '\n') { line[len - 1] = '\0'; len--; } // 检查是否结束(单行#) if (len == 1 && line[0] == '#') break; // 处理每个字符 for (int i = 0; i < len; i++) { char ch = line[i];//将输入的字符存储在ch中 if (ch >= 'A' && ch <= 'Z') { // 大写字母映射 line[i] = upper_map[ch - 'A'];//右侧数组下标,表示的是第几个映射字母 } else if (ch >= 'a' && ch <= 'z') { // 小写字母映射 line[i] = lower_map[ch - 'a']; } // 空格和其他字符不变 } // 输出结果 printf("%s\n", line); } return 0; }

一. if (fgets(line, sizeof(line), stdin) == NULL) break;

用途是从标准输入中读取字符,直到遇到1.读取了sizeof(line)-1个字符2.遇到换行符'\n'3.遇到文件结束符。上述三个中的一个情况,就会结束输入。之后自动添加字符串结束符\0到末尾。但会保留换行符\n(如果读取到了)

示例:

假设输入:"Hello\n"

读取后 line 的内容:
索引: 0 1 2 3 4 5 6
字符: 'H' 'e' 'l' 'l' 'o' '\n' '\0'

所以 fgets 包括:

· ✅ 读取的字符(包括换行符 \n)
· ✅ 自动在末尾添加 \0
· ❌ 不读取字符串结束符本身,而是自动添加

上述代码中去掉换行符流程是基于上述fgets的读取原则:

处理流程:示例:

1. fgets 读取输入,例如:"test\n"
2. line 变成:"test\n\0"
3. strlen(line) 返回 5('t','e','s','t','\n')//返回字符串的长度不包括字符串结束符,但包括换行符
4. 检查最后一个字符是 \n,将其替换为 \0
5. line 现在:"test\0\0"(有两个\0,但第一个有效)
6. len 减为 4

在本题中fgets的运行过程:

读取的内容:"Ilttabaje zaujljg\n"
· 自动在末尾添加 \0

步骤2:读取后 line 的内容:
索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
字符: 'I' 'l' 't' 't' 'a' 'b' 'a' 'j' 'e' ' ' 'z' 'a' 'u' 'j' 'l' 'i' 'g' '\n' '\0'

步骤3:处理换行符
int len = strlen(line); // len = 18(包括换行符)
if (len > 0 && line[len - 1] == '\n') {
line[len - 1] = '\0'; // 去掉换行符
len--; // len = 17
}

现在 line 的内容:
"Illtabaje zaujlig\0"
长度:17个字符

二.if (len == 1 && line[0] == '#') break;

上述代码if条件语句有两个成立条件,和之前做过的题有些一样。第一个条件,只要len不等于1都不成立,都不会结束循环。会继续往下运行。只有#以单行形式出现时才会结束循环,结束程序。要想写出这个条件,只需要仔细看题目。

也可以用下面代码替换fgets

gets(line); int len = strlen(line); // 检查是否结束(单行#) if (len == 1 && line[0] == '#') break;

gets()1.遇到换行符\n停止2.不存储换行符3.自动在末尾添加字符串换行符\0

上述gets()输入的刚好是fgets()去掉换行符后的字符串内容,所以刚好去掉处理换行符这一步骤。

示例输入:

输入:"Hello World\n"

gets() 读取后
索引: 0 1 2 3 4 5 6 7 8 9 10 11
字符: 'H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd' '\0'

三.看到字母肯定想到要找规律,但是在ASCII码上没有数学规律;根本找不出规律,所以考虑是固定的替换表,所以将映射大小写字母用数组表示出来,然后根据下标循环替换。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 15:29:37

Rete.js实战指南:从零构建可视化编程应用的完整解决方案

Rete.js实战指南&#xff1a;从零构建可视化编程应用的完整解决方案 【免费下载链接】rete JavaScript framework for visual programming 项目地址: https://gitcode.com/gh_mirrors/re/rete 你是否曾为复杂的数据处理流程难以直观呈现而困扰&#xff1f;是否想快速搭建…

作者头像 李华
网站建设 2026/5/30 0:25:25

论文决定成败:为何2026年高项考生必须跟对“论文导师”?

选择一位精通论文指导的老师&#xff0c;不是备考的“可选项”&#xff0c;而是决定你能否一次性通关的“关键项”。高项考试中&#xff0c;论文是唯一一个没有标准答案、却占分极重的主观题环节。 它与选择题的刷题、案例题的模板有本质不同——它考查的是你将理论知识体系化、…

作者头像 李华
网站建设 2026/5/23 15:58:38

Chatbox数据持久化:如何确保AI对话永不丢失的智能方案

Chatbox数据持久化&#xff1a;如何确保AI对话永不丢失的智能方案 【免费下载链接】chatbox Chatbox是一款开源的AI桌面客户端&#xff0c;它提供简单易用的界面&#xff0c;助用户高效与AI交互。可以有效提升工作效率&#xff0c;同时确保数据安全。源项目地址&#xff1a;htt…

作者头像 李华
网站建设 2026/5/30 10:30:29

如何快速上手Attu:Milvus向量数据库的终极管理指南

如何快速上手Attu&#xff1a;Milvus向量数据库的终极管理指南 【免费下载链接】attu Milvus management GUI 项目地址: https://gitcode.com/gh_mirrors/at/attu 还在为Milvus向量数据库的复杂命令行操作而头疼吗&#xff1f;Attu作为Milvus的图形化管理工具&#xff0…

作者头像 李华
网站建设 2026/5/22 1:05:28

三维模型格式转换终极方案:快速实现STL到STEP高效转换

三维模型格式转换终极方案&#xff1a;快速实现STL到STEP高效转换 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp stltostp作为一款专业的命令行工具&#xff0c;专门解决制造业和三维设计领域…

作者头像 李华
网站建设 2026/5/30 9:44:52

10分钟搞定GitHub加速:告别龟速下载的终极解决方案

10分钟搞定GitHub加速&#xff1a;告别龟速下载的终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub下载速…

作者头像 李华