| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2015 人关注过本帖
标题:一道简单的C语言编程练习题,不知道错在哪里,求各位大神解答!
只看楼主 加入收藏
摩诃婆罗多bk
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-8
收藏
得分:0 
回复 10楼 书生牛犊
好的,非常感谢
2016-10-08 16:18
摩诃婆罗多bk
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-8
收藏
得分:0 
回复 10楼 书生牛犊
我懂您的意思了,是我想当然的觉得字符数组未被初始化就会以'\0'结尾。除了您指出的c数组,还有d数组也犯了同样的错误。我反思一下,下次再遇到此类问题时,将字符串数组初始化为空即可,编译器会自动补上'\0'。再次感谢您
2016-10-08 17:19
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
回复 12楼 摩诃婆罗多bk
将字符数组初始化为空 其实只是把数组的每一个元素都初始化为数值0,也就是‘\0’。
编译器不会自动帮你补'\0',这个你要搞清楚。所有的C语言里的字符串都是字符数组,而\0是为了标示字符串长度而出现的。

φ(゜▽゜*)♪
2016-10-08 17:32
摩诃婆罗多bk
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-8
收藏
得分:0 
回复 13楼 书生牛犊
原来是这样。。。我一直不知道'\0'其实是数值零,以后学习的时候我会多注意细节。另外这是我在这个论坛发的第一个帖子,前辈您的态度让我很感动,我会尽力提高自己,争取以后也和您一样帮小白答疑解惑。
收到的鲜花
  • 书生牛犊2016-10-08 18:26 送鲜花  49朵   附言:薪火相传,交给你了
2016-10-08 17:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用摩诃婆罗多bk在2016-10-8 15:56:14的发言:

这是问题的地址,有兴趣的朋友可以试一试
http://www.

程序代码:
#include <stdio.h>
#include <ctype.h>

int main( void )
{
    char a[81], b[81];
    scanf( "%s%s", a, b );

    char map[128] = { 0 };
    for( char *pa=a, *pb=b; *pa; ++pa )
    {
        if( *pa == *pb )
        {
            ++pb;
            continue;
        }

        char upr = toupper(*pa);
        if( map[upr] == 0 )
        {
            map[upr] = 1;
            printf( "%c", upr );
        }
    }

    return 0;
}
2016-10-09 08:53
摩诃婆罗多bk
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-8
收藏
得分:0 
回复 15楼 rjsp
非常感谢您的代码!抱歉这么晚才回复,之前不知怎么没有看到😵
2016-10-27 20:58
快速回复:一道简单的C语言编程练习题,不知道错在哪里,求各位大神解答!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041706 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved