一道c语言题目~ 结果不对 想问问思路那里错了?

程序填空,不要改变与输入输出有关的语句。输入两个正整数n和m(1<m<n<=10),再输入n个整数,将这些数排成一行,向右循环移动m个位置(从右边移出的数再从左边移入),... 程序填空,不要改变与输入输出有关的语句。
输入两个正整数 n 和 m (1<m<n<=10),再输入 n 个整数,将这些数排成一行,向右循环移动 m 个位置(从右边移出的数再从左边移入),最后输出移动后的n个整数。
要求定义并调用函数 mov(x,n,m) 实现上述循环移动的功能,函数形参x的类型是整型指针,形参n和m的类型是int,函数的类型是void。
输入输出示例:括号内为说明
输入:
5 3 (n=5,m=3)
1 2 3 4 5 (5个整数)
输出:
After move: 3 4 5 1 2

请问这样写 为什么不对呢?拜托拜托
#include <stdio.h>
void mov(int *x, int n, int m);
int main(void)
{
int i, m, n;
int a[80];
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
mov(a,n,m);
printf("After move: ");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
void mov(int a[], int n, int m){
int i;
int y[n];
for(i=0;i<m-1;i++){
y[i+m-1]=a[i];
}

for(i=m-1;i<n;i++){
y[i-m+1]=a[i];
}

a[n]=y[n];
}
展开
 我来答
是个很人
2015-06-26 · TA获得超过237个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:124万
展开全部
int y[n]; 这里是错的 你的n不是预定义的 所以不能这样写 必须是准确的正整数

你的思路应该是错的 或者我看不懂- -

我是这样想的
定义一个新数组 比如原来的是 1 2 3 4 5 移动2个
用一个for来 第一个数 1原来的下标是0 那么放到0+2号位去的新数组去
2 1 0+2
到4的时候 3 加个判断 3+2>=5成立 所以减去5 放到0号位 最后用新数组覆盖原数组
wangguibj04
2015-06-26 · TA获得超过125个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:186万
展开全部
mov函数里面你想新建个数组 y, 把移动后的结果放在y里面,最后再移动到原数组里面,但是你最后的 a[n] = y[n] 写错了, c语言里面数组没法直接赋值啊,你得循环一个一个地赋值.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式