黑马程序员技术交流社区
标题:
输入一个英文名字,要求把每个单词的首字母变成大写
[打印本页]
作者:
chenzuliang1993
时间:
2015-4-6 23:59
标题:
输入一个英文名字,要求把每个单词的首字母变成大写
编辑一个程序,要求输入一个英文名字,把每个单词的首字母变成大写,想半天了也没写出来,求大神指点
作者:
Fench
时间:
2015-4-7 11:05
#include <stdio.h>
//---------------------------------------------------------------------------
int main()
{
char str[100];
char *ch = str;
printf("请输入一个英文句子:");
gets(str); //输入一个句子(字符串)
if(*ch > 'a' && *ch < 'z') *ch -= 32; //第一个字符转换成大
*ch++; //指针往后移一位
while(*ch != '\0') //循环条件: 到句尾退出循环
{
if(*ch != ' ') //判断不为空格
{
ch++; //指针后移一位
}
else
{
ch++; //判断为空格,指针后移一位
if(*ch > 'a' && *ch < 'z') *ch -= 32; //将后一位字符转换成大写
}
ch++; //指针后移一位,直到句尾 '\0'退出循环
}
puts(str); //输出句子(字符串)
return 0;
}
复制代码
我的基础测试题, 你可以参考下.
作者:
chenzuliang1993
时间:
2015-4-7 23:17
Fench 发表于 2015-4-7 11:05
我的基础测试题, 你可以参考下.
我试了一下,你这个也不对 啊,你自己试过了吗?
作者:
wxy19891017
时间:
2015-4-7 23:26
Fench 发表于 2015-4-7 11:05
我的基础测试题, 你可以参考下.
这个代码是怎么复制的?我只会粘贴复制下来。
作者:
wq901015
时间:
2015-4-7 23:36
感觉大家基础测试题都差不多
作者:
shane_west
时间:
2015-4-7 23:41
#include <stdio.h>
int main()
{
// 1.定义一个字符串变量,用来存储用户输入的语句
char str[100];
// 2.提示用户输入语句
printf("请输入一个英文句子:\n");
// 3.获取用户输入的语句
gets(str);
// 4.判断用户输入的语句是否包括非英文字母或者非空格
for (int i = 0; str[i] != '\0'; i++)
{
if ((str[i] >= 'A' && str[i] <= 'Z') ||
(str[i] >= 'a' && str[i] <= 'z') ||
str[i] == ' ')
{
}
else
{
// 5.如果用户输入的既不是大写字母也不是小写字母,则重新输入
printf("输入的语句含非字母字符,请重新输入\n");
gets(str);
}
}
// 6.判断首字母是否为小写,如果为小写则转为大写(因首字母前无空格,所以需要单独判断)
if (str[0] >= 'a' && str[0] <= 'z')
{
str[0] = str[0] - 32;
}
// 7.遍历除首字符以外,字符串所有的字符
for (int j=1; str[j] != '\0'; j++)
{
// 8.如果字符为空格且下一个字符为小写字母,则把下一个字符转成大写字母
if (str[j] == ' ' && str[j+1] >= 'a' && str[j+1] <= 'z')
{
str[j+1] = str[j+1] - 32;
}
}
// 9.输出首字母被转成大写字母的英文句子
printf("%s\n", str);
return 0;
}
复制代码
作者:
鹏jiqing
时间:
2015-4-8 00:12
基础题,没做
作者:
Fench
时间:
2015-4-8 11:58
chenzuliang1993 发表于 2015-4-7 23:17
我试了一下,你这个也不对 啊,你自己试过了吗?
sorry 我刚看了一下 多移动了一次ch 你将最后一个ch++;(line: 25) 去掉 应该就OK了. 感谢指出
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2