作者在 2010-04-28 20:07:55 发布以下内容
#include<stdio.h>
#include<stdlib.h>
#define n 10
void rsh(int *a,int k)
{
int i,j,l,p,temp;
for(i=1;i<=k;i++)
if(n%i==0&&k%i==0)
p=i;
for(i=0;i<p;i++)
{
j=i;
l=(i+n-k)%n;
temp=a[i];
while(l!=i)
{
a[j]=a[l];
j=l;
l=(j+n-k)%n;
}
a[j]=temp;
}
}
int main()
{
int a[n],i,k;
for(i=0;i<n;i++)
{
printf("shu zu:");
scanf("%d",&a[i]);
}
printf("shu k:");
scanf("%d",&k);
rsh(a,k);
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}
循环右移,#include<stdlib.h>
#define n 10
void rsh(int *a,int k)
{
int i,j,l,p,temp;
for(i=1;i<=k;i++)
if(n%i==0&&k%i==0)
p=i;
for(i=0;i<p;i++)
{
j=i;
l=(i+n-k)%n;
temp=a[i];
while(l!=i)
{
a[j]=a[l];
j=l;
l=(j+n-k)%n;
}
a[j]=temp;
}
}
int main()
{
int a[n],i,k;
for(i=0;i<n;i++)
{
printf("shu zu:");
scanf("%d",&a[i]);
}
printf("shu k:");
scanf("%d",&k);
rsh(a,k);
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}