本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出已输入的字符,其中所有单词的首字母已改为大写。
输入样例:
How are you?
输出样例:
How Are You?
代码1:第二个测试点没过 ,有多个空格的话空格后字母不会大写,因此决定使用字符串存储。
#include <stdio.h>
#include <string.h>
int main(){
char ch;
while((ch=getchar())!='\n'){
if(ch==' ') {
printf("%c",ch);
ch=getchar();
if(ch>='A'&&ch<='Z'){
printf("%c",ch);
}else if(ch>='a'&&ch<='z'){
ch -= 32;
printf("%c",ch);
}else printf("%c",ch);
}else if(ch!=' '){
printf("%c",ch);
}
}
return 0;
}
修改后:
#include <stdio.h>
#include <string.h>
int main(void){
char ch[10000];
gets(ch);
if(ch[0]>='a'&&ch[0]<='z'){
ch[0]-=32;
}
for(int i=1;i<strlen(ch);i++){
if(ch[i-1]==' '&&ch[i]>='a'&&ch[i]<='z'){
ch[i]-=32;
}
}
puts(ch);
return 0;
}