m0_58203183 2022-06-28 16:29 采纳率: 85.7%
浏览 28
已结题

为什么打印错误,会重复前面的打印

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数
include<stdio.h>
#include<stdlib.h>

#if(1)
void move(int *p,int n,int m)//n为元素后移位置,m为元素个数
{

int *p1;
int i;
for(i=0,p1=p;p1<p+n;p1++,i++)
{
    *p1=*(p+m-n+i);
}
for(i=0,p1=p+n;p1<p+m;p1++,i++)
{
    *p1=*(p+i);
}
for(i=m;i>0;i--)
{

    printf("%-2d",*(p1-i));
}

}

void main()
{
int i,n,m;
int c[100];
printf("请输入后移个数:\n");
scanf("%d",&n);
printf("请输入元素个数:\n");
scanf("%d",&m);
printf("请输入任意元素:\n");
for(i=0;i<m;i++)
{
scanf("%d",c+i);
}
move(c,n,m);
printf("\n");
system("pause");
}
#endif

img

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-06-28 16:39
    关注

    肯定不行啊,第一个循环过后,就将前面5个换成后面5个了啊。第二个循环就没有意义了。你在替换前5个前,需要将原先的前5个元素记下来啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月8日
  • 已采纳回答 6月30日
  • 创建了问题 6月28日

悬赏问题

  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题