news 2026/4/18 8:56:09

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/4/18 8:05:14

3步完美解决Windows系统苹果设备连接难题:驱动安装全攻略

3步完美解决Windows系统苹果设备连接难题&#xff1a;驱动安装全攻略 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_…

作者头像 李华
网站建设 2026/4/18 8:51:09

Frappe Gantt 完整指南:打造现代化项目时间线可视化的终极方案

Frappe Gantt 完整指南&#xff1a;打造现代化项目时间线可视化的终极方案 【免费下载链接】gantt Open Source Javascript Gantt 项目地址: https://gitcode.com/gh_mirrors/ga/gantt Frappe Gantt 是一个开源的 JavaScript 甘特图库&#xff0c;专门为现代 Web 应用设…

作者头像 李华
网站建设 2026/4/18 8:52:35

游戏NPC的动态决策与情感模拟

引言在游戏产业飞速发展的今天&#xff0c;玩家对游戏体验的需求已从单纯的视觉冲击和玩法创新&#xff0c;转向对虚拟世界沉浸感的深度追求。非玩家角色&#xff08;NPC&#xff09;作为游戏世界的核心组成部分&#xff0c;其行为表现直接决定了虚拟世界的真实度与交互深度。早…

作者头像 李华
网站建设 2026/4/18 13:35:20

QLVideo终极指南:让macOS视频预览功能全面升级

QLVideo终极指南&#xff1a;让macOS视频预览功能全面升级 【免费下载链接】QLVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/4/17 13:24:08

毛戈平家族拟大幅减持:可套现15亿港元 称要改善个人生活

雷递网 乐天 1月8日上市刚刚满一年的港股上市企业毛戈平化妆品股份有限公司&#xff08;简称&#xff1a;“毛戈平”&#xff0c;股票代码为&#xff1a;“01318”&#xff09;日前发布公告称&#xff0c;公司近日收到控股股东及执行董事毛戈平、汪立群女士、执行董事毛霓萍女士…

作者头像 李华
网站建设 2026/4/18 8:04:29

5分钟玩转无线网络仿真:Mininet-WiFi新手完全指南

5分钟玩转无线网络仿真&#xff1a;Mininet-WiFi新手完全指南 【免费下载链接】mininet-wifi Emulator for Software-Defined Wireless Networks 项目地址: https://gitcode.com/gh_mirrors/mi/mininet-wifi 还在为搭建无线网络测试环境而烦恼吗&#xff1f;Mininet-WiF…

作者头像 李华