回 帖 发 新 帖 刷新版面

主题:我的数据结构程序设计

纸牌游戏
任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些? 
#include "stdio.h"

void main()
{/*采用数组存储,循环嵌套实现*/
  int i,j;
  int a[52];/*定义数组大小*/
  for(i=1;i<=52;i++)
  {
  a[ i]=i;/*给出五十二张牌*/
  }
  for(i=1;i<=52;i++)/*循环翻牌*/
  for(j=2;j<=52;j++)
{if(a[ i]%j==0)
  a[ i]=a[ i]*(-1);/*整除判断*/
}
  for(i=1;i<=52;i++)
  if (a[ i]>0) 
  printf("%d\n",a[ i]);/*输出牌号*/
}

这样写对不对啊   请教了??

回复列表 (共4个回复)

沙发

不对
因为数组a[52]下标范围是a[0]...a[51]

板凳

那这到题怎么改饿

3 楼


#include "CardGame.h"
using namespace std;
int main(){
 CardGame game;
 game.PlayGame();//执行翻牌
 game.Output();//输出结果
 return 0;
}
*/
#include<vector>
#include<iostream>
using namespace std;
struct cards{
 bool data[52];//定义数组代表牌面
};
class CardGame{
public:
 CardGame(){}//构造函数
 int  PlayGame();//执行翻牌
 int Output();//输出模块
private:
 cards data;
};
int CardGame::Output(){
 for(int i = 1 ; i <= 52 ; i++){
  if(data.data[i]){
   cout<<"正面["<<i<<"]\n";
  }
  else{
   cout<<"背面["<<i<<"]\n";
  }
 }
 cout<<endl;
 return 1;
}
int CardGame::PlayGame(){
 for(int i = 2 ; i <= 52; i++){
  int j = i;
  while(j <= 52){   
   data.data[j] = !data.data[j];
   j += i;
  }
 }
 data.data[1] = 1;
 return 1;
}
请问这个对么?

4 楼

好像不行 错误有一些

我来回复

您尚未登录,请登录后再回复。点此登录或注册