此问题的关键是要建立多个数组并且层层嵌套
#include<stdio.h>
#include<windows.h>
void shuffling (int a[],int b[],int c[],int x);
void printit (int num[],char word[]);
void copye(int a[],int b[]);
int main(){
char word[5] = {'S','H','C','D','J'};
int i = 0,x = 0,u = 0;
int n;
int num[54];
int copy[54];
int init[54];
scanf("%d",&n);
for(i ; i < 54 ; i++){
num[i] = i+1;
scanf("%d",&init[i]);
}
copye(copy,num);
for(;1;){
for(i=0 ;i < 54;i++){
shuffling(num,copy,init,i);
x++;
}
u++;
copye(copy,num);
if (u == n)
break;
}
printit (num,word);
system("pause");
return 0;
}
void shuffling (int a[],int b[],int c[],int x){
a[c[x] - 1] = b[x];
}
void printit (int num[],char word[]){
int i = 0;
for (i ; i < 54; i++){
if(num[i]%13 != 0)
printf("%c%d",word[num[i]/13],num[i]%13);
else
printf("%c13",word[num[i]/13 -1]);
if(i < 53)
printf(" ");
}
}
void copye(int a[],int b[]){
int i = 0;
for (i ; i < 54 ; i++){
a[i]=b[i];
}
}