模拟翻牌过程即可,利用二维思想模拟即可
代码如下,详情请看注释
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 }
标签:int,52,扑克,过程,模拟,翻牌 From: https://www.cnblogs.com/mayang150/p/puke.html