题目描述
输⼊⼀个字符串,将字符串中⼤写字⺟全部转为⼩写字⺟,⼩写字⺟转成⼤写字⺟,其他字符保持不变。
注:字符串的⻓度⼩于等于30,其中字符串中包含空格。
解法思路
遍历字符串中的每个字符并对其进⾏分类处理来解决。具体来说,我们可以使⽤⼀个循环来遍历字符串中的每个字符。
1. 对于每个字符,我们检查它是⼤写字⺟、⼩写字⺟还是其他字符;
2. 如果它是⼤写字⺟,我们将其转换为⼩写字⺟;
3. 如果它是⼩写字⺟,我们将其转换为⼤写字⺟;
4. 如果它是其他字符,则不需要进⾏任何转换。
• 字符串库函数:
1. islower():判断字符是否为⼩写字⺟
2. isupper():判断字符是否为⼤写字⺟
3. tolower():将字符转换为⼩写字⺟
4. toupper():将字符转换为⼤写字⺟
解法代码
//⽅法1:不使⽤库函数
#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;
}
//⽅法2:使⽤库函数
#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;
}
运行结果
输入:
abcde
输出:
ABCDE