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 对于 当然也可以使用tolower等库函数转换大小写1,程序如下。 对于以上程序,如果不小心连续输入回车,程序会出错,针对这个问题进行改进,并增加了程序终止功能,当按下Ctrl+Z时,程序终止。上面两个程序连续输入两次Ctrl+Z时,也会退出循环。 运行以上程序,可以发现,即使连续输入换行符,也不会输出错误的结果。如果想要程序结束,则输入Ctrl+Z3,可以看到一个^Z字符,再按下回车,程序结束。 大小写转换_牛客网 ↩︎ ↩︎ C语言中EOF到底是什么? ↩︎ c语言scanf返回值 ↩︎printf("%c\n", ch+32);
因为大写和小写字母的ASCII码值相差32,例如A的ASCII码值为65,a的ASCII码值为97。所以在ch上加上32,就会输出其小写格式。#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 改进
#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 程序测试结果
参考资料