代码源自CSDN上一位大佬的正确答案,十分感谢给予的开导。在此浅陋地对其进行了可读性优化和注释。
1.参考代码与解析
/*这道题有一个很不容易做对的测试点:"只考虑字母字符,字母的大小写没有区别。" */
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
char str1[1000];
char str2[1000]; //用于存储处理后的字符串
gets(str1);
int length = strlen(str1);
int sub = 0; //"sub":下标——用于追踪处理后字符串的下标
for(int i=0;i<length;i++){ //遍历str1字符串,将字母字符复制到str2数组中(我们取大写字母来统一,将小写字母化为大写字母)
if(isupper(str1[i])){ //"isupper"的函数作用:判断是否为大写字母
str2[sub++] = str1[i];
}
else if(islower(str1[i])){ //"islower"的函数作用:判断是否为小写字母
str2[sub++] = str1[i] - 32; //大小写字母ASCII码差32,将小写字母转换为大写字母
}
}
str2[sub] = '\0'; //在处理后字符