HDU-2026-首字母变大写

题源:http://acm.hdu.edu.cn/showproblem.php?pid=2026

Problem Description

输入一个英文句子,将每个单词的第一个字母改成大写字母。

Input

输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。

Output

请输出按照要求改写后的英文句子。

Sample Input

i like acm
i want to get an accepted

Sample Output

I Like Acm
I Want To Get An Accepted
————————————————————————————————
思路:一个简单的字符串题目。简单分析可知(然鹅我还是没有分析出来)除第一个外,需要我们改成字母大写的字母前面均有空格。那么我们设一个变量flag,初始化为0,如果遇到字母a~z(因为刚上来都是小写),就变成对应的大写,flag置1(变成大写的方法就是在原来编号的基础上减32,参考acsii码表);如果遇到空格,flag就置0,然后空格后面的小写字母自然就变成大写啦!下面是AC代码。

#include<stdio.h>
#include<string.h>
int main()
{
 int i,flag;
 char s[100];
 while(scanf("%c",&s[0])!=EOF){
  gets(&s[1]);
  flag=0;				//因为第一个字母要变成大写,但前面没空格,所以先置0
  for(i=0;i<strlen(s);i++){
   if(s[i]==' ') flag=0;			//如果这个是空格  flag置0
   if(s[i]>='a'&&s[i]<='z'){			//如果现在是小写字母
    if(flag==0){					//并且上一个是空格  说明是首字母
	flag=1;						//flag置1且小写变大写
     s[i]-=32;
    }
   }
 
  }
  puts(s);
 }
 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值