本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。
输出格式:
在一行中输出大小写转换后的结果字符串。
输入样例:
Hello World! 123#
结尾无空行
输出样例:
hELLO wORLD! 123
结尾无空行
#include <stdio.h>
main() {
int a[40]; //多定义一些防止奇怪的越界错误
char ch;
int index = 0; //定义一个数组下标
while((ch=getchar()) != '#') { //在同一行完成判断, 读入下一个字符, 简化了代码
a[index++] = ch; //在赋值的同时, 完成下标自增的运算, 简化了代码
}
int i;
for(i=0; i<index; i++) {
if(a[i]>='A' && a[i]<='Z') {
a[i] += 'a' - 'A'; //利用大小写字母在ASCII码表中的相对位置对其进行转换
} else if(a[i]>='a' && a[i]<='z') {
a[i] += 'A' - 'a'; //利用大小写字母在ASCII码表中的相对位置对其进行转换
}
printf("%c", a[i]); //直接在该循环输出, 不用再建立一个输出循环, 优化了时间复杂度
}
return 0;
}