哪位大神会啊?这是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。 展开
一维数组有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。 展开
展开全部
循环右移只要做三次逆序操作就行了,代码如下,请采纳。
看注释部分,认真想一下,不懂可追问
#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");
}
更多追问追答
追问
这个……有些东西我们好像还没学……
哦哦,好像明白一些了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询