52张扑克翻牌问题

 

模拟翻牌过程即可,利用二维思想模拟即可

代码如下,详情请看注释

 1 #include<stdio.h>
 2 int fun(int *a)//定义一个翻牌过程函数(时刻记住c语言是面向过程的语言)
 3 {
 4     for(int i=2;i<52;i++)//从翻倍数为2的牌一直翻到倍数为51的牌,倍数52不用翻 
 5     for(int j=i;j<100;j++)//只要倍数对上一直翻即可 
 6     {
 7         if(j%i==0)//走一个固定倍数翻牌过程 
 8         {
 9             if(a[j]==0)//如果正面即翻过来 
10             a[j]=1;
11             else 
12             a[j]=0;//反之也翻 
13         }
14     }
15 }
16 int main(){
17     int a[100],count=0;//定义0为牌的正面 
18     for(int i=0;i<100;i++)
19     {
20         a[i]=0;//把所有牌组全部赋为正面 
21     }
22     fun (a);
23     for (int k=1;k<53;k++)//只走52张牌 
24     {
25         if(a[k]==0)
26         {
27             count++;//计数 
28             printf("第%d张牌为正面\n",k);
29         }
30     }
31     printf("共有%d张为正面",count);
32     
33     return 0;
34 }

 

posted @ 2022-09-20 09:03  码羊  阅读(102)  评论(0编辑  收藏  举报