哪位大神会啊?这是C语言的。怎么做? 一维数组有n个整数,将数组中每个整数循环右移m(m<n

哪位大神会啊?这是C语言的。怎么做?一维数组有n个整数,将数组中每个整数循环右移m(m<n)个位置后输出,不能定义新的数组。例如:设n为7,m为2,原数组a为:11、22... 哪位大神会啊?这是C语言的。怎么做?

一维数组有n个整数,将数组中每个整数循环右移m(m<n)个位置 后输出,不能定义新的数组。 例如:设n为7,m为2,原数组a为:11、22、33、44、55、66、77,右移3后,a数组为66、77、 11、22、33、44、55。
展开
 我来答
这个名有人取了
2015-05-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

循环右移只要做三次逆序操作就行了,代码如下,请采纳。

看注释部分,认真想一下,不懂可追问

#include <stdio.h>
//将数组a的第left位到第right位之间的元素逆序
void reverse(int a[],int left,int right){
 
 for(int i=0;i<=(right-left)/2;i++){
  int tmp = a[left+i];
  a[left+i] = a[right-i];
  a[right-i] = tmp;
 }
}
int main()
{
 int a[100];
 int n,m,i;
 printf("输入数组长度:");
 scanf("%d",&n);
 printf("输入各数组元素:");
 for(i=0;i<n;i++)
  scanf("%d",&a[i]);
 printf("输入右移位数:");
 scanf("%d",&m);
 //1.将整个数组逆序
 reverse(a,0,n-1);
 //2.将前m位逆序
 reverse(a,0,m-1);
 //3.将剩下的后半部分逆序
 reverse(a,m,n-1);
 for(i=0;i<n;i++)
  printf("%d ",a[i]);
 printf("\n");
}
更多追问追答
追问
这个……有些东西我们好像还没学……
哦哦,好像明白一些了
a21259684
2015-05-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
我不会喔,不过真心希望您可以得到你要的答案
追问
谢谢
😘😘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式