帮我纠正下C语言题目 并改正

有N个整数,使前面各数顺序循环移动M个位置(M<N)。编写一个函数实现以上功能,在主函数中输入N个整数并输出调整后的N个整数。#include<stdio.h>voidm... 有N个整数,使前面各数顺序循环移动M个位置(M<N)。编写一个函数实现以上功能,在主函数中输入N个整数并输出调整后的N个整数。

#include <stdio.h>
void mov(int*,int,int)
int main(void)
{
int m,n,i,a[80],*p;

printf("Input n,m:");
scanf("%d%d",&n,&m);
for(p=a,i=0;i<n;i++)
scanf("%d",&p++);
mov(a,n,m);
printf("After move:");
for(i=0;i<n;i++)
printf("%5d",a[i]);
return 0;
}
void mow(int*x,int n,int m)
{
int i,j;
for(i=0;i<m;i++){
for(j=n-1;j>0;j--)
x[j]=x[j-1];
x[0]=x[n-1];
}
展开
 我来答
百度网友f00e7f36
2010-03-14 · TA获得超过117个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:253万
展开全部
主函数没错误,mow函数有问题,你的 for都少一个大括号

首先 要移动m个位置,第一层循环要循环m次,数组有n个数,所以第二层循环,要循环n次。因为是依次将前一个数移动到后一个数,因此要将数组最后一个数放入一个临时变量保护,最后将其挪到第一个数的位置
应该这样写
void mow(int *x,int n,int m)
{
int i,j; //控制两层循环
int temp; //用于存放最后一个数
for(i=0;i<m;i++)
{
temp = x[n-1]; //首先将数组最后一个数保护
for(j=n-1;j>0;j--)
{
x[j] = x[j-1]; //依次将每个数后移一个
}
x[0] = temp; //将最后一个数移动到第0个位置
}
}
夸父逐光
2010-03-14 · TA获得超过103个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:184万
展开全部
#include <stdio.h>
void mov(int*,int,int);

int main(void)
{
int m,n,i,a[80],*p;

printf("Input n,m:");
scanf("%d%d",&n,&m);
for(p=a,i=0;i<n;i++)
scanf("%d",p++);
mov(a,n,m);
printf("After move:");
for(i=0;i<n;i++)
printf("%5d",a[i]);
return 0;
}

void mov(int*x,int n,int m)
{
int i,j,s;
for(i=0;i<m;i++)
{
s=x[n-1];
for(j=n-1;j>0;j--)
x[j]=x[j-1];
x[0]=s;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式