题目
一共八张牌{2,3,4,5,6,7,8,9},2在最上面,9在最下面
一共输入3个数字,每一个数组对应一次切牌和洗牌
切牌规则: 假如输入的数字为n,那么久将第n张牌下面的所有牌都放在最上面
洗牌规则:将后四张牌依次交错,插入前四张牌。
样例:
输入 2 3 4
第一次切牌{4,5,6,7,8,9,2,3}
洗牌{4,8,5,9,6,2,7,3}
第二次切牌{9,6,2,7,3,4,8,5}
洗牌{9,3,6,4,2,8,7,5}
第三次切牌{2,8,7,5,9,3,6,4}
洗牌{2,9,8,3,7,6,5,4}
输出:29837654
初想法
我想借助一个辅助数组 完成切牌洗牌
感觉好简单 但我脑子要瓦特了 要不还是鲨掉我吧 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
#include<stdio.h>
int qiepai(int yuan[],int n){
int fuzhu[8]={0};
for(int i=0;i<n;i++){
fuzhu[i]=yuan[i];
}
for(int j=n;j<8;j++){
yuan[j-n]=yuan[j];
}
for(int k=0;k<n;k++){
yuan[8-n+k]= fuzhu[k];
}
return 0;
}
int xipai(int yuan[]){
int fuzhu1[4]={0};
int fuzhu2[4]={0};
for(int i=0;i<4;i++){
fuzhu1[i]=yuan[i];
fuzhu2[i]=yuan[i+4];
}
int c=0;
int d=0;
for(int k=0;k<8;k++){
if(k%2==0){
yuan[k]=fuzhu1[c++];
}
else{
yuan[k]=fuzhu2[d++];
}
}
return 0;
}
int main(){
int yuan[8]={2,3,4,5,6,7,8,9};
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
qiepai(yuan,a);
xipai(yuan);
qiepai(yuan,b);
xipai(yuan);
qiepai(yuan,c);
xipai(yuan);
for(int i=0;i<8;i++){
printf("%d",yuan[i]);
}
return 0;
}
一个教训
以我这个脑子,我需要写好伪代码 并且带入例子 一个一个功能的写,才可以不报错,省事是费事的影子。。。。。。