輸入多行英文句子(長度 ≤ 100),將每個單字的第一個字母轉為大寫,其餘保持不變。單字以空格分隔。
使用 flag 標記是否位於單字開頭:行首或空格後為單字開頭。遇到小寫字母時減 32(ASCII 碼差值)轉大寫。
#include <stdio.h>
#include <string.h>
int main() {
int i, length, flag;
char string[100];
while (gets(string) != NULL) {
length = strlen(string);
flag = 1; // 行首視為單字開頭
for (i = 0; i < length; i++) {
if (flag && string[i] >= 'a' && string[i] <= 'z')
string[i] -= 32; // 轉大寫
if (string[i] == ' ')
flag = 1;
else
flag = 0;
}
puts(string);
}
return 0;
}
fgets() 替代 gets()ctype.h 的 toupper() 與 islower() 增加可讀性與可移植性Input: i like acm i want to get an accepted Output: I Like Acm I Want To Get An Accepted