1805 Problem B:首字母大写

题目描述

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\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读入一整行字符,运用二维数组进行存储,通过空白符将单词分开放置;

通过判断每个单词首字母,进行大小写改写;B1009与之类似;

代码如下:

#include <cstdio>
#include <cstring>

int main()
{
	char data[100];
	while (gets (data)) {
		char ans[100][100] = {};
		int len = strlen (data), row = 0, col = 0;
		
		for (int i = 0; i < len; i++) {
			if ( data[i] != ' ' && data[i] != '\t'  && data[i] != '\r' && data[i] != '\n') {
				ans[row][col++] = data[i];
			}
			else {
				ans[row++][col] = '\0';					//遇到空白符认为单词结束; 
				col = 0;
			}
		}

		for (int i = 0; i <= row; i++) {				//对首字母修正; 
			if (ans[i][0] >= 'a')	{
				ans[i][0] = ans[i][0] - 32;
			}	
		}
		
		for (int i = 0; i <= row; i++) {  				//顺序输出; 
    	    printf ("%s", ans[i]);  
   	    	if (i < row)   printf (" ");  
   	    	else 			printf ("\n");
 	  	}  
	}
 	return 0;
}

猜你喜欢

转载自blog.csdn.net/privilage/article/details/79972464