2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言实现字母的大写转换成小写

C语言实现字母的大写转换成小写

时间:2020-05-25 06:08:02

相关推荐

C语言实现字母的大写转换成小写

C语言实现字母的大写转换成小写

1 问题描述:2 程序代码:2.1 代码分析:3 改进3.1 程序测试结果参考资料

1 问题描述:

程序功能:实现字母的大小写转换。输入一个大写字母,接着按下回车,第二行就输出小写字母。注意:每次只能输入一个字母,否则出错。

编程软件:visual studio


2 程序代码:

代码来源见链接:1

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main() {char ch = 0;//循环多次读入,利用gethar消去读入的换行符while(scanf("%c", &ch) != EOF) {getchar();//ch+32即为小写字母printf("%c\n", ch+32);}}


2.1 代码分析:

scanf首先接收一个字符,赋值给ch,当scanf函数的返回值为EOF时,循环终止,否则程序会一直循环输入输出。那么,如果我们想终止程序,有什么办法可以让scanf的返回值为EOF呢?下面举例分析。

假设输入一个字符A,并按下回车,格式如下图所示

A被scanf接收,并赋值给ch,回车被getchar()接收,其中回车是换行符,也属于字符,所以,如果不用getchar处理换行符,在下一次循环时,回车被当做字符赋值给ch,进而导致输出错误的结果。你可以试着把getchar()去掉,运行一下,看看会出现什么结果。程序中的EOF 是end of file的缩写,是定义在头文件stdio.h的一个宏,它的值为-1,定义格式为:#define EOF (-1))2

对于printf("%c\n", ch+32);因为大写和小写字母的ASCII码值相差32,例如A的ASCII码值为65,a的ASCII码值为97。所以在ch上加上32,就会输出其小写格式。

当然也可以使用tolower等库函数转换大小写1,程序如下。

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main() {char ch = 0;//该部分如上述所示while (scanf("%c", &ch) != EOF) {getchar();//调用内置的tolower函数进行转换printf("%c\n", tolower(ch));}}


3 改进

对于以上程序,如果不小心连续输入回车,程序会出错,针对这个问题进行改进,并增加了程序终止功能,当按下Ctrl+Z时,程序终止。上面两个程序连续输入两次Ctrl+Z时,也会退出循环。

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){char a;while ((a= getchar()) != EOF)//getchar()在键盘输入ctrl+z 时,能获得EOF{getchar(); //循环多次读入,利用gethar消去读入的换行符if (a == '\n')printf("\n");elseprintf("%c\n", a + 32);}return 0;}

3.1 程序测试结果

运行以上程序,可以发现,即使连续输入换行符,也不会输出错误的结果。如果想要程序结束,则输入Ctrl+Z3,可以看到一个^Z字符,再按下回车,程序结束。

参考资料

大小写转换_牛客网 ↩︎ ↩︎

C语言中EOF到底是什么? ↩︎

c语言scanf返回值 ↩︎

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。