整理药名

整理药名

题目描述

医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将"ASPIRIN""aspirin"整理成"Aspirin"

输入格式

第一行一个数字n,表示有n个药品名要整理,n不超过100。

接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母、数字和"-"组成。

输出格式

n行,每行一个单词,对应输入的药品名的规范写法。


样例输入

4
AspiRin
cisapride
2-PENICILLIN
Cefradine-6

样例输出

Aspirin
Cisapride
2-penicillin
Cefradine-6

解法一

  这是一道简单的字符串操作题~

  根据题意,所有所输入的字符串都必须是开头大写,其后小写。

  并且观察样例可知,如果开头或其后的字符不是字母,那么就保持原状。

  对于开头字母来说,我们可以进行单独的if判断进行调整;而对于其后的字符而言,我们可以用一个for循环进行调整。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main ()
 4 {
 5     int n;
 6     cin>>n;
 7     while(n--)
 8     {
 9         string a;
10         cin>>a;
11         if(a[0]>='a' && a[0]<='z')
12         {
13             a[0]-=32;
14         }
15         for(int i=1;i<a.size();i++)
16         {
17             if(a[i]>='A' && a[i]<='Z')
18             {
19                 a[i]+=32;
20             }
21         }
22         for(int i=0;i<a.size();i++)
23         {
24             cout<<a[i];
25         }
26         cout<<endl;
27     }
28     return 0;
29 }

干货

  如何对于一个字母字符进行大小写的转化呐?

  首先我们需要知道它——ASCII码值(👈戳我即可百度百科)

  

  经过观察我们可以发现,大写'A'和小写'a'之间差了32,所以我们对它们进行相应的加减操作即可。所以以后也不需要奇怪于一个字符减去一个常数是什么回事啦!

 

posted @ 2020-09-12 21:04  DYXM  阅读(925)  评论(0编辑  收藏  举报