首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解:改变数组元素排序的有关问题

2013-12-26 
求解:改变数组元素排序的问题如下:int a[8]{1,2,3,4,5,6,7,8}int b[8]int c实现以下功能:当c0时,b[8]

求解:改变数组元素排序的问题
如下:
int a[8]={1,2,3,4,5,6,7,8};
int b[8];
int c;
实现以下功能:
当c=0时,b[8]={1,2,3,4,5,6,7,8};
当c=1时,b[8]={2,3,4,5,6,7,8,1};
当c=2时,b[8]={3,4,5,6,7,8,1,2};
以此类推

[解决办法]


#include <iostream>
using namespace std;

void circular(int a[],int n,int b[],int c)
{
for(int i=0;i<n;++i)
{
b[(i-c+n)%n]=a[i];
}
}

void print(int a[],int n)
{
for(int i=0;i<n;++i)
{
printf("%d\t",a[i]);
}
printf("\n");
}

int main()
{
int a[8]={1,2,3,4,5,6,7,8};
int b[8];
int n=sizeof(a)/sizeof(a[0]);
print(a,n);
circular(a,n,b,0);
print(b,n);
circular(a,n,b,1);
print(b,n);
circular(a,n,b,2);
print(b,n);

return 0;
}

[解决办法]
void trans(int b[], int a[], int n, int c)
{
     int i = 0;
     for(i=0; i<n; i++)
    {
          b[i] = a[(c+i)%n];
    }
}
int main()
{
     int a[8] = {1,2,3,4,5,6,7,8};
     int b[8] = {0};
     int step = 0;
     step = 1;
     trans(b, a, sizeof(a), step);
    step = 2;
     trans(b, a, sizeof(a), step);
}
[解决办法]
引用:
Quote: 引用:

void trans(int b[], int a[], int n, int c)
{
     int i = 0;
     for(i=0; i<n; i++)
    {
          b[i] = a[(c+i)%n];
    }
}
求解:(c+i)%n的原理?谢谢!

求(c+i)除以n的余数,判断应该把a中那个值放在b[i]里

热点排行