阴天搁浅的航 2021-11-22 01:05 采纳率: 71.4%
浏览 36

这段代码输出结果是什么呀?为什么?

#include <iostream>
#include <cstring>
using namespace std;

void invert (char *a,int x,int y)
{
    char t,*p,*q;
    p=a+x;
    q=a+y;
    while(p<q)
    {
        t=*p;
        *p=*q;
        *q=t;
        p++;q--;
    }
}

int main()
{
     char dt[13]="GoodBookNice";
     int i=0,n=1;
     while(i<8)
     {
         invert(dt,i,i+5);
         cout << "第" << n++ << "次计算:" << endl;
         for(int j=i;j<=i+5;j++)
         {
             cout << dt[j] << ',';
         }
         cout << endl;
         i+=6;
     }
     cout << "共执行了" << i << "次计算。" <<endl;
     return 0;
}


  • 写回答

1条回答 默认 最新

  • 逃离那片云 2021-11-22 13:43
    关注

    输出结果:

    1次计算:
    o,B,d,o,o,G,
    第2次计算:
    e,c,i,N,k,o,
    共执行了12次计算。
    

    讲一下为什么是这样的结果:
    这个代码里面的invert函数的作用是,把字符数组的选定范围内的字符反转顺序
    如,char a[6]="abcdefg";invert(a,0,6)的结果就是字符数组a内的数据被倒序,即gfedcba,是指字符数组内数据被倒序改动,而不是倒序输出。
    主函数的功能就是调用了上面的倒序函数,照这样invert(dt,i,i+5);倒一次,前六个就被倒转,然后倒转的字符被输出。
    i+6后,不满足循环条件,又invert(dt,i,i+5)倒转一次,这时候倒转的是dt[6]到dt[11],接着倒转的字符被输出,i再次+6;
    满足条件跳出循环,输出一共i次计算,就是12次

    评论

报告相同问题?

问题事件

  • 创建了问题 11月22日

悬赏问题

  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物