首字母大寫
- 總時間限制:
- 1000ms 記憶體限制:
- 65536kB
- 描述
- 對一個字元串中的所有單詞,如果單詞的首字母不是大寫字母,則把單詞的首字母變成大寫字母。在字元串中,單詞之間通過空白符分隔,空白符包括:空格(' ')、制表符('\t')、回車符('\r')、換行符('\n')。 輸入
- 輸入一行:待處理的字元串(長度小于80)。 輸出
- 輸出一行:轉換後的字元串。 樣例輸入
-
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.
問題連結:Bailian2690 首字母大寫
問題分析:
這個問題的關鍵是,什麼是首字母?如果一行的第一個字元(沒有前一個字元)是字母則需要将其改為大寫,另外如果一個字母的前一個字元是空格(空格或制表符都是空格)則将字母改寫為大寫。
特殊情況需要考慮,一行的第1個字母也要改為大寫!
程式說明:(略)
題記:字元串處理是永恒的話題。
AC的C語言程式如下:
/* Bailian2690 首字母大寫 */
#include <stdio.h>
#include <ctype.h>
#define N 80
char s[N];
int main(void)
{
int i;
gets(s);
i=0;
while(s[i]) {
if(i == 0) {
if(islower(s[i]))
s[i] = toupper(s[i]);
} else {
if(islower(s[i]) && (s[i - 1] == ' ' || s[i - 1] == '\t'))
s[i] = toupper(s[i]);
}
i++;
}
puts(s);
return 0;
}