当前位置:首页 > 数据结构课程设计-纸牌游戏
.
//建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。
int i,j,data[52],flag[52],choice,num; char m,n;
for(i=1;i<=52;i++) {
data[i-1]=i;//录入52张牌的编号。
flag[i-1]=0;//将相应编号纸牌的翻牌数初始化为0。 }
for(i=2;i<=52;i++)//外循环,基数循环。 {
for(j=1;j<=52;j++)//内循环,基数倍数条件判断。 {
if(j%i==0) {
data[j-1]=data[j-1]*Flag;//将翻转后的结果更新data中的数据。 flag[j-1]++;//翻牌一次,即记入flag数组中。 } } }
case 1:{
printf(\题目---\\n\
printf(\printf(\编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,\
printf(\直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,\printf(\直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些?\\n\
printf(\printf(\printf(\
printf(\是否回到主菜单?(Y/N):\在每个独立功能后添加了独立的判断语句,从而可以选择性的回到主菜单。 n=getchar(); n=getchar(); if(n=='Y')break; else if(n=='N')
choice=0;//0作为整个界面的循环结束条件,所以直接将choice=0,即可结束循环。 else printf(\提示:输入错误,默认为继续。)***********\\n\case 2:{
printf(\以下为翻牌记录:\\n\
printf(\第1张牌翻过0次。----\\t\printf(\printf(\
'.
.
for(i=1;i<52;i++) {
printf(\第%d张牌翻过%d次。----\\t\if(i%2==0) printf(\}
printf(\
printf(\是否回到主菜单?(Y/N):\n=getchar(); n=getchar(); if(n=='Y')break; else if(n=='N') choice=0;
else printf(\提示:输入错误,默认为继续。)*********** **\\n\}break; case 3:{ do{
printf(\请输入您想查询的纸牌编码:\scanf(\
if(num<1&&num>52)//纸牌的序号为1-52,所以其他数值都为输入错误。 printf(\输入错误!\\n\else {
printf(\纸牌翻转记录如下:\\n\
printf(\纸牌翻转次数为%d\\n\for(j=2;j<=52;j++)//内循环,基数倍数条件判断。 {
if(num%j==0) {
printf(\在以编号%d为基数时此纸牌有一次翻转。\\n\} }
printf(\需要继续查询纸牌编码吗?(Y/N):\独立的判断语句,作为do-while的结束条件,从而可循环的查询纸牌编码。 m=getchar(); m=getchar();
if(m!='Y'&&m!='N')
printf(\提示:输入错误,默认为跳过。)******** **\\n\}while(m=='Y');
printf(\是否回到主菜单?(Y/N):\n=getchar(); n=getchar(); if(n=='Y')break; else if(n=='N') choice=0;
'.
.
else printf(\提示:输入错误,默认为继续。)***** *****\\n\}break; case 4:{
printf(\最后所有正面向上的牌有:\\n\for(i=0;i<52;i++) {
if(data[i]>0)//所有大于0的数即为正面向上的纸牌。 printf(\第%d张牌 \}
printf(\
printf(\是否回到主菜单?(Y/N):\n=getchar(); n=getchar(); if(n=='Y')break; else if(n=='N') choice=0;
else printf(\提示:输入错误,默认为继续。)**** ******\\n\}break;
case 0:break;
default:printf(\输入错误,请重新输入!\\n\}
}while(choice!=0);//0作为整个循环的结束条件。
printf(\程序结束,谢谢使用********************\\n\
3.3调试分析:
选择1,显示题目
选择2,查看所有翻牌记录
'.
.
'.
共分享92篇相关文档