“ 装逼不成,被雷劈了。。。。 ”答案
来源:互联网 发布:盘古网络是正规公司吗 编辑:程序博客网 时间:2024/06/02 21:15
对于http://blog.csdn.net/ganggexiongqi/article/details/8096440中的程序错误:
#include <stdio.h>#include <string.h>#define MAX 1024int restr(char* const str){ int i; if (str == NULL) return 0; for (i = 0; i < strlen(str) / 2; i ++) { /* 其实是这里的原地交换出了问题 ###1 */ str[i] ^= str[strlen(str) - i -1]; str[strlen(str) - i -1] ^= str[i]; str[i] ^= str[strlen(str) - i -1]; } return 0;}int main(void){ char str[MAX]; printf("input the str:\n"); gets(str); restr(str); printf("after the processed:\n"); printf("%s\n",str); return 0;}
错误出现在###1处。
比如分析输入串为"AAA"的情况。
i = 0 时:
str[i] ^= str[strlen(str) - i -1]; // str[0] ^= str[2],这一步执行完毕时,str[0] = '\0' str[strlen(str) - i -1] ^= str[i]; //str[0 - 0 - 1] ^= str[0], str[-1] 处的值被取反。 str[i] ^= str[strlen(str) - i -1]; // str[0] ^= str[0 - 0 - 1], str[0] 被赋值为str[-1]处未取反时的值。一般str[-1]处的值为'\0', 所以从restr()中返回时,字符串长度变为了0,所以在输入串为“AAA”时,输出为空。但是,当输入串的所有对称位置上的字符串不相等时,输出结果还是正确的。
修正后的程序: int len = strlen(str); for (i = 0; i < len / 2; i ++) { /* 其实是这里的原地交换出了问题 ###1 */ str[i] ^= str[len - i -1]; str[len - i -1] ^= str[i]; str[i] ^= str[len - i -1]; }
- “ 装逼不成,被雷劈了。。。。 ”答案
- 装逼不成,被雷劈了。。。。
- PhysX问题笔记——装逼不成反被草
- 被雷劈到的感悟1
- 我被中国教育逼疯了
- “莫装B,装B遭雷劈”的英语翻译竞赛
- 你的英语口语绝对不成问题了
- [转]踢球装逼要诀!这个就厉害了!
- 被逼无奈自己修好了乐视电视!
- 别把我逼急了
- 今晚没人吹牛逼了
- 四级,傻逼了...
- 今年新流行语-被逼的!见面就问,您逼了吗?胡戈《007大战黑衣人》插曲《被逼的》
- 积分被骗走了,但没下下来东西,不知道为什么,难不成网站被黑了
- 知乎越来越无聊了,真是想破了脑袋找可以装逼的地方!
- 今天被逼无奈,出招了! 很不开心,不过下午获解,心情也轻松了...
- 牛逼 装逼 傻逼 的区别
- 公司现在是闹不成了,明年考系统分析师
- IT 男 到底有多“男” 多悲催 谁能懂?!
- C++编程的精品文章整理
- 背包问题应用
- 登陆界面验证码的编写
- erlang实现的一个echo服务器
- “ 装逼不成,被雷劈了。。。。 ”答案
- 2012.10.20 百度笔试 及 一面, 二面, 第二次二面(三面)
- Android 返回键实现home键的功能
- Ubuntu 12.04_64 Chromium安装FlashPlayer插件
- 美团网 笔试
- 用引用返回值(转)
- C#--第八周实验--任务8--使用移位运算来避免乘法运算。
- centOS yum 安装mysql
- ZOJ 3613 Wormhole Transport(DP 斯坦纳树)