[特殊字符] 2025藍橋杯備賽Day7——B2117 整理藥名

🔍 2025藍橋杯備賽Day7——B2117 整理藥名

題目難度:?? 適合掌握字符串基礎操作

考察重點:大小寫轉換、字符串遍歷、邊界條件處理

B2117 整理藥名

題目描述

醫生在書寫藥品名的時候經常不注意大小寫,格式比較混亂。現要求你寫一個程序將醫生書寫混亂的藥品名整理成統一規范的格式,即藥品名的第一個字符如果是字母要大寫,其他字母小寫。

如將 ASPIRIN 、 aspirin 整理成 Aspirin。

輸入格式

第一行一個數字 n n n,表示有 n n n 個藥品名要整理, n n n 不超過 100 100 100

接下來 n n n 行,每行一個單詞,長度不超過 20 20 20,表示醫生手書的藥品名。

藥品名由字母、數字和 - 組成。

輸出格式

n n n 行,每行一個單詞,對應輸入的藥品名的規范寫法。

輸入輸出樣例 #1

輸入 #1

4
AspiRin
cisapride
2-PENICILLIN
Cefradine-6

輸出 #1

Aspirin
Cisapride
2-penicillin
Cefradine-6

🔥 解法一:直接遍歷法(推薦)

🛠? 實現思路

分步處理

  1. 首字符特殊處理(大寫轉換)
  2. 其余字符統一轉小寫
#include <iostream>
#include <cctype>
using namespace std;int main() {int n;cin >> n;cin.ignore(); // 忽略第一行末尾的換行符while (n--) {string s;getline(cin, s); // 讀取整行(兼容含空格的輸入)if (!s.empty()) {// 處理首字符if (isalpha(s[0])) {s[0] = toupper(s[0]);}// 處理其余字符for (int i = 1; i < s.size(); ++i) {if (isalpha(s[i])) {s[i] = tolower(s[i]);}}}cout << s << endl;}return 0;
}

🔥 解法二:函數封裝法(工程級)

🛠? 實現思路

模塊化設計

  • 將處理邏輯封裝為獨立函數
  • 提升代碼復用性和可測試性
