血和眼泪在一起滑落 2021-12-16 15:45 采纳率: 62.5%
浏览 34

C++我真的想请教一下这个问题,因为已经有很多次是这样子了:PTA的题,输出的部分放在main函数与自定义函数之中,结果不一样

题目如下:

img

我一开始的代码是:

#include <bits/stdc++.h>
using namespace std;
void strmcpy(char *s,char *t,int m)
{
    int i=m-1;
    for(i=m-1;t[i]!='\0';i++)
    {
        *(s+i)=*(t+i);
    }
}


int main()
{
    int repeat,m,i,len;
    char a[1000],b[1000];
    char *s=a,*t=b;
    cin>>repeat;
    for(i=repeat;i>0;i--)
    {
        getchar();
        cin.getline(b,1000);
        len=strlen(b);
        cin>>m;
        if(len<m)
        {
            cout<<"error input"<<endl;
            continue;
        }
        strmcpy(s,t,m);
        for(i=m-1;i<len;i++)
        {
            cout<<*(s+i);
        }
        cout<<endl;
    }
    return 0;
}

结果是这样子的:

img


也就是两次之后并没有停止,还是继续下去

后来改成了:

#include <bits/stdc++.h>
using namespace std;
void strmcpy(char *s,char *t,int m)
{
    int i=m-1;
    for(i=m-1;t[i]!='\0';i++)
    {
        *(s+i)=*(t+i);
    }
    for(i=m-1;i<strlen(t);i++)
        {
            cout<<*(s+i);
        }
        cout<<endl;
}


int main()
{
    int repeat,m,i,len;
    char a[1000],b[1000];
    char *s=a,*t=b;
    cin>>repeat;
    for(i=repeat;i>0;i--)
    {
        getchar();
        cin.getline(b,1000);
        len=strlen(b);
        cin>>m;
        if(len<m)
        {
            cout<<"error input"<<endl;
            continue;
        }
        strmcpy(s,t,m);
    }
    return 0;
}

结果是这样子的:

img

很想弄懂
仅仅是“控制输出的代码块”换了个位置结果就不同了吗

  • 写回答

3条回答 默认 最新

  • 於黾 2021-12-16 16:00
    关注

    你输入错误了啊
    人家输入的是3,你为什么要输入2

    评论

报告相同问题?

问题事件

  • 创建了问题 12月16日

悬赏问题

  • ¥30 微信小程序蓝牙数据透传
  • ¥15 加氢站氢负荷数据集来源
  • ¥15 umi接入sentry遇到问题
  • ¥15 HBuilderX打包H5网页,扫码模块无法使用
  • ¥15 Javascript跳转页面后,无法执行后面代码,如何解决?
  • ¥15 echarts绘制图表
  • ¥15 请教两个关于高德地图定位不准的技术问题
  • ¥15 根据企业名称 对照两个文件 样本筛选/匹配
  • ¥15 Linux环境下CA证书更新问题
  • ¥15 sqlserver语句提取结果以外数据