黑马程序员技术交流社区

标题: 基础测试 请大家帮忙完善 [打印本页]

作者: 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 编辑
mony 发表于 2015-5-7 20:27
我想说的是,楼主有测试自己的代码了吗?首先思路就有问题,如果我输入 He is a boy.按照题目要求应该输出H ...

#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
wg592930 发表于 2015-5-8 06:46
#include #include int main(){    char str[1000];    int flag=1;    printf("输入字符串:\n");    gets ...

由于【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
wg592930 发表于 2015-5-8 06:50
由于【i】无法正常显示大家自行补齐  ,有测试 通过
pingchangdeMacBook-Pro:oc语言学习 pingchang$ ./a ...

楼主,你试过我说的几种输入吗?程序不代表只输入正常的跑通就好,而是输入不正常的也要正确的输出才行
作者: mony    时间: 2015-5-8 09:13
wg592930 发表于 2015-5-8 06:50
由于【i】无法正常显示大家自行补齐  ,有测试 通过
pingchangdeMacBook-Pro:oc语言学习 pingchang$ ./a ...

比如输入这个:It Is An Apple.按照题目要求,这串字符串输出应该依然是It Is An Apple.但是楼主试下你的代码看能输出正确的吗
作者: wangzhewjl    时间: 2015-5-8 09:40
mony 发表于 2015-5-7 20:27
我想说的是,楼主有测试自己的代码了吗?首先思路就有问题,如果我输入 He is a boy.按照题目要求应该输出H ...

看到这又是什么鬼,是不是受到mj老师的影响啊,发现论坛讨论里,你经常用哈哈。有点跑题了。
作者: CornerFly    时间: 2015-5-8 10:48
在C中,用getchar()来接收字符串,感觉很别扭。小白飘过
作者: mony    时间: 2015-5-8 13:54
wangzhewjl 发表于 2015-5-8 09:40
看到这又是什么鬼,是不是受到mj老师的影响啊,发现论坛讨论里,你经常用哈哈。有点跑题了。 ...

什么鬼不是看他视频啊,难道不知道什么鬼现在很流行吗?
作者: 天马木偶    时间: 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