A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wg592930 中级黑马   /  2015-5-7 19:47  /  697 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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;
}

13 个回复

倒序浏览
我想说的是,楼主有测试自己的代码了吗?首先思路就有问题,如果我输入 He is a boy.按照题目要求应该输出He Is A Boy.而楼主的代码输出的可能是HE Is A Boy.甚至我再输入的坑一些的话,输入It Is An Apple.楼主看看会输出什么。而且最重要的是str是字符数组的首地址,也就是字符串的地址,那么地址减32又是什么鬼...
回复 使用道具 举报
1. 判断首字母是否需要转换大写。
2. 判断非字母的下一位是否需要转换大写。
回复 使用道具 举报
本帖最后由 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: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$
回复 使用道具 举报
wg592930 发表于 2015-5-8 06:50
由于【i】无法正常显示大家自行补齐  ,有测试 通过
pingchangdeMacBook-Pro:oc语言学习 pingchang$ ./a ...

楼主,你试过我说的几种输入吗?程序不代表只输入正常的跑通就好,而是输入不正常的也要正确的输出才行
回复 使用道具 举报
mony 中级黑马 2015-5-8 09:13:39
7#
wg592930 发表于 2015-5-8 06:50
由于【i】无法正常显示大家自行补齐  ,有测试 通过
pingchangdeMacBook-Pro:oc语言学习 pingchang$ ./a ...

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

看到这又是什么鬼,是不是受到mj老师的影响啊,发现论坛讨论里,你经常用哈哈。有点跑题了。
回复 使用道具 举报
在C中,用getchar()来接收字符串,感觉很别扭。小白飘过
回复 使用道具 举报
wangzhewjl 发表于 2015-5-8 09:40
看到这又是什么鬼,是不是受到mj老师的影响啊,发现论坛讨论里,你经常用哈哈。有点跑题了。 ...

什么鬼不是看他视频啊,难道不知道什么鬼现在很流行吗?
回复 使用道具 举报
黑马币   求扩散~~~
回复 使用道具 举报
本帖最后由 hehelaicaicai 于 2015-5-13 11:01 编辑

if(str>='a'&&str<='z')   这里应该是 if(str
>='a'&&str
<='z') 吧,
str -=32; 这里也是应该写个str



回复 使用道具 举报
还少个判断  还要从输入的第二个字符开始判断 把它当成for循环第一个要比较的字符  判断它非空 然后是不是小写 是小写 再转换成大写!
回复 使用道具 举报
借光 看看  感谢各路神仙
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马