Problem C: 首字母變大寫
Description
輸入一個英文句子,將每個單詞的第一個字母改成大寫字母。
Input
輸入數據包含多個測試實例,每個測試實例是一個長度不超過100的英文句子,佔一行。
Output
請輸出按照要求改寫後的英文句子。
Sample Input
i like acm
i want to get an accepted
Sample Output
I Like Acm
I Want To Get An Accepted
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
int n,i;
char str[100];
while(gets(str))
{n=strlen(str);
str[0]=str[0]-32;
for(i=1;i<=n-1;i++)
{if(str[i-1]=='')
str[i]=str[i]-32;}
cout<<str<<endl;}
return 0;
}
將首字母變大寫,其實只要找到首字母,然後再通過ASCII表進行轉化就可以了。
這道題主要考察如何找到首字母以及ASCII的合理運用,我們都知道,在英語中,首字母就是一個單詞的第一個字母,而區分是一個單詞還是兩個單詞,就看有沒有空格,所以,必須用gets輸入字符串;
在查找首字母時,要依次對每個字符進行比較,看是否符合首字母的條件(前面有空格),而一般情況下,一句話的第一個字母都是首字母(這裏不考慮首行縮進,如有要求,可自行修改);
我們求出來字符串的長度後(n=strlen(str);),先把第一個字母大寫(str[0]=str[0]-32;),要通過ASCII錶轉換,然後從第二個字母開始依次(for(i=1;i<=n-1;i++))對每個字母檢查,符合要求,即前面有空格(if(str[i-1]=='')),就把該字母大寫(str[i]=str[i]-32;);否則不做處理;
檢查完之後,把轉換後的字符串輸出(cout<<str<<endl;)!