Scx' 2022-11-27 19:45 采纳率: 90.9%
浏览 4
已结题

大家可以看看哪出错了捏

问题遇到的现象和发生背景

有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前m个数。

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
void move(int a[], int m, int n)
{
    int* p, b[100], * p1;
    int i;
    for (p = &a[n - m], p1 = b, i = 0; i < m; i++, p++, p1++)
        *p1 = *p;//将输入数组a后面的m个数放入b数组中
    for (i = n - m - 1, p = &a[n - m - 1]; i >= 0; i--, p--)
        a[i + m] = *p;//将a数组前面的n-m个数往后移动m个数
    for (i = 0, p1 = b, p = a; i < m; i++, p1++, p++)
        *p = *p1;//将b数组中存放的m个数放到a数组的前m个元素中

    
}
int main()
{
    int a[100], n, m, i;
    printf("要输入多少个数?\n");
    scanf_s("%d", &n);
    printf("要往后移多少个数?\n");
    scanf_s("%d", &m);
    printf("请输入你要输入的数:\n");
    for (i = 0;i < n;i++)
        scanf_s("%d", &a[i]);
    
    move(a, m, n);
    printf("现在他们是:\n");
    for (i = 0;i < n;i++);
    printf("%d", a[i]);
    return 0;


}

    

运行结果及报错内容

要输入多少个数?
4
要往后移多少个数?
2
请输入你要输入的数:
1 2 3 4
现在他们是:
-858993460
D:\实验四\8.4\x64\Debug\8.4.exe (进程 39628)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-27 21:04
    关注

    第28行里,最后输出的循环 for (i = 0;i < n;i++); 最后多了 ’;' 分号。
    另第26行里,调用函数 move(a, m, n); 里,中间参数 m 改为: move(a, m % n, n); 更合理些,防止 m 大于 n 时,数组操作越界。

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

报告相同问题?

问题事件

  • 系统已结题 12月5日
  • 已采纳回答 11月27日
  • 创建了问题 11月27日

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并