目录
题⽬描述:
输⼊⼀个字符串,将字符串中⼤写字⺟全部转为⼩写字⺟,⼩写字⺟转成⼤写字⺟,其他字符保持不
变。注:字符串的⻓度⼩于等于30,其中字符串中包含空格
先看代码,下面有解析奥!!!!
//⽅法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;
}
方法一(不用库函数的方法)
首先输入一个字符串,这里也可以用gets_s(vs中)函数输入,当然得包含头文件
#include<string.h> . 这里用scanf 来输入,记得加上[ ^\n ] 是指排除 回车(换行)
记住 字符串 “ ”双引号里带的是字符串里自带 \0 在最后的位置,而‘ ’单引号中只是字符,并没有自带 \0.
然后用while循环,当然也可以使用for循环,for循环就是遍历到 出现\0 为止。
这里用while循环,表达式给的buf[ i ] 因为下面有i ++ ,随着i ++ 最终 会出现 \0. \0 也相当于0,所以就为假,跳出循环。
循环内的 判断语句则就是判断字符串中的每个字符是 大写字母还是小写字母。
记住小写 字母 在 ASCII码中 序号比 大写 字母大32。
所以如果是小写就让 buf【i】 - 32.
大写就 +32,这样就完成了大小写字符交换。
//⽅法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;
}
方法二(用库函数)
首先先了解一组库函数,头文件是#include<ctype.h>
这里用的有4个库函数。
1.islower(),这个函数是用来判断是否为小写字母,is lower 是 更低级的。所以是小写。
2.isupper(),这个则是用来判断大写字母。is upper。
3.tolower(),根据名字to lower(变成更低级),那就是将大写改为小写。
4.toupper(),同上。
了解了库函数后,下面的做法和方法一 一致。
//⽅法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;
}