程序:

 #include<stdio.h>
int main() {
int i,n,*result;
scanf("%d",&n);
int shuffle[],card1[],card2[];
result = n%==?card1:card2;
for(i=; i<; i++) {
scanf("%d",&shuffle[i]);
}
//初始化
for(i=; i<; i++) {
card1[i] = i;
}
//洗牌
/*
while(n) {
if(n%2==1) {
for(i=0; i<54; i++) {
card2[shuffle[i]-1] = card1[i];
}
} else {
for(i=0; i<54; i++) {
card1[shuffle[i]-1] = card2[i];
}
}
n--;
}
*/
while(n){
for(i=; i<; i++){
card2[shuffle[i]-] = card1[i];
}
n--;
if(n==){
break;
}
for(i=; i<; i++){
card1[shuffle[i]-] = card2[i];
}
n--;
} for(i=; i<; i++) {
if(result[i]/==) {
printf("%c%d",'S',result[i]%+);
} else if(result[i]/==) {
printf("%c%d",'H',result[i]%+);
} else if(result[i]/==) {
printf("%c%d",'C',result[i]%+);
} else if(result[i]/==) {
printf("%c%d",'D',result[i]%+);
} else {
printf("%c%d",'J',result[i]%+);
}
if(i<) {
printf(" ");
}
}
}

分析:

此题用到的知识点有

1、数组:不定义字符数组,而是在输出时做判断,提高了程序效率

2、指针:最终输出的结果与洗牌次数有关,先定义一个指针,后期直接访问结果数组即可,避免了判断操作

3、三元运算符:节省代码量

4、循环语句:两个数组交替存储每次洗牌结果(注释中的程序是我一开始写的,有逻辑错误),不论最后洗多少次,都是1-2-1-2交替

最新文章

  1. jquery属性选择器
  2. 关于Beam Search
  3. localStorage和sessionStorage的区别
  4. C语言入门(13)——循环
  5. java对象复制
  6. OpenCV配置使用版
  7. 优化之zencart第一时间修改原始内容
  8. Flutter的scope_model使用mixin语法报错
  9. hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存
  10. 通过DOS命令批量重命名文件
  11. iOS变量定义在 .h 还是 .m 中
  12. 【转】【VS Code】配置文件Launch及快捷键
  13. 图片按钮(imageButton)
  14. JS-JavaScript类库整理 [更新中...]
  15. restful知识点之三restframework认证--&gt;权限--&gt;频率
  16. C++高级编程2. 静态动态链接库
  17. es6 import笔记
  18. elasticsearch批量索引数据示例
  19. xp_sp3_pro_简中_x86_cd_vl_x14-74070
  20. 怎样在WIN7系统下安装IIS和配置ASP

热门文章

  1. bzoj千题计划168:bzoj3513: [MUTC2013]idiots
  2. 算法笔记--极大极小搜索及alpha-beta剪枝
  3. webapi研究说明
  4. Thread的中断机制(interrupt)
  5. 弹性盒式布局flexbox(dispaly:flex)
  6. Introduce oneself
  7. 7.6 GRASP原则六: 多态 Polymorphism
  8. 关于vs code 快速生成vue 模板
  9. Vue.js 3.0 新特性预览
  10. 全面了解TCP/IP到HTTP