zxd0902 2015-11-14 06:33 采纳率: 0%
浏览 1372

使多个数移位输出,应用指针时出错,求解

要达到的目的是输入n = 5, a = {1,2,3,4,5},m = 3时能输出 4 5 1 2 3
可在对指针所指的值赋值时出错,是语法问题吗?代码见下:

/*移位m个整数*/
#include <stdio.h>
#include <stdlib.h>
int* a = 0, *a1 = 0;
int* move(int* a,int n,int m);
int main()
{
    int n;
    printf("Please input the size: ");
    scanf("%d",&n);
    //为数组动态分配大小
    if (!(a = (int* )calloc(n,sizeof(int))))
    {
        printf("Fail to allocate memory!!!\n");
        exit(1);
    }
    printf("Please input %d numbers: ",n);
    for (int i = 0; i < n; i++)
        scanf("%d",a + i);
    int m;
    printf("Please input m: ");
    scanf("%d",&m);
    a1 = move(a,n,m);
    //输出新排列
    for (int j = 0; j < n; j++)
        printf("%6d",a1 + j);
    system("pause");
    return 0;
}

int* move(int* a, int n,int m)
{
    for (int i = m; i < n; i++)
    {
        *(a1 + i -m) = *(a + i);  // 编译时这里内存报错,但不知为什么错,怎么改
    }
    for (int j = 0; j < m; j++)
    {
        *(a1 + n + j) = *(a + j);
    }
    return a1;
} 
  • 写回答

6条回答 默认 最新

  • Meditator_hkx 2015-11-14 06:37
    关注

    a1是什么东西?写错了吧?

    评论

报告相同问题?

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教