天天看點

Bailian2690 首字母大寫【字元串】

首字母大寫

總時間限制:  
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;
}
           

繼續閱讀