大家好,这里是小萌新。
今天给大家分享一道字符串相关的题目
题目要求,输入一个只由字母与空格组成的字符串。去掉前导空格,并将中间多于一个的空格删减至一个,再把每个单词的首字母大写,其余字母小写。比如:
输入 hElLo WORld
输出Hello World
这题小萌新的思路比较简单,先用strlwr把所有大写换成小写,再用for遍历数组,把每个空格后面的字母换成大写。需要注意的是第一个字符需要特别判断,因为如果第一个字符是字母,它也需要大写,但前面并没有空格。
#include<stdio.h>
#include<string.h>
int main (){
char str[999]={};
gets(str);//gets函数可以快速获得一个字符串,即使它包括空格
strlwr(str);//strlwr函数,将所有大写字母变成小写
int i;
for(i=0;i<strlen(str);i++)
if(str[i-1]==' '||!i)//补上“||!i”是为了防止无先导空格的情况
if(str[i]!=' ')
str[i]+='A'-'a';
i=0;
while(str[i++]==' ');//跳过最前面的空格
i--;//此时str[i-1]是第一个非空格的字符,因此i需要自减一
for(;i<strlen(str);i++)//输出
if(str[i]!=' '||str[i+1]!=' ')
putchar(str[i]);
return 0;
}
运行结果:
如果注意了没有先导空格的情况,这题应该是没有什么难度的。