黑马程序员技术交流社区
标题: 基础测试 请大家帮忙完善 [打印本页]
作者: wg592930 时间: 2015-5-7 19:47
标题: 基础测试 请大家帮忙完善
本帖最后由 wg592930 于 2015-5-8 09:37 编辑
输入一英文句子,将其中所有单词首字符转换成大写后输出。(C语言)
程序如下
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000];
int flag=1;
printf("输入字符串:\n");
gets(str);
for(int i=0;i <= strlen(str)-1;i++)
{
if(str>='a'&&str<='z')
if(flag==1)
{
str -=32;
flag=0;
}
if(str==' ')
flag=1;
}
puts(str);
return 0;
}
作者: mony 时间: 2015-5-7 20:27
我想说的是,楼主有测试自己的代码了吗?首先思路就有问题,如果我输入 He is a boy.按照题目要求应该输出He Is A Boy.而楼主的代码输出的可能是HE Is A Boy.甚至我再输入的坑一些的话,输入It Is An Apple.楼主看看会输出什么。而且最重要的是str是字符数组的首地址,也就是字符串的地址,那么地址减32又是什么鬼...
作者: 仰望的繁华 时间: 2015-5-7 22:41
1. 判断首字母是否需要转换大写。
2. 判断非字母的下一位是否需要转换大写。
作者: wg592930 时间: 2015-5-8 06:46
本帖最后由 wg592930 于 2015-5-8 06:49 编辑
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000];
int flag=1;
printf("输入字符串:\n");
gets(str);
for(int i=0;i <= strlen(str)-1;i++)
{
if(str>='a'&&str<='z')
if(flag==1)
{
str -=32;
flag=0;
}
if(str==' ')
flag=1;
}
puts(str);
return 0;
}
作者: wg592930 时间: 2015-5-8 06:50
由于【i】无法正常显示大家自行补齐 ,有测试 通过
pingchangdeMacBook-Pro:oc语言学习 pingchang$ ./a.out
输入字符串:
warning: this program uses gets(), which is unsafe.
he is
He Is
pingchangdeMacBook-Pro:oc语言学习 pingchang$
作者: mony 时间: 2015-5-8 09:12
楼主,你试过我说的几种输入吗?程序不代表只输入正常的跑通就好,而是输入不正常的也要正确的输出才行
作者: mony 时间: 2015-5-8 09:13
比如输入这个:It Is An Apple.按照题目要求,这串字符串输出应该依然是It Is An Apple.但是楼主试下你的代码看能输出正确的吗
作者: wangzhewjl 时间: 2015-5-8 09:40
看到这又是什么鬼,是不是受到mj老师的影响啊,发现论坛讨论里,你经常用哈哈。有点跑题了。
作者: CornerFly 时间: 2015-5-8 10:48
在C中,用getchar()来接收字符串,感觉很别扭。小白飘过
作者: mony 时间: 2015-5-8 13:54
什么鬼不是看他视频啊,难道不知道什么鬼现在很流行吗?
作者: 天马木偶 时间: 2015-5-8 20:15
黑马币 求扩散~~~
作者: hehelaicaicai 时间: 2015-5-13 10:57
本帖最后由 hehelaicaicai 于 2015-5-13 11:01 编辑
if(str>='a'&&str<='z') 这里应该是 if(str
>='a'&&str
<='z') 吧,
str -=32; 这里也是应该写个str
作者: 丶有果灬 时间: 2015-5-13 14:48
还少个判断 还要从输入的第二个字符开始判断 把它当成for循环第一个要比较的字符 判断它非空 然后是不是小写 是小写 再转换成大写!
作者: zhangxiaodonghi 时间: 2015-8-17 17:46
借光 看看 感谢各路神仙
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |