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

时间:2022-06-01 12:59:14
------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培训、期待与您交流! -------