c语言中如何使字母后移n位解释,有N个整数,使其前面各数顺序向后移动M个位置,最后M个数变成前面的...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

用动态内存分配写的..

可是得不到想要的答案...- -完全不明白哪里错了.无报错和警告.代码如下:

#include

#include

void

move(int *a,int n,int m)

{

int *p = a;

int *array_m;

array_m = malloc(m * sizeof(int));

if (array_m == NULL)

{

printf("Can't get memory for that many values.\n");

exit(EXIT_FAILURE);

}

for (p = p + n - m; p < p + n; p++)   //把后面的取出放到array_m中

*array_m++ = *p;

for (p = a; p < p + m; p++)   //前面的后移

*(p + m) = *p;

for (p = p + m; p >= a;p--)   //把array_m中的放到前面

*p = *--array_m;     //因为前面array_m指针已经指向最后那个内存之后.所以得先--.

free(array_m);    //释放内存

}

int

main()

{

int *array;

int n,i,m;

printf("请输入整数的个数:\n");

if (scanf("%d",&n) != 1 || n <= 0)

{

printf("Illegal number of values.\n");

exit(EXIT_FAILURE);

}

array = malloc(n * sizeof(int));

if (array == NULL)

{

printf("Can't get memory for that many values.\n");

exit(EXIT_FAILURE);

}

printf("请输入%d个整数:\n",n);

for (i = 0; i < n; i++)

{

if (scanf("%d",array + 1) != 1)

{

printf("Error reading value #%d\n",i);

free(array);

exit(EXIT_FAILURE);

}

}

printf("请输入准备移动的整数个数:\n");

while (scanf("%d",&m) != 1 || m <= 0)

{

printf("Illegal number of values.\n");

}

move(array,n,m);

for (i = 0; i < n; i++)

{

printf("%d\n",*(array + i));

}

free(array);

return EXIT_SUCCESS;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值