为了账号安全,请及时绑定邮箱和手机立即绑定

二级C填空题

二级C填空题

C
包小龙虾 2018-08-10 20:55:00
#include <stdio.h>#include <string.h>void inv(char *str){int i,j,k; j=/**/              /**/;  strlen(str)-1 for(i=0;i<strlen(str)/2;i++,j--)   {k=*(str+i);    *(str+i)=*(str+j);    *(str+j)=/**/      /**/;   k   }} void main(){  char str[]="asdfjk";  printf("\n Original is: %s\n",str);  inv(str);  printf("\n Now is: %s\n",str);  getch();}为什么 j=/**/              /**/;  strlen(str)-1这里是strlen(str)-1啊,j不是等于最后一个字符吗,为什么还要减一啊?求大神解析还有就是想问一下怎么像大神们那样把代码弄成前面有标第几行的样子啊?
查看完整描述

1 回答

?
NothingAJ

TA贡献3条经验 获得超1个赞

这里调用的函数strlen(var) 是返回字符串的长度,而你所需要的是字符串的索引(index)值,是从零开始计数的。因此要减1.


第二个问题:https://img1.sycdn.imooc.com//5b6da40a0001fb7514420570.jpg

查看完整回答
反对 回复 2018-08-10
  • 包小龙虾
    包小龙虾
    第一个问题我还是不懂诶,我是理解说j是指最后一个字符,逆序的话从最后一个字符开始输出,就算是从0开始,不是也要输到0为止吗
  • NothingAJ
    NothingAJ
    你还是没看懂题目,函数实现了t=a, a=b, b=t,这个算法目的在于首尾值交换,并不是你所谓的从尾端倒排序,否则为什么用指针?因为调用函数必须是引用传递,否则是值传递,达不到目的。其二,还是我所讲的,如果一个数组{1, 2, 3},3这个值的索引值是多少?是2,但是这个数组的strlen是多少?是3,减1的目的就在于要定位最后一个元素。
  • 包小龙虾
    包小龙虾
    索引值是什么意思呀?可以解释下吗大神?
  • 1 回答
  • 0 关注
  • 858 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信