C语言—将字符串各个单词的首小写字母转换成大写字母
首先就是如何确定一个单词的开头字母,判断的标志是空格(空格的Ascii码为32),单词与单词之间会有空格分割这是一个关键条件。但是需要另外考虑两点:一是 一个字符串的首单词前可能不会有空格,所以需要对首单词的首字母进行单独的转换,二是单词间可能会有多个空格的情况出现,所以判断时除了当前字符为空格还需要当前字符的后一个是字母。程序如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main() {
char str[1024];
int i = 0;
gets(str);
while (str[i] != '\0') {
if (str[0] >= 'a' && str[0] <= 'z') { //单独对首单词的首字母进行转换
str[0] = str[0]- 32;
}
if (str[i] == 32 && (str[i+1] >= 'a' && str[i+1] <= 'z')) {//对空格的后一个字符进行转换,并且后一个字符需要是小写字母
str[i + 1] -= 32;
}
i++;
}
puts(str);
}
祝每天开心
评论已关闭