大写句子中所有单词首字母

基础测试编程题:
输入一英文句子,将其中所有单词首字符转换成大写后输出。

我的源码:

/*
输入一英文句子,将其中所有单词首字符转换成大写后输出。
*/
#include <stdio.h>
#include <string.h>
#define MAX 1000

int main(){
	char a[MAX];
	int i, len, flag = 0;
	gets(a);//将整句读入a
	len = strlen(a);
	for ( i = 0; i < len; i++){
		if ( flag == 0 && a[i] <= 'z' && a[i] >= 'a'){//判断是不是首字母,是的话大写。
			a[i] -= 32;
			flag = 1;
		}
		if ( a[i] == ' ' || a[i] == ',' || a[i] == '.' ){//判断上一个单词是否已经结束
			flag = 0;
		}
		printf("%c",a[i]);//输出处理过的字符串
	}
	return 0;
}

  我的想法是这样的,首先我要把句子分割成多个单词,而单词与单词直接的分割无非是空格,逗号和句号。于是我设置了一个flag,默认为0.然后开始遍历这字符串数组。当一个新的单词开始是这个flag应该是0,然后此时读到的字母是首字母,所以我把它大写(asc码-32),同时设置flag为1.意思是这个单词的首字母我已经大写了,下面如果没进入一个新的单词的话我就不干活了。然后当读到空格逗号和句号的时候,我明白了,上一个单词结束了,如果之后再读到字母,那应该是下个单词的首字母了,又要大写了,所以要把flag重新置零,以此循环。遍历结束也就处理结束了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值