C/C++编程学习 - 第9周 ③ 整理药名

题目链接

题目描述

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

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

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

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

Sample Input

4
AspiRin
cisapride
2-PENICILLIN
Cefradine-6

Sample Output

Aspirin
Cisapride
2-penicillin
Cefradine-6

思路

药品名的第一个字符如果是字母要大写,其他字母小写。也就是判断字符串是否为大写字符。

C++代码1:

#include<iostream>
using namespace std;
int n, len;
string s;
int main()
{
    
    
	cin >> n;
	for(int i = 0; i < n;++i)
	{
    
    
		cin >> s;
		len = s.size();//获取字符串s的长度
		if(s[0] >= 'a' && s[0] <= 'z')
			s[0] -= 32;//字符的比较的本质是其所对应的ASCII码的比较,而在ASCII码表中,26个英文字母的ASCII码值是紧挨在一起的.所以,如果第一个是字母是小写字母,其ASCII码就在'a'和'z'之间,而ASCII码表中每一个大写字母总是比对应的小写字母的值小32,所以让其减去32使其变成大写字母
		for(int j = 1; j < len; ++j)//遍历除了第一个字符的字符串
			if(s[j] >= 'A' && s[j] <= 'Z')//把大写字母变成小写字母
				s[j] += 32;
		cout<<s<<"\n";
	}
	return 0;
}

C++代码2:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	string str;
	int n;
	while(cin >> n)
	{
    
    
		while(n--)
		{
    
    
			cin >> str;
			int len = str.length();
			for(int i = 0; i < len; i++)
			{
    
    
				if(i == 0)
				{
    
    
					if(str[i] >= 97 && str[i] <= 122) str[i] -= 32;
				}
				else
				{
    
    
					if(str[i] >= 65 && str[i] <= 90) str[i] += 32;
				}
			}
			cout << str << endl;
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44826711/article/details/113095668
今日推荐