ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

牛客网 BC28-大小写转换(你好,2022)

2022-01-01 13:58:14  阅读:261  来源: 互联网

标签:ch int 32 代码 BC28 牛客 2022 输入 getchar


题目描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写字母。

输出描述:

针对每组输入输出对应的小写字母。 

示例1

输入

A
B

输出

a

思路:当看到这个题时,通过“大小写转换”可以立马反应出,通过ASCII 码进行转换,即为:大写字母+32=小写字母。

即可初步有如下代码的思路:

#include<stdio.h>
int main()
{
   int ch=0;
   ch=getchar();
   putchar(ch+32);
   return 0;
}

易得,如上的代码是远远不足的,它只是一个大概的方向。上式代码有一个缺点:它只能接收一个字符,不会再处理第二个。所有此代码不满足题意。


(强调!)这道题目要的是多组输入,所以我们可以考虑采用while循环!!!有了这个思路,我们可以对第一次代码进行初步修改,可得如下代码:

#include<stdio.h>
int main()
{
  int ch=0;
  while(ch=getchar())
  {
    putchar(ch+32);
  }
  return 0;
}

 在编译器中输入上式代码,对其进行编译运行后,输入A,得到如图所示的情况:

依次输入A,B,C  后情况如图所示:

此时输出的*,是怎么回事呢?

我们用到了getchar函数去接收字符,并且我们通过键盘进行 输入,而 getchar与键盘之间有一个名为“输入缓冲区”的部分,起初getchar看输入缓冲区,内容为空,然后光标闪烁,等待从键盘输入写东西到输入缓冲区。此时键盘敲一个 A ,此时字符‘A’并没有送给getchar,也没有进入输入缓冲区,此时要按回车去触发getchar去读取字符,此时缓冲区中为'A'与'\n',相当于放入了两个字符,而对于getchar一次只读一个字符,即将'A'读走,因为'A'不为0,所以'A'进入循环,最后输出a。之后getchar再次进行读取,此时缓冲区中余'\n',将'\n'拿走,放入ch中。

通过查ASCII码表可知,'\n'为10,而10+32=42,42对于的字符为'*'。


getchar可以拿走A,   getchar也可以拿走\n。

2.0实际版本的代码:

#include<stdio.h>
int main()
{
  int ch=0;
  while(ch=getchar())
  {
    putchar(ch+32);
    getchar();//读取\n
  }
  return 0;
}

 将上述代码赋值到牛客网题目下,仍然会报错:

 

此时可知上述代码漏洞: 可以一直输入,停不下来!!!无法读取结束


getchar函数返回值描述: (补充资料)

 代码升级3.0,让代码可以停下来,不至于让其死循环:

#include<stdio.h>
int main()
{
  int ch=0;
  //EOF--end of file
  while((ch=getchar())!=EOF)
  {
    putchar(ch+32);
    printf("\n");//注意换行
    getchar();//读取\n
  }
  return 0;
}

 

 HAPPY ENDING!!!

 

 

标签:ch,int,32,代码,BC28,牛客,2022,输入,getchar
来源: https://blog.csdn.net/m0_62965311/article/details/122266667

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有