黑马程序员————C语言_练习题解题思路分析(一)

来源:互联网 发布:淘宝连盟 编辑:程序博客网 时间:2024/06/11 08:11
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

第一题:输入一英文句子,将其中所有单词首字符转换成大写后输出。

解题思路:

1)首先定义指针变量接收英文句子
2)提示用户输入、接收英文句子
3)计算输入的句子的长度,调用strlen()函数(要包含string头文件)
4)分情况讨论
当首字母是小写字母时
》表示小写字母区间,并转成大写
》从第二个字母遍历,用for循环
》判断是不是空格,再判断下一个字母是不是空格
》判断是不是小写,是则转成大写字母
当首字母不是小写字母时
》从第一个字母开始遍历(第一个字母可能是空格),用for循环
》判断是不是空格,判断下一个字母是不是空格
》判断是不是小写,是则转成大写
5)输出换行打印
#include <stdio.h>#include <string.h> // 因为使用了strlen()函数int main(){    // 定义一个指针接收英文句子    char *ju;        // 提示输入英文句子    printf("请输入一英文句子:\n");        // 接收输入的句子    scanf("%[^\n]",ju);        // 计算输入句子的长度     long length = strlen(ju);        // 判断第一个字母是不是小写,是就执行下面语句    if( ju[0] > 97 && ju[0] < 122)    {        // 将小写字母转成大写        ju[0] = ju[0] - 32;                // 从第二个字母开始遍历        for(int i = 1;i < length;i++)        {            // 判断是不是空格,不是就执行语句            if(ju[i] == 32)            {                // 判断下一个是否为空格                if(ju[i+1] != 32)                {                 // 判断是否为小写                  if(ju[i+1]>=97 && ju[i+1]<=122)                  {                    // 是则转成大写                    ju[i+1] = ju[i+1] - 32;                  }                }            }                                    }    }    // 如果第一个字母不是小写,则执行以下语句    else    {        //从第一个字母开始遍历,防止第一个字母是空格        for(int i = 0;i<length;i++)        {            // 判断是不是空格            if(ju[i] == 32)            {                // 判断下一个字母是不是空格                if(ju[i+1] != 32)               {                // 判断是不是小写                if(ju[i+1]>=97 && ju[i+1]<=122)                {                    // 是则转成大写                    ju[i+1] = ju[i+1] - 32;                                    }              }            }        }    }        printf("%s\n",ju);        return 0;}

易犯错误:
》没包含string头文件
》没用指针定义变量
》接收没用%[^\n]非换行符
》没计算句子长度
》没判断空格的情况
》字符串输出%s
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


0 0
原创粉丝点击