——————————
题干不是很完整,主要是为昨天期末考试的没做出来的同学提供一种思路。今晚考柿orz
看机会,以后会补充题目?
思路:一开始我以为可以用类似冒泡排序做,但是显然测试的时候不行。因此,我选择复制一个副本字符数组,也就是str_card来使交换时更加便利。因为把复制字符数组放在for循环里面,那么就会随一次循环把str_card中的值更改一下。最后输出的方式,当然,用 scanf 直接输出两个没问题,但我就这么写了~
——————————
题目描述:
有54张牌,牌面分别为2,3,4,5,6,7,8,9,10,J,Q,K,A,W。其中W有两张,包含两种花色。分别为red和black……
我的代码:
#include<stdio.h>
#include<string.h>
typedef struct{
char num[10];
char ch[10];
}CARDS;
int main(){
CARDS card[55],str_card[55];
int n,i,j,k,kk,cn,times,order[55]={0};
char str1[55],str2[55];
//存入
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%s%*c%s",card[i].num,card[i].ch);
scanf("%d",×);
for(i=1;i<=n;i++)scanf("%d",&order[i]);
//进行交换
for(i=1;i<=times;i++){
for(cn=1;cn<=n;cn++){
strcpy(str_card[cn].ch,card[cn].ch);
strcpy(str_card[cn].num,card[cn].num);
}
for(j=1;j<=n;j++){
k=order[j];
if(k==j)continue;
strcpy(card[k].ch,str_card[j].ch);
strcpy(card[k].num,str_card[j].num);
}
}
for(i=1;i<=n;i++){
printf("%s ",card[i].num);
puts(card[i].ch);
}
return 0;
}