2022华科上机2

题目

一共八张牌{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;
}

一个教训

以我这个脑子,我需要写好伪代码 并且带入例子 一个一个功能的写,才可以不报错,省事是费事的影子。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值