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

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

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

解题思路:

1)首先定义指针变量接收英文句子
2)提示用户输入、接收英文句子
3)计算输入的句子的长度,调用strlen()函数(要包含string头文件)
4)分情况讨论
当首字母是小写字母时
》表示小写字母区间,并转成大写
》从第二个字母遍历,用for循环
》判断是不是空格,再判断下一个字母是不是空格
》判断是不是小写,是则转成大写字母
当首字母不是小写字母时
》从第一个字母开始遍历(第一个字母可能是空格),用for循环
》判断是不是空格,判断下一个字母是不是空格
》判断是不是小写,是则转成大写
5)输出换行打印
#include 
#include  // 因为使用了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=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培训 、期待与您交流! -------


你可能感兴趣的:(黑马程序员————C语言_练习题解题思路分析(一))