c语言 急!!!!!!!!!1

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:11:24
编一个程序 :

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数

#include <stdio.h>
int main()
{
int A[100],B[100],n,m,i;
printf("input n:\n");/*输入整数个数*/
scanf("%d",&n);
printf("input m:\n");/*输入m*/
scanf("%d",&m);
for(i=0;i<n;i++)
{printf("input number:\n");/*依次输入n个数字*/
scanf("%d",&B[i]);
}
for(i=0;i<n;i++)
{
A[i]=B[(i+m)%n];
}
printf("After transform the array is:\n");
for(i=0;i<n;i++)
printf("%d ",A[i]);
getch();
return 0;
}

好象用链表可以解决,具体我也不太清楚,你可以看一下相关的内容.

似可以做一个两头的队列 ,然从队尾做m次的出,从另头做m次的进入。

算法(伪语言描述)
-------------------------------------------
BEGIN
int a[n]
int t

输入数组a[]

for(循环m次)
数组中最后一个数a[n]存到临时变量t中
所有的数后移一位
将临时变量中的值给a[0]
endfor
for(以i为循环变量循环m/2次)
将a[i]与a[m-i]交换
endfor
END
___________________________________________