tr2838 发表于 2008-6-27 11:43

大家帮帮忙吧 关于游戏算法纸牌

要求:
有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)的元素。

帮帮我吧 十分感谢

tr2838 发表于 2008-6-27 12:31

谁能帮帮我

ja860825 发表于 2008-6-27 22:41

#include<iostream.h>
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]

编程论坛