codeup.首字母大写

编辑:谯胜平      分类:程序与算法      标签:codeup,字符串处理      发布时间:2019-02-20      浏览次数:2480

题目描述

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。

在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

输入

输入一行:待处理的字符串(长度小于100)。

输出

可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。

样例输入

if so, you already have a google account. you can sign in on the right.

样例输出

If So, You Already Have A Google Account. You Can Sign In On The Right.

一、分析

首先通过gets()函数按行进行读取,因为有多行,所以通过while(gets(c) != NULL)判断是否读取结束。

其次在处理每一行的过程中,不能通过判断字符是否是空格,就直接将其下一个变成对应的大写字母,因为'\t'是制表符,表示的空格数目不固定。

二、代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char c[105];
	while (gets(c) != NULL) {
		int len = strlen(c);

		//处理字符串的每行的第一个字母,大写字母 = 小写字母-32
		if (c[0] >= 97 && c[0] <= 122) {
			c[0] = c[0] - 32;
		}
		for (int i = 1; i < len - 1; i++) {
			//可能存在多个空格,所以使用while进行判断
			while (c[i] == ' ') {
				i++;
				if (c[i] >= 97 && c[i] <= 122) {
					c[i] -= 32;
				}
			}
		}
		printf("%s\n", c);
	}
	return 0;
}


看不清?换一个