7-2 单词首字母大写 (15 分)
本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出已输入的字符,其中所有单词的首字母已改为大写。
输入样例:
How are you?
结尾无空行
输出样例:
How Are You?
结尾无空行
代码:
这种方法还是很妙的,用一个flag作为判断大写标志,有一种掌控感,有的放矢的感觉,代码得输入隔得很开,有一种不怕你跑的远反正还在我手掌心里的感觉,很妙
在输入字符的时候,不是所有人都会遵守规则的,有的人就是喜欢瞎胡按,有的就是一开始就按回车,或者有的一开始就按空格,并不是输入小写或者大写字母,甚至有的可能输入数字,这时候就要有各种的if来设置保险锁
有时候程序读用户的输入的方式真的很奇妙,不是像我们大脑里预演的非要一个一个字符或者一步步的来进行输入,只要能够在逻辑上连接起来就有可以连续输入然后判断执行结果的可能,这个程序就是这样,所以还是大胆的写这种有掌控感的代码,慢慢的摸清程序读输入和执行输出的规律
用了一种输入和判断同时前进的方法,我写代码包括做事情是有一种习惯的就是把一件事做完之后在做另一件事,总觉得两件事同时进行不纯粹有时候还可能出现问题,现实中是效率变低,代码是会出现bug,但是这题就让我眼前一亮,当op为空格时,怎么操作下一个字符,让用户输入呗,你要是不输入也没事,我下面有一个是不是小写字母的条件判断,照样没问题,用户输入合法了,就进入条件然后执行语句变成大写字母。
所以就很妙,这个代码整体很连贯很通顺
我习惯把代码一个一个部分的拆解开,就算是小程序很短的代码,我也会习惯做这件事,但是这个代码让我感觉不能拆分开来分析功能
这个代码要纪念一下
#include "stdio.h"
int main()
{
char op;
op = getchar();
int flag = 1;
while(op != '\n')
{
if(flag == 1)
{
flag = 0;
if(op >= 'a' && op <= 'z')
{
op -= 32;
}
}
if(op == ' ')
{
flag = 1;
}
putchar(op);
op = getchar();
}
return 0;
}