在大家刚开始多组输入时,可能会出现一些问题,今天就用这篇文章来解决一下。
请看这道牛客网的OJ题
描述:实现字母的大小写转换。多组输入输出。
输入描述:多组输入,每一行输入大写字母。
输出描述:针对每组输入输出对应的小写字母
例如:
A
a
B
b
在做之前我们要知道ASCII表中字母的值(如下图)
发现大写字母与对应的小写字母相差32.例如A+32=a.
下面我们要先知道这两个函数:
getchar()--获取一个字符,输入一个字符
putchar()--打印或者说输出一个字符。
#include <stdio.h>
int main() {
int ch;//getchar返回值是int型
while (ch = getchar())
{
putchar(ch + 32);
}
return 0;
}
这是怎末回事, " * ”是怎么来的?
其实是我们输入的回车\n造成的
我们要知道这样一件事,就是getchar和键盘之间会有一个输入缓冲区
当我们从键盘输入A字符时,我们需要回车一下来确定一下,这样缓存区就有了A和\n,当getchar来取时只会取走一个字符A,剩下\n
putchar出a之后,循环再次去getchar而\n + 32 = *
综上也就出现了a*
所以我们只需要在第二步时再把\n吸收掉就可以了
#include <stdio.h>
int main() {
int ch;
while (ch = getchar())
{
putchar(ch + 32);
getchar();//不需要赋值用不到,只吸收
}
return 0;
}
这样就可以了吗?不完全可以,我们这是一个循环,必须要有停下循环的条件,这里我们要引入EOF—文件结束标志`
#include <stdio.h>
int main() {
int ch;
while ((ch = getchar()) != EOF)
{
//putchar(ch + 32);
//printf("\n");
printf("%c\n", ch + 32);//一句顶两句
getchar();
}
return 0;
}
而CTRL+Z键就时文件结束快捷键
好了,喜欢的话,有用的话点个关注吧!