c语言编程 有N个整数,使其前面各数顺序向后移动M个位置,最后M个数变成前面的M个数

#include<stdio.h>
#define N 10
void move(int a[],int n ,int m);
void main()
{
int a[N];
int i,m,n;
printf("请输入整数的个数:");
scanf("%d",&n);
printf("请输入%d个整数:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入准备移动的整数个数:");
scanf("%d",&m);
move(a,n,m);
printf("移动结果:");
for(i=0;i<n;i++)
printf("%d",&a[i]);
printf("\n");
}
void move(int a[],int n,int m)
{
int i,j,k;
for(i=n-1;i>=0;i--)
a[i+m]=a[i];
for(i=m;i<n+m-1;i++)
printf("%d",&a[i]);
for(j=0,k=n;j<m;j++,k++)
a[j]=a[k];

}
我不知道这个程序问题在哪儿,请高手指点。

错误一修改:

printf("%d",a[i]);

错误二修改:

void move(int a[],int n,int m)

{

int t[N];

int i,j=0;

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

t[j++]=a[i]

for(i=0; i<n-m; i++) //前面的后移

a[i+m]=a[i];

for(i=0;i<m;i++) //把t中的放到前面

a[i]=t[i];

}

扩展资料:

注意事项

调用自定义后移函数move(int *a, int n, int m)来进行循环移位,对n(n<20)个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,如下: n=10, m=3时:输入:1 2 3 4 5 6 7 8 9 10,输出:8 9 10 1 2 3 4 5 6 7

Input

输入多组测试数据,每组先输入n(n < 20)和m(m < n),再输入n个整数。

Output

输出循环移动m个数后的序列,数据间空格隔开。

Sample Input

10 4

1 2 3 4 5 6 7 8 9 10

7 2

1 2 3 4 5 6 7

Sample Output

7 8 9 10 1 2 3 4 5 6

6 7 1 2 3 4 5

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-18
#include<stdio.h>
#define N 10
void move(int a[],int n ,int m);
void main()
{
int a[N];
int i,m,n;
printf("请输入整数的个数:");
scanf("%d",&n);
printf("请输入%d个整数:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入准备移动的整数个数:");
scanf("%d",&m);
move(a,n,m);
printf("移动结果:");
for(i=0;i<n;i++)
printf("%d",a[i]);
printf("\n");
}
void move(int a[],int n,int m)
{
int i,j,k;
for(i=n-1;i>=0;i--)
a[i+m]=a[i];
for(i=m;i<n+m;i++)
printf("%d",a[i]);
for(j=0,k=n;j<m;j++,k++)
a[j]=a[k];

}本回答被网友采纳
第2个回答  2014-05-18
void move(int a[],int n,int m)
{
int t[N];
int i,j=0,k;
for(i=n-m;i<n;i++) //把后面的取出放到t中
t[j++]=a[i];
for(i=n-m;i>=m;i--) //前面的后移
a[i]=a[i-m];
for(i=0;i<m;i++) //把t中的放到前面
a[i]=t[i];
}
第3个回答  推荐于2018-02-26
改正1:
printf("%d",a[i]);
改正2:
void move(int a[],int n,int m)
{
int t[N];
int i,j=0;
for(i=n-m;i<n;i++) //把后面的取出放到t中
t[j++]=a[i];
for(i=0; i<n-m; i++) //前面的后移
a[i+m]=a[i];
for(i=0;i<m;i++) //把t中的放到前面
a[i]=t[i];
}本回答被网友采纳