题目:
方法一:(不使用库函数)
代码:
#include <stdio.h>
int main()
{
char buf[31] = { 0 };
scanf("%[^\n]s", buf);
int i = 0;
while (buf[i])
{
if (buf[i] >= 'a' && buf[i] <= 'z')
buf[i] -= 32;
else if (buf[i] >= 'A' && buf[i] <= 'Z')
buf[i] += 32;
i++;
}
printf("%s\n", buf);
return 0;
}
运行结果:
代码解析:
第一点:scanf函数加入[^\n]叫做正则表达式,他是可以读取字符串中的空格。如果没有该表达式
我们就会发现它读到空格就停止了。
第二点:根据ASCII表可以知道字母的小写比他的大写大了32.所以我们只需要判断字符在哪个区间,如果是小写字母就减去32,大写字母就加上32.最后打印就可以了
方法二:(使用库函数)
代码:
#include <stdio.h>
#include <ctype.h>
int main()
{
char buf[31] = { 0 };
scanf("%[^\n]s", buf);
int i = 0;
while (buf[i])
{
if (islower(buf[i]))
buf[i] = toupper(buf[i]);
else if (isupper(buf[i]))
buf[i] = tolower(buf[i]);
i++;
}
printf("%s\n", buf);
return 0;
}
运行结果:
代码解析:
第一点:首先介绍四个库函数
islower()判断是否为小写字母
isupper()判断是否为大写字母
tolower()把大写字母转化为小写字母
toupper()把小写字母转化为大写字母
他们需要包含头文件<ctype.h>。
第二点:这样进行判断简单多了直接使用if语句判断大小写
然后使用函数转换大小写。