楼主 我觉得我写的比你写的略好,理由如下:
请指正
- /**
- *7.输入一英文句子,将其中所有单词首字符转换成大写后输出。(C语言)
- */
- #include <stdio.h>
- int main(int argc, const char * argv[])
- {
- //1.提示用户输入一个英文句子
- printf("请输入一个英文句子,回车确定\n");
-
- //2.新建一个大小为100的字符串用于存储用户输入的英文句子
- char sentence[100];
-
- //3.系统输入赋值给sentence字符串变量 这里scanf函数第一个参数为"%[^\n]",表示接受空格作为输入,不然默认空格是输入结束符
- scanf( "%[^\n]", sentence);
-
- //4.新建length变量用于存贮字符串的长度
- unsigned long length = strlen(sentence);
-
- //5.因为第一个字母通常就是第一个单词的首字母 所以直接变大写字母,就算是空格,使用toupper函数不变
- sentence[0] = toupper(sentence[0]);
-
- //6.循环遍历字符串数组 如果遇到一个空格和空格后面是一个字符的情况 就调用toupper函数对空格后面的字符做大写处理
- for(int i = 1;i < length-1;i++)
- {
- //6.1当前遍历元素是空格
- if(0x20== sentence[i])
- {
- //6.2后面那个字符还是空格吗?
- if(0x20 != sentence[i+1])
- {
- //6.3是,则大写处理
- sentence[i+1] = toupper(sentence[i+1]);
- }
- }
- }
-
- //7.输出转换好的英文句子给用户
- printf("转换后的句子为\n");
- printf("%s\n",sentence);
-
- return 0;
- }
复制代码 |