#include <iostream>
#include <cctype>
using namespace std;// 規范藥品名
string formatDrugName(string s) {if (!s.empty()) {// 首字母大寫if (isalpha(s[0])) {s[0] = toupper(s[0]);}// 其余字母小寫for (int i = 1; i < s.size(); ++i) {if (isalpha(s[i])) {s[i] = tolower(s[i]);}}}return s;
}int main() {int n;cin >> n;cin.ignore(); // 處理輸入緩沖while (n--) {string s;getline(cin, s);cout << formatDrugName(s) << endl;}return 0;
}

📚 知識點總結

一、關鍵庫函數

  1. isalpha()

    int isalpha(int c); // 判斷字符是否為字母(A-Z, a-z)
    
  2. toupper() / tolower()

    int toupper(int c); // 轉大寫(僅對小寫字母有效)
    int tolower(int c); // 轉小寫(僅對大寫字母有效)
    

二、邊界處理

  • 空字符串處理if (!s.empty()) 避免越界訪問
  • 非字母字符保留:數字、- 不參與轉換

🚨 常見錯誤警示

錯誤1:未處理輸入緩沖

cin >> n;
// 錯誤:未處理換行符,導致getline讀取空行

修正

cin >> n;
cin.ignore(); // 清除輸入緩沖區中的換行符

錯誤2:錯誤轉換非字母字符

// 錯誤:未判斷直接轉換
s[i] = tolower(s[i]); // 可能將數字或符號錯誤處理

修正

if (isalpha(s[i])) {s[i] = tolower(s[i]);
}

錯誤3:忽略首字符非字母情況

// 錯誤:強制轉換首字符
s[0] = toupper(s[0]); // 若首字符是數字,導致錯誤

修正

if (isalpha(s[0])) {s[0] = toupper(s[0]);
}

🌟 舉一反三

變種題1:首字母與尾字母大寫

// 若要求首字母和尾字母大寫(若為字母)
if (!s.empty()) {if (isalpha(s[0])) s[0] = toupper(s[0]);if (isalpha(s.back())) s.back() = toupper(s.back());
}

變種題2:連字符后首字母大寫

// 將連字符后的字母大寫(如"pan-adol" → "pan-Adol")
for (int i = 1; i < s.size(); ++i) {if (s[i-1] == '-' && isalpha(s[i])) {s[i] = toupper(s[i]);}
}

🛠? 實戰技巧

1. 輸入優化

// 使用快速IO(關閉同步流)
ios::sync_with_stdio(false);
cin.tie(nullptr);

2. 內存預分配

s.reserve(20); // 根據題目最大長度預分配

3. 調試輸出

// 打印處理前后對比
cout << "原始:" << s << " → 處理:" << formatDrugName(s) << endl;

藍橋杯考場策略

  • 優先選擇解法一:代碼緊湊,適合快速實現
  • 注意輸入緩沖處理:使用cin.ignore()避免讀取錯誤
  • 邊界測試:測試首字符為數字、全大寫等情況

👉 思考題:若要求所有元音字母大寫,輔音字母小寫,如何修改代碼? 答案提示

bool isVowel(char c) {c = tolower(c);return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}// 在轉換邏輯中添加元音判斷
if (isVowel(s[i])) {s[i] = toupper(s[i]);
} else {s[i] = tolower(s[i]);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72969.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72969.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72969.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

笛卡爾軌跡規劃之齊次變換矩陣與歐拉角、四元數的轉化

一、笛卡爾軌跡規劃需求 笛卡爾軌跡規劃本質就是我們對機械臂的末端位置和姿態進行規劃&#xff0c;其實也就是對末端坐標系的位姿進行規劃。我們清楚末端坐標系的位姿是可以用齊次變換矩陣T來表示的&#xff0c;但這樣表示的話&#xff0c;并不利于我們去做規劃&#xff0c;所…

【PCIe 總線及設備入門學習專欄 3.1 -- PCIe 中為何只有 TLP 會被 Switch 和 RC 進行路由?】

文章目錄 Overview為什么 DLLP 不需要路由呢?總結Overview 這里介紹些為什么在 PCIe 中只有 TLP(事務層數據包)會被 Switch 和 Root Complex(RC) 路由,而 DLLP(數據鏈路層數據包)和 Ordered Set 不會被路由。這是因為 TLP 起始于源端口的事務層,結束于目的端口的事務…

大摩閉門會:250321 學習總結報告

如果圖片分辨率不足&#xff0c;可右鍵圖片在新標簽打開圖片或者下載末尾源文件進行查看 本文只是針對視頻做相應學術記錄&#xff0c;進行學習討論使用

深入理解 Spring Boot 應用的生命周期:從啟動到關閉的全流程解析

引言 Spring Boot 是當今 Java 開發中最流行的框架之一&#xff0c;它以簡化配置和快速開發著稱。然而&#xff0c;要真正掌握 Spring Boot&#xff0c;理解其應用的生命周期是至關重要的。本文將深入探討 Spring Boot 應用的生命周期&#xff0c;從啟動到關閉的各個階段&…

期刊分區表2025年名單下載(經濟學、管理學)

2025年期刊分區表包括SCIE、SSCI、A&HCI、ESCI和OAJ&#xff0c;共設置了包括自然科學、社會科學和人文科學在內的21個大類 本次分享的是期刊分區表2025年名單經濟學類、管理學類&#xff0c;一共7631025條 一、數據介紹 數據名稱&#xff1a;期刊分區表2025年名單 數據…

夢回杭州...

她對我說&#xff0c;煙雨中的西湖更別有情趣&#xff0c;我也懷著對‘人間天堂’的憧憬踏上了向往之旅。第一次親密接觸沒有感覺中那么好&#xff0c;現在想起來是那時的人和心情都沒能安靜下來&#xff0c;去慢慢品味它的美。 六下杭州&#xff0c;親歷每一片風景&#xff0c…

深度優先搜索(DFS)完全解析:從原理到 Java 實戰

深度優先搜索&#xff08;DFS&#xff09;完全解析&#xff1a;從原理到 Java 實戰 TOC 作為一名程序員&#xff0c;你是否遇到過需要在復雜的圖結構中尋找路徑、檢測環&#xff0c;或者進行樹遍歷的問題&#xff1f;深度優先搜索&#xff08;Depth-First Search, DFS&#xf…

【人工智能】如何理解transformer中的token?

如何理解transformer中的token? **一、Token在Transformer中的作用****二、文本分詞的常見方法****1. 基于詞典的分詞&#xff08;Dictionary-based Tokenization&#xff09;****2. 子詞分詞&#xff08;Subword Tokenization&#xff09;****(1) WordPiece算法****(2) BPE&a…

AI風向標《AI與視頻制作全攻略:從入門到精通實戰課程》

課程信息 AI風向標《AI與視頻制作全攻略&#xff1a;從入門到精通實戰課程》,夸克網盤和百度網盤課程。 課程介紹 《AI與視頻制作全攻略&#xff1a;從入門到精通實戰課程》是一套全面融合AI技術與視頻制作的實戰課程&#xff0c;旨在幫助創作者從基礎軟件使用到高級視頻剪輯…

mayfly-go開源的一站式 Web 管理平臺

mayfly-go 是一款開源的一站式 Web 管理平臺&#xff0c;旨在通過統一的界面簡化 Linux 服務器、數據庫&#xff08;如 MySQL、PostgreSQL、Redis、MongoDB 等&#xff09;的運維管理。以下從多個維度對其核心特性、技術架構、應用場景及生態進行詳細解析&#xff1a; 一、核心…

車輛模型——運動學模型

文章目錄 約束及系統移動機器人運動學模型&#xff08;Kinematic Model&#xff09;自行車模型含有加速度 a a a 的自行車模型系統偏差模型 在機器人的研究領域中&#xff0c;移動機器人的系統建模與分析是極為關鍵的基礎環節&#xff0c;本文以非完整約束的輪式移動機器人為研…

go命令使用

查看配置信息 go env配置go國內源 export GO111MODULEon export GOPROXYhttps://goproxy.cn測試 go install github.com/jesseduffield/lazydockerlatesthttps://github.com/jesseduffield/lazydocker

Chrome-Edge-IDEA-Win 常用插件-工具包

Chrome-Edge-IDEA-Win 常用插件-工具包 Chrome-Edge-IDEA-Win 常用插件-工具包谷歌插件chropathJSONViewOctotree - GitHub code treeXPath Helper書簽側邊欄篡改猴Print Edit WEEdge瀏覽器插件IDEA插件CodeGlance Pro 代碼迷你縮放圖插件Alibaba Cloud ToolkitAlibaba Java Co…

西門子V90伺服系統介紹

深入淺出地了解V90伺服驅動系統的核心特性和優勢&#xff0c;掌握其自動優化功能&#xff0c;使設備獲得更高的動態性能&#xff1b;同時&#xff0c;了解其自動抑制機械諧振頻率的特性&#xff0c;有助于在實際應用中減少機械振動和噪音。 方便快捷地熟悉V90的使用方式。通過伺…

【FastGPT】利用知識庫創建AI智能助手

【FastGPT】利用知識庫創建AI智能助手 摘要創建知識庫上傳文檔創建應用準備提示詞準備開場白關聯知識庫AI回答效果 摘要 關于FastGPT的部署&#xff0c;官方提供了docker-compose方式的部署文檔&#xff0c;如果使用的是podman和podman-compose的同學&#xff0c;可以參考這篇…

最新!Ubuntu Docker 安裝教程

源自: AINLPer&#xff08;每日干貨分享&#xff01;&#xff01;&#xff09; 編輯: ShuYini 校稿: ShuYini 時間: 2025-3-1 更多&#xff1a;>>>>大模型/AIGC、學術前沿的知識分享&#xff01; 看到很多部署大模型的時候&#xff0c;都是基于docker安裝部署的。…

html5炫酷3D立體文字效果實現詳解

炫酷3D立體文字效果實現詳解 這里寫目錄標題 炫酷3D立體文字效果實現詳解項目概述技術實現要點1. 基礎布局設置2. 動態背景效果3. 文字漸變效果4. 立體陰影效果5. 懸浮動畫效果 技術難點及解決方案1. 文字漸變動畫2. 立體陰影效果3. 性能優化 瀏覽器兼容性總結 項目概述 在這個…

電腦如何設置幾分鐘后自動關機

摘要&#xff1a;本文提供Windows、macOS和Linux系統設置定時自動關機的詳細方法。 目錄 一、Windows系統設置方法 設置定時關機 取消關機計劃 二、macOS系統設置方法 設置定時關機取消關機計劃 三、Linux系統設置方法 設置定時關機 取消關機計劃 四、注意事項五、擴展&#x…

Android音視頻多媒體開源庫基礎大全

從事音視頻開發工作&#xff0c;需要了解哪些常見的開源庫&#xff0c;從應用到底軟系統&#xff0c;整理了九大類&#xff0c;這里一次幫你總結完。 包含了應用層的MediaRecorder、surfaceView&#xff0c;以及常見音視頻處理庫FFmpeg和OpenCV&#xff0c;還有視頻渲染和音頻…

若依前端框架增刪改查

1.下拉列表根據數據庫加載 這個是用來查詢框 綁定了 change 事件來處理站點選擇變化后的查詢邏輯。 <el-form-item label"站點選擇" prop"stationId" v-has-permi"[ch:m:y]"><el-select v-model"queryParams.stationId" pl…