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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程序猿-2014 中级黑马   /  2014-4-10 20:07  /  961 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 程序猿-2014 于 2014-4-11 14:35 编辑

void reverse_str(char *ch)
{
    long len;
    char ctemp;
    len = strlen(ch);

    for (int i = 0; i < len - i - 1; i++) {

        ctemp = ch;
        ch = ch[len - i - 1];
        ch[len - i - 1] = ctemp;
    }
}
len - i - 1   求大神解惑这个  - i - 1的意思

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 一只小菜鸟 于 2014-4-10 20:54 编辑

ctemp = ch;
        ch = ch[len - i - 1];
        ch[len - i - 1] = ctemp;
你确定不是ch么。

这个是字符串倒叙输出把?
  1.     char str[]="asdfgh";
  2.     char k;
  3.     for (int i=0,j=strlen(str)-1; i<j; i++,j--) {
  4.         k=str[i];
  5.         str[i]=str[j];
  6.         str[j]=k;
  7.     }
  8.     printf("%s\n",str);
复制代码

len - i - 1 ,len字符串长度,ch[len-i-1],
当i=0是,是最后一个字符,
当i=1时,倒数第二个字符。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
这个题一看就是字符串倒序输出
1:无论字符串中的字符个数是奇数还是偶数都只用遍历到字符串中字符个数的一半即可
     将第一个和最后一个交换,一次类推
2:字符串长度是决定循环的次数
3:当循环中的变量 i 在增加的时候循环条件就在依次减小
4:当 i = 0的时候len-i-1就是代表的最后一个字符,直到i增长到i<len-i-1的时候停止循环
5:循环条件也可以修改成(len-1)/2也可以。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马