目录
1.问题描述
1.1描述
1.2输入描述:
1.3输出描述:
1.4示例
1.5备注:
2.代码解读
2.1使用ASCII码值的版本
2.2使用getchar吸收回车的版本
2.3使用函数的版本
3.以下是三种方式的全部代码
4.结语
1.问题描述
1.1描述
实现字母的大小写转换。多组输入输出。
1.2输入描述:
多组输入,每一行输入大写字母。
1.3输出描述:
针对每组输入输出对应的小写字母。
1.4示例
输入:
A
B
输出:
a
b
1.5备注:
多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。
2.代码解读
2.1使用ASCII码值的版本
#include <stdio.h>
int main() {
char ch=0;
while(scanf("%c",&ch)==1)
{
if(ch>='a' && ch<='z')
//这里的ch存储的是ASCII码值,
//当ch的ASCII码值大于等于a的ASCII码值或者小于等于z的ASCII码值时,
//才能运行下去
//要查ASCII码值,请看这篇博客:ASCII码表-CSDN博客文章浏览阅读62次。今天给大家找了一张清晰的彩色ASCII码表,希望各位能够喜欢!https://blog.csdn.net/qq_58094522/article/details/137053258
printf("%c\n",ch-32);
//根据ASCII码值表,a的ASCII码值比A的ASCII码值多32
// 所以要是将小写的a转为大写的A,这里需要-32才行
else if(ch>='A' && ch<='Z')
//这里不能直接用else来表示,因为输入字母时还会输入一个回车,而回车也是字母,在内存中占据ASCII码值,需要用getchar()掉该字母,下面一个主函数会演示。
//这里的ch存储的是ASCII码值,
//当ch的ASCII码值大于等于A的ASCII码值或者小于等于Z的ASCII码值时,
//才能运行下去
printf("%c\n",ch+32);
//根据ASCII码值表,A的ASCII码值比a的ASCII码值少32
// 所以要是将转为大写的A,这里需要+32才行
// 所以要是将大写的A转为小写的a,这里需要+32才行
}
return 0;
}
2.2使用getchar吸收回车的版本
int main() {
char ch = 0;
while (scanf("%c", &ch) == 1)
{
if (ch >= 'a' && ch <= 'z')
printf("%c\n", ch - 32);
else
printf("%c\n", ch + 32);
getchar();//用于吸收回车这个字母
}
return 0;
}
2.3使用函数的版本
#include <ctype.h>
#include <stdio.h>
int main() {
char ch = 0;
//scanf读取成功的时候,返回的是读取的数据的个数
while (scanf("%c", &ch) == 1)//scanf函数在读取失败的时候返回EOF
{ //所以这里也可以改写为scanf("%c",&ch)!=EOF
if (islower(ch))
printf("%c\n", toupper(ch));
else if (isupper(ch))
printf("%c\n", tolower(ch));
}
return 0;
}
3.以下是三种方式的全部代码
#include <stdio.h>
int main() {
char ch=0;
while(scanf("%c",&ch)==1)
{
if(ch>='a' && ch<='z')
//这里的ch存储的是ASCII码值,
//当ch的ASCII码值大于等于a的ASCII码值或者小于等于z的ASCII码值时,
//才能运行下去
printf("%c\n",ch-32);
//根据ASCII码值表,a的ASCII码值比A的ASCII码值多32
// 所以要是将小写的a转为大写的A,这里需要-32才行
else if(ch>='A' && ch<='Z')//这里不能直接用else来表示,因为输入字母时还会输入一个回车,而回车也是字母,在内存中占据ASCII码值,需要用getchar()掉该字母,下面一个主函数会演示。
//这里的ch存储的是ASCII码值,
//当ch的ASCII码值大于等于A的ASCII码值或者小于等于Z的ASCII码值时,
//才能运行下去
printf("%c\n",ch+32);
//根据ASCII码值表,A的ASCII码值比a的ASCII码值少32
// 所以要是将转为大写的A,这里需要+32才行
// 所以要是将大写的A转为小写的a,这里需要+32才行
}
return 0;
}
#include <stdio.h>
int main()
{
char ch = 0;
while (scanf("%c", &ch) == 1)
{
if (ch >= 'a' && ch <= 'z')
printf("%c\n", ch - 32);
else
printf("%c\n", ch + 32);
getchar();//用于吸收回车这个字母
}
return 0;
}
#include <stdio.h>
#include <ctype.h>//使用islower,isupper,toupper,tolower函数需要引用的头文件
int main() {
char ch = 0;
//scanf读取成功的时候,返回的是读取的数据的个数
while (scanf("%c", &ch) == 1)//scanf函数在读取失败的时候返回EOF
{ //所以这里也可以改写为scanf("%c",&ch)!=EOF
if (islower(ch))
printf("%c\n", toupper(ch));
else if (isupper(ch))
printf("%c\n", tolower(ch));
}
return 0;
}
4.结语
今天的经验分享就到这里,有喜欢的朋友可以点赞➕评论➕收藏➕关注,如果有不懂的地方可以咨询博主,谢谢大家支持博主!