题目 1204:
大小写转换
时间限制: 1s 内存限制: 128MB 提交: 2375 解决: 1366
题目描述
读入一些字符串,将其中的小写字母转成大写字母(其他字符不变)。
输入格式
输入为多行,每行为一个字符串,字符串只由字母和数字组成,长度不超过80。输入以“End of file”结束。
输出格式
对于每行输入,输出转换后的字符串。
样例输入
Hello
ICPC2004
12345abcde
样例输出
HELLO
ICPC2004
12345ABCDE
解法1:用string来实现
#include <iostream> // 包含输入输出流库
using namespace std; // 使用命名空间std
int main() { // 主函数
string s; // 声明一个字符串s
while (getline(cin, s)) { // 不断从标准输入流(cin)中读取一行字符串,存储在变量s中,并执行循环体
if (s == "End of file") { // 如果读入的字符串是"End of file",则跳出循环
break;
}
int i = 0; // 初始化计数器i
while (s[i] != '\0') { // 如果当前字符不是字符串结束符'\0',则执行循环体
if (s[i] >= 'a' && s[i] <= 'z') { // 如果当前字符是小写字母,执行if语句中的语句块
s[i] = s[i] - 'a' + 'A'; // 将小写字母转换为大写字母
}
i++; // 计数器i自增
}
cout << s << endl; // 将转换后的字符串输出到新的一行中
}
return 0; // 退出程序
}
解法2:用string库文件中的里面的toupper(不需要判断字母大小写了,直接全部大写)
如果还是觉得不保险在topper上面可以添加一个islower(s[i])来判断是不是小写。
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
while (getline(cin, s)) {
if (s == "End of file") {
break;
}
for (int i = 0; i < s.length(); i++) {
s[i] = toupper(s[i]);//string中的upper函数直接变大写
}
cout << s << endl;
}
return 0;
}
解法3:用char实现
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[81];
while (cin.getline(s, 81)) {
if (strcmp(s, "End of file") == 0) {
break;
}
for (int i = 0; i < strlen(s); i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] = s[i] - 'a' + 'A';
}
}
cout << s << endl;
}
return 0;
}