帮我纠正下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];
} 展开
#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];
} 展开
展开全部
主函数没错误,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个位置
}
}
首先 要移动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个位置
}
}
展开全部
#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;
}
}
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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询