大家帮帮忙吧 关于游戏算法纸牌
要求:有52张牌,编号分别为1-52,正面向上,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第5张开始,以5为基数,是5的倍数的牌翻一次, 直到最后一张牌;...再依次7的倍数的牌翻一次,9的,11的 直到 以51为基数的 翻过,输出:这时正面向上的牌有哪些?
程序编写说明:
1、 定义一个长度为52的数组表示52张牌;
2、 初始状态时给所有元素赋初值1(表示正面向上);
3、 如果某张牌被翻一次,则对应的数组元素被赋值为0(表示正面向下);以后每次被翻时,如果原来的值为1则值变为0,如果原来值为0则值变为1;
4、 最后打印所有正面向上(即值为1)的元素。
帮帮我吧 十分感谢
void fun(int []);
void fun1(int []);
void main()
{
int a[53]={0};
fun1(a);
fun(a);
for(int i=0;i<53;i++)
if(a[i]==1)
cout<<"a["<<i<<"]"<<endl;
}
void fun1(int y[])
{
for(int i=0;i<53;i++)
if(y[i]==0)
y[i]=1;
}
void fun(int x[])
{
for(int i=3;i<53;i+=2)
{
for(int j=i,k=1;j<53;k++,j=i*k)
if(x[j]==1)
{
x[j]=0;
}
else
{
x[j]=1;
}
}
}
页:
[1]
