改错题_101

来源:互联网 发布:手机备份软件排名 编辑:程序博客网 时间:2024/05/16 00:49

1. 第7行,将if (b >= 'A'&&b <= 'Z') b += 'b' - 'A' 改成 if (b >= 'A'&&b <= 'Z') b += 'a' - 'A'

 

题解:这里通过将’a’ - ‘A’的差值作为把小写改变成大写的方法, 翻译成ASCII码就是用97 - 65, 再通过将字符变量b加上这个值, 将b变换成小写字母。

 

2. 第16行,将 equal(p, q) 改为 equal(*p, *q)

 

题解:因为函数equal的参数为(char, char),所以在调用的时候不能使用p, q这两个字符指针。

ps: 还可以将参数进行修改,不过那样对函数也要进行一定的修改,如下

int Equal(char* a, char* b)

{

    if (*a >= 'A'&&*a <= 'Z') *a += 'a' - 'A';

    if (*b >= 'A'&&*b <= 'Z') *b += 'a' - 'A';

    return *a == *b;

}

个人觉得还是第一种比较好。

 

3. 第21行, 将 return 0 改为 return NULL

 

题解:因为函数substr的返回值类型为char*,所以返回NULL

 

4. 28行,将if ((p = substr(str, s2))!= 0) 改为 if ((p = substr(str, s2)) == NULL)

 

题解:通过阅读函数substr可以知道,当未找到子串时,返回NULL,找到的时候返回s所指向的地址,所以应该在等于NULL是输出”找不到子串“。

 

5. 第31行,将 p - str 改成 (p - str) / sizeof(char) + 1

 

题解:因为指针移动不是单纯的在当前地址值上加上1,而是加上一个当前的数据类型的长度,所以求位置是p - str还需要除以sizeof(char),由于题目要求中字符串第一个字符为1,所以最后还需要加上一个1

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 自制腊肠放干了怎么办 孕妇吃了4块腊肉怎么办 衣服沾了火锅味怎么办 皮包上有火锅味怎么办 芝士年糕裂开了怎么办 制作牛肉酱咸了怎么办 腌牛肉太咸了怎么办 八宝粥的拉环断了怎么办 八宝粥易拉罐拉环断了怎么办 吃完辣的胃难受怎么办 天天呆在家很烦怎么办 吃多了荔枝上火怎么办 猛犸牙牌子裂了怎么办 玩游戏电脑卡了怎么办 电脑打开卡在选项界面怎么办? 红警突然卡死怎么办 柯基不吃狗粮怎么办 貔貅嘴巴磕破了怎么办 开光貔貅牙磕了怎么办 玉貔貅鼻子碎了怎么办 开光的貔貅摔坏了怎么办 貔貅摔坏了耳朵怎么办? 貔貅摔坏了一点点怎么办 天猫删评价扣4分怎么办 暴风影音下载电视剧下载不了怎么办 fm2017引援电脑买了怎么办 退休时医保不够二十年怎么办 和的面迟迟不发怎么办 做面条的面发了怎么办 发不起来的面团怎么办 如果婚后买房离婚后财产怎么办 空腹体检前喝水了怎么办 莆田市风俗婴儿死了怎么办后事 上司给你换不好岗位怎么办 领导要把我调走怎么办 美国上庭遇法官退休案子怎么办 夫妻一套房离婚户囗怎么办 正营生不了副团怎么办 浅色衣服被染色了怎么办 解大便解不出来怎么办 强拆挖掘机被村民扣押怎么办