将大小写字母互换的三种方式 C语言
方法一:(常规)
int main() {
char str[80];
int i = 0;
gets(str);
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z')
str[i] = str[i] + 'A' - 'a';
else if (str[i] >= 'A' && str[i] <= 'Z')
str[i] = str[i] + 'a' - 'A';
i++;
}
printf("%s\n", str);
return 0;
}
方法二:(位异或)
int main(){
char str[80];
int i = 0;
gets(str);
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z')
str[i] = str[i] ^ 32;
else if (str[i] >= 'A' && str[i] <= 'Z')
str[i] = str[i] ^ 32;
i++;
}
printf("%s", str);
return 0;
}
^位异或:相同为0,不同为1
转换思想:大写A(65)、小写a(97)的ASCII码相差32,大写要转换成小写就必须在65的基础上加32,只需要将二进制的第6位变号即可。同理小写也一样。
举例一:将大写A(ascii码为65)转换成小写a(ascii码为97)
01000001 --->65 --->大写A
^ 00100000 —->32
01100001 --->97 --->小写a
举例二:将小写a(ascii码为97)转换成大写A(ascii码为65)
01100001 --->97 --->小写a
^ 00100000 —->32
01000001 --->65 --->大写A
方法三:(使用转换函数)
1.字符
int tolower(char c); 将字符转换为小写
int toupper(char c) 将字符转换为大写
2.字符串 —> 需要包含头文件#include
char *strlwr(char *str); 将字符串中的字符转换为小写
char *strupr(char *str); 将字符串中的字符转换为大写
还没有评论,来说两句吧...