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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wxy19891017 于 2015-4-22 15:23 编辑

#import <Foundation/Foundation.h>

//定义一个函数,将小写字母转换成大写字母
char upper(char c);

int main()
{
    //存储用户输入的数据
    char str[100];
   
    //提示输入并接收
    printf("请输入一段英文句子:\n");
    //如果使用scanf不能完整接收带有空格的字符串
    gets(str);
   
    //定义一个指针指向数组首元素
    char *p = str;
   
    //判断首字母是不是大小写
    *p = upper(*p);
   
    //*p不遇到'\0'
    while (*p)
    {
        //没有遇到空格,继续
        if (*p !=' ')
        {
            p++;
        }
        //遇到空格,定位到下一个字符,字母小写改成大
        else
        {
            p++;
           *p = upper(*p);
            }
        }
    }
   
    printf("%s",str);
   
   
    return 0;
}

//转大写
char upper(char c)
{
    if (c >= 'a' && c <= 'z')
    {
        return c - 32;
    }
   
    return c;
}

其实网上看了好多,都没有考虑到第一个单词的首字母如果大写的情况。还有就是这里如果用scanf接收数据的话,带有空格的字符串,空格后的字符串都会丢失,所以用了gets。去除了下重复的代码。

点评

好问题  发表于 2015-4-23 17:07

31 个回复

倒序浏览
支持一下,我的基础题有这个,实在想不到的话再看
回复 使用道具 举报
楼主,这个知识点是哪门语言里面涉及的?
回复 使用道具 举报
这个c视频看完就可以做出来吗?
回复 使用道具 举报
哪个呦,发这么好的帖子,顶你
回复 使用道具 举报
既然已经写了char upper(char c)去判断是小写字母则转换。

那么,遇到空格下一位是否需要转换的,直接传进去不就行了。

怎么又写了一遍: if (*p >= 'a' && *p <= 'z') { *p -= 32;}

不要浪费自己写过的功能啊...
回复 使用道具 举报
仰望的繁华 发表于 2015-4-21 23:32
既然已经写了char upper(char c)去判断是小写字母则转换。

那么,遇到空格下一位是否需要转换的,直接传进 ...

恩。确实是。忽略了。非常感谢!
回复 使用道具 举报
凌乱 发表于 2015-4-21 20:27
楼主,这个知识点是哪门语言里面涉及的?

其实就是C语言就足够了
回复 使用道具 举报
ios专用 发表于 2015-4-21 21:41
这个c视频看完就可以做出来吗?

可以,不看完基本也能做出来,单单就是用到了指针和while循环。
回复 使用道具 举报
wxy19891017 发表于 2015-4-22 08:20
其实就是C语言就足够了

好的,我加紧看完c语言,争取第八期的名额
回复 使用道具 举报
刚才看了一下你的代码,发现你的代码的功能重复了,upper里面的和main里面判断字母的代码是重复,这样不好,太浪费看,你不觉得么
回复 使用道具 举报
不错啊! 一个字牛啊!
回复 使用道具 举报
不错啊! 一个字牛啊!
回复 使用道具 举报
向楼主学习
回复 使用道具 举报
枫宇翔 发表于 2015-4-22 10:02
刚才看了一下你的代码,发现你的代码的功能重复了,upper里面的和main里面判断字母的代码是重复,这样不好 ...

恩,确实是。待改进,我也是新手,谢谢提了建议!
回复 使用道具 举报
楼主很棒!
回复 使用道具 举报
wxy19891017 发表于 2015-4-22 08:21
可以,不看完基本也能做出来,单单就是用到了指针和while循环。

:'(  不会做,我c语言部分还没看完
回复 使用道具 举报
ios专用 发表于 2015-4-22 22:56
不会做,我c语言部分还没看完

我也是小白,知识看过了,好多题目一眼看上去没什么思路,百度下看下人家写的,大部分又能看懂。这可能就是咱们这种刚开始接触编程都要遇到的,视频上,老师说编程的思想不是一天两天培养出来的,需要在开发中慢慢培养的。
回复 使用道具 举报
代码很不错哦,加油
回复 使用道具 举报

太渣渣了,最简单的指针了,对于新手的我,慢慢学吧!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马