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

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

1 问题描述:

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


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字符,再按下回车,程序结束。

参考资料


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

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

  3. c语言scanf返回值 ↩︎

C语言实现字母的大写转换成小写相关推荐

  1. 将字符串中大写转换成小写,小写转换成大写。基础题目

    大小写转换 String url="asdfaDFSFDSoiuonmlWERVuojln" 将以上字符串大写转换成小写,小写转换成大写. 首先转换成char 数组char[] s ...

  2. 从键盘输入一个大写字母,然后转换成小写字母输出。

    #include<stdio.h> void main() {char ch1,ch2; printf("请输入一个大写字母:"): ch1=getchar(); ch ...

  3. VB 录入字母大写自动转换成小写及小写自动转换成大写

    要自动转换大小写,很多人首先想到的一定是 UCase$ 及 LCase$,但是要使用这二个函数,一定不可以在 Key_Press 事件中使用,否则您若输入<abc>,结果却变成<CB ...

  4. java 首字母小写_java实现将字符串中首字母转换成大写,其它全部转换成小写的方法示例...

    本文实例讲述了java实现将字符串中首字母转换成大写,其它全部转换成小写的方法.分享给大家供大家参考,具体如下: public class TestSubstring { public static ...

  5. 输入一个字符,判断其是否为大写字母,如果是,将他转换成小写字母;如果不是,不转换。然后输出最后得到的字符。

    输入一个字符,判断其是否为大写字母,如果是,将他转换成小写字母:如果不是,不转换.然后输出最后得到的字符. 代码如下: 1 #include<stdio.h>2 int main()3 { ...

  6. 将大写字母转换为小写字母(将该字符串中的大写字母转换成小写字母,之后返回新的字符串。)

    将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hello" 输出: "hello" 示例 2: 输入: "here ...

  7. 输入一行字符,将其中的大写字母转换成小写字母,其中的小写字母转换成大写字母C++--tolower、isalpha等函数的使用

    字母大小写转换 [问题描述] 输入一行字符,将其中的大写字母转换成小写字母,其中的小写字母转换成大写字母,然后输出. [输入形式] 输入一行可显示的字符,回车结束. [输出形式] 输出一行字符,其中输 ...

  8. python初学 从键盘上输入一个字母,如果是小写字母,则转换成大写字母,如果是大写字母,则直接输出

    python初学者的基础问题 从键盘上输入一个字母,如果是小写字母,则转换成大写字母,如果是大写字母,则直接输出 提示:以下题仅是作为初识python的浅浅尝试,若有更好解法欢迎评论区交流 拿到题,我 ...

  9. 输入2个大写英文字母,调用函数CharSwap将其转换成小写字母并交换

    要将两个大写英文字母转换成小写字母并交换,可以使用以下代码: def CharSwap(ch1, ch2):ch1 = ch1.lower()ch2 = ch2.lower()ch1, ch2 = c ...

最新文章

  1. Android自我修炼之路(欢迎拍砖)
  2. 特质波动率python
  3. 第三章 python webdriver API(一)——浏览器操作
  4. python竞赛试题及答案_Python全国少儿编程竞赛参赛作品《自主数学练习小工具》解析...
  5. 《java语法实例2~15章》
  6. php服务器队列执行,lnmp php添加队列服务器的配置
  7. 【图像分割应用】设备自动化(一)——自动驾驶
  8. python sanic orm_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践
  9. [C++]有关深复制与copy constructor的一些问题与实例
  10. (转)学习密度与专注力
  11. MAC查找JDK的路径
  12. Oracle数据库逻辑存储结构管理相关问题与解决
  13. 斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)...
  14. centos7.5安装Jenkins
  15. 如何用Nuxt.js构建项目,SSR官网项目搭建流程
  16. 《诗的格律》学习简要
  17. win10笔记本cpu不高内存也不高但就是很卡,一个办法帮你解决!
  18. 联想小新潮7000-13安装黑苹果笔记,无需无线网卡(无需U盘+win双系统+opencore)
  19. html内边距居中,HTML中详述外边距样式属性(margin)与内边距样式属性(padding)...
  20. 卷积神经网络和循环神经网络的思想内核是什么

热门文章

  1. xmind可以画流程图吗_怎样用XMind方便地制作流程图
  2. Apache ServiceComb Kie | 一个语义型配置中心
  3. linux下进程管理的原理,Linux进程管理:supervisor和nohup原理及使用
  4. MyBatis之动态SQL
  5. HCNA网络技术基础学习
  6. KSQL DB 学习笔记1
  7. css怎么画小方块,CSS3 小方块矩阵变换动画
  8. Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享
  9. 计算机默认切换输入法的快捷键是,解决了输入法默认与快速切换问题!Unix系统 -电脑资料...
  10. 基于java的毕业设计选题系统的设计与实现