分数 10
作者 颜晖
单位 浙大城市学院
本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出已输入的字符,其中所有单词的首字母已改为大写。
输入样例:
How are you?
输出样例:
How Are You?
#include <stdio.h>
#include <string.h>
int main()
{
char s[1000],a;//这里数组若s[100]会部分正确,以前没遇到这种错误!!!学的还是太浅
int i=0;
/* 以下注释部分为法2
gets(s);//以\n结束
if (s[0] >= 'a' && s[0] <= 'z')
s[0] -= 32;
for (i = 0; i < strlen(s);i++)
{
if (s[i] == ' ' )
if (s[i+1] >= 'a' && s[i+1] <= 'z')
s[i+1] -= 32;
}
//printf("%s",s);
puts(s);//puts输出后自动换行,也就是自动加入换行符
*/
while ((a = getchar()) != '\n')
{
s[i] = a;//这里是将字符赋给数组
i++;
}
s[i] = '\0';//这一步是添上字符串结束符,可是不加的话,strlen(s)读出的仍然是12,
//为什么,这个‘\0’的用处到底是啥呀?
if (s[0] >= 'a' && s[0] <= 'z')
s[0] -= 32;
for (i = 0; i < strlen(s);i++)
{
if (s[i] == ' ' )
if (s[i+1] >= 'a' && s[i+1] <= 'z')
s[i+1] -= 32;
}
printf("%s",s);
}