C语言编写函数,从屏幕输入一行字符将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母

编写一函数,从屏幕输入一行字符,将所有的大写字母转换为小写字母所有的小写字母转换为大写字母,其它字符不变,屏幕输出结果。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
int i, len;
char str[100];
gets(str);
len=strlen(str);
for (i = 0; i < len; i++)
if (isalpha(str[i]))
{
str[i] ^= 32;
}
puts(str);
return 0;
}

其中用到了一个函数isalpha(),作用是判断参数是否为英文字母。当参数为英文字母a-z或A-Z时,返回非零值,否则返回零。这个函数用到的头文件是ctype.h。

下面解释核心部分 " str[i] ^= 32; "

我们知道同一个英文字母大小写的ASCII码相差32。假设我们现在有二个字母"S"和"s",大写"S"的ASCII码为83,小写"s"的ASCII码为115,我们将32、83、115的二进制码列出来。

83 1010011
32 0100000(最低位为第一位,只有第六位是1,其他位都是0)
115 1110011

我们来回顾一下异或运算符(XOR)的特点:

与0异或时,它的值不变。
与1异或时,它的值相反。

因此,对比上面的竖式,我们可以很清楚地看到,只要将英文字母ASCII码的第6位与1异或,其他位与0异或,即可实现英文字母的大小写互换。也就是让英文字母的ASCII码与32异或即可。
温馨提示:答案为网友推荐,仅供参考
相似回答