循环右移

作者在 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]);  
}

      
         
循环右移,
默认分类 | 阅读 708 次
文章评论,共0条
游客请输入验证码
文章分类
最新评论