扑克牌游戏

a541345750 2010-06-20 09:34:30
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?
谁能帮我用C弄出来呀,我对C只是粗浅的懂
...全文
117 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gz_qmc 2010-06-20
  • 打赏
  • 举报
回复
在8楼不是改了吗?
HONGSEDAIMA1 2010-06-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gz_qmc 的回复:]
这个要用递归?????????????

我看你挺不容易的,教你一招笨的办法吧

int x[52]={12,23,51,1,3,6,........};//这是52张牌的顺序?
bool s[52]={0,0,0,0,0,0,0,.........};//这是52张牌的状态.
for(k=2;k<=52;k++) //翻牌间隔
for(i=0;i<52;i+=k) //翻牌处理
……
[/Quote]

哥... bool是c99才引进的...现在有几个编译器支持c99啊...
gz_qmc 2010-06-20
  • 打赏
  • 举报
回复
int x[52]={12,23,51,1,3,6,........};//这是52张牌的顺序?
int s[52]={0,0,0,0,0,0,0,.........};//这是52张牌的状态.
for(k=2;k<=52;k++) //翻牌间隔
for(i=0;i<52;i+=k) //翻牌处理
{
if(s[i]==0) s[i]=1; //翻牌
else s[i]=0;
}

东莞某某某 2010-06-20
  • 打赏
  • 举报
回复
接4L
#include <stdio.h>


void main()
{
bool state[52]={true};
for(int i=2; i<53 ;i++)
for(int j=i; j<53 ;j+=i)
if( !(j%i) )
state[i-1]=!state[i-1];

for(i=0; i<52; i++)
if( state[i] )
printf("%d\t",i+1);
printf("\n");
}

KevinHo 2010-06-20
  • 打赏
  • 举报
回复
帮顶~~~~~~~~~
a541345750 2010-06-20
  • 打赏
  • 举报
回复
bool是什么类型呀,我不懂呀,只是自己看了C语言教材,其他都没有看过
gz_qmc 2010-06-20
  • 打赏
  • 举报
回复
这个要用递归?????????????

我看你挺不容易的,教你一招笨的办法吧

int x[52]={12,23,51,1,3,6,........};//这是52张牌的顺序?
bool s[52]={0,0,0,0,0,0,0,.........};//这是52张牌的状态.
for(k=2;k<=52;k++) //翻牌间隔
for(i=0;i<52;i+=k) //翻牌处理
s[i]=!s[i]; //翻牌

最后:s[i]=1的就是翻开的牌
a541345750 2010-06-20
  • 打赏
  • 举报
回复
我也知道用for循环呀,其中一个函数用递归会好点,可是有的牌会被重复翻好几次呀,我就是这个不会
gz_qmc 2010-06-20
  • 打赏
  • 举报
回复
既然是粗浅的懂,我就有办法了

找幅铺开扑克牌
按你说的方法摆好
然后就知道翻开的牌了

然后这样
void main()
{
printf("翻开的牌有:XXX XXX XXX");
}
其中,XXX为你看到的牌
zhangzhao123 2010-06-20
  • 打赏
  • 举报
回复
这个好像不难吧,肯定要用到for循环

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