大数据结构课程设计纸牌游戏.docx
- 文档编号:6316756
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:14
- 大小:336.62KB
大数据结构课程设计纸牌游戏.docx
《大数据结构课程设计纸牌游戏.docx》由会员分享,可在线阅读,更多相关《大数据结构课程设计纸牌游戏.docx(14页珍藏版)》请在冰豆网上搜索。
大数据结构课程设计纸牌游戏
《数据结构》课程设计
————纸牌游戏
:
xxx学号:
xxxx
院系:
计算机科学与技术学院专业:
计科
年级:
大三指导教师:
xxxx
……………………………………x
……………………………………………x
…………………………………x
…………………………………x
…………………………………x
…………………………………x
…………………………………x
…………………………………x
…………………………………x
……………………………………………x
…………………………………x
(1)熟练使用C语言编写程序,解决实际问题;
(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等根本方法和技能;
(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
编号为1-52牌,正面向上,从第2开始,以2为基数,是2的倍数的牌翻一次,直到最后一牌;然后,从第3开始,以3为基数,是3的倍数的牌翻一次,直到最后一牌;直到以52为基数的翻过,输出:
这时输出正面向上的牌有哪些?
3.纸牌游戏的设计
建立两个数组,一个存放52牌的编号,另外一个存放相应编号的纸牌的翻牌记录:
data[52],flag[52]
定义一个全局变量作为正反面的判断条件:
Flag=-1
Y
Y
N
N
N
//建立两个数组,一个存放52牌的编号,另外一个存放相应编号的纸牌的翻牌记录。
inti,j,data[52],flag[52],choice,num;
charm,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数组中。
}
}
}
case1:
{
printf("---题目---\n");
printf("**************************************************************\n");
printf("编号为1-52牌,正面向上,从第2开始,以2为基数,是2的倍数的牌翻一次,");
printf("直到最后一牌;然后,从第3开始,以3为基数,是3的倍数的牌翻一次,");
printf("直到最后一牌;直到以52为基数的翻过,输出:
这时输出正面向上的牌有哪些?
\n");
printf("****************************************************************");
printf("\n");
printf("\n");
printf("是否回到主菜单?
(Y/N):
");//在每个独立功能后添加了独立的判断语句,从而可以选择性的回到主菜单。
n=getchar();
n=getchar();
if(n=='Y')break;
elseif(n=='N')
choice=0;//0作为整个界面的循环完毕条件,所以直接将choice=0,即可完毕循环。
elseprintf("**********(提示:
输入错误,默认为继续。
)***********\n");}break;
case2:
{
printf("以下为翻牌记录:
\n");
printf("\t----第1牌翻过0次。
----\t");
printf("\n");
printf("\n");
for(i=1;i<52;i++)
{
printf("\t----第%d牌翻过%d次。
----\t",i+1,flag[i]);
if(i%2==0)
printf("\n");
}
printf("\n");
printf("是否回到主菜单?
(Y/N):
");
n=getchar();
n=getchar();
if(n=='Y')break;
elseif(n=='N')
choice=0;
elseprintf("**********(提示:
输入错误,默认为继续。
)*************\n");}break;
case3:
{
do{
printf("\t请输入您想查询的纸牌编码:
");
scanf("%d",&num);
if(num<1&&num>52)//纸牌的序号为1-52,所以其他数值都为输入错误。
printf("\t输入错误!
\n");
else
{
printf("\t纸牌翻转记录如下:
\n");
printf("\t纸牌翻转次数为%d\n",flag[num-1]);
for(j=2;j<=52;j++)//循环,基数倍数条件判断。
{
if(num%j==0)
{
printf("\t在以编号%d为基数时此纸牌有一次翻转。
\n",j);}
}
}
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;
elseif(n=='N')
choice=0;
elseprintf("**************(提示:
输入错误,默认为继续。
)**********\n");
}break;
case4:
{
printf("\t最后所有正面向上的牌有:
\n");
for(i=0;i<52;i++)
{
if(data[i]>0)//所有大于0的数即为正面向上的纸牌。
printf("第%d牌",i+1);
}
printf("\n");
printf("是否回到主菜单?
(Y/N):
");
n=getchar();
n=getchar();
if(n=='Y')break;
elseif(n=='N')
choice=0;
elseprintf("***************(提示:
输入错误,默认为继续。
)**********\n");
}break;
case0:
break;
default:
printf("\t输入错误,请重新输入!
\n");
}
}while(choice!
=0);//0作为整个循环的完毕条件。
printf("*******************程序完毕,使用********************\n");}
:
选择1,显示题目
选择2,查看所有翻牌记录
选择3,查看指定纸牌记录,如18
选择4,显示最后结果
4.程序清单:
#include
#include
#defineFlag-1//定义一个全局变量作为正反面的判断条件。
voidmain()
{
inti,j,data[52],flag[52],choice,num;//建立两个数组,一个存放52牌的编号,另外一个存放相应编号的纸牌的翻牌记录。
charm,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数组中。
}
}
}
do{
printf("\t-----------------------------------------------------------\n");
printf("\t-----------------------------------------------------------\n");
printf("\t---------欢迎进入纸牌游戏-----------\n");
printf("\t---------1.查看题目-----------\n");
printf("\t---------2.查看所有纸牌的翻牌次数-----------\n");
printf("\t---------3.查看指定编号纸牌翻牌记录-----------\n");
printf("\t---------4.查看最终正面向上的纸牌编号-----------\n");
printf("\t---------0.按0键完毕-----------\n");
printf("\t-----------------------------------------------------------\n");
printf("\t-----------------------------------------------------------\n");
printf("请输入您的选择〔数字0-4〕:
");//主界面
scanf("%d",&choice);
switch(choice)//通过switch语句进展功能的选择
{
case1:
{
printf("---题目---\n");
printf("**************************************************************\n");
printf("编号为1-52牌,正面向上,从第2开始,以2为基数,是2的倍数的牌翻一次,");
printf("直到最后一牌;然后,从第3开始,以3为基数,是3的倍数的牌翻一次,");
printf("直到最后一牌;直到以52为基数的翻过,输出:
这时输出正面向上的牌有哪些?
\n");
printf("****************************************************************");
printf("\n");
printf("\n");
printf("是否回到主菜单?
(Y/N):
");//在每个独立功能后添加了独立的判断语句,从而可以选择性的回到主菜单。
n=getchar();
n=getchar();
if(n=='Y')break;
elseif(n=='N')
choice=0;//0作为整个界面的循环完毕条件,所以直接将choice=0,即可完毕循环。
elseprintf("**********(提示:
输入错误,默认为继续。
)***********\n");}break;
case2:
{
printf("以下为翻牌记录:
\n");
printf("\t----第1牌翻过0次。
----\t");
printf("\n");
printf("\n");
for(i=1;i<52;i++)
{
printf("\t----第%d牌翻过%d次。
----\t",i+1,flag[i]);
if(i%2==0)
printf("\n");
}
printf("\n");
printf("是否回到主菜单?
(Y/N):
");
n=getchar();
n=getchar();
if(n=='Y')break;
elseif(n=='N')
choice=0;
elseprintf("**********(提示:
输入错误,默认为继续。
)*************\n");}break;
case3:
{
do{
printf("\t请输入您想查询的纸牌编码:
");
scanf("%d",&num);
if(num<1&&num>52)//纸牌的序号为1-52,所以其他数值都为输入错误。
printf("\t输入错误!
\n");
else
{
printf("\t纸牌翻转记录如下:
\n");
printf("\t纸牌翻转次数为%d\n",flag[num-1]);
for(j=2;j<=52;j++)//循环,基数倍数条件判断。
{
if(num%j==0)
{
printf("\t在以编号%d为基数时此纸牌有一次翻转。
\n",j);}
}
}
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;
elseif(n=='N')
choice=0;
elseprintf("**************(提示:
输入错误,默认为继续。
)**********\n");
}break;
case4:
{
printf("\t最后所有正面向上的牌有:
\n");
for(i=0;i<52;i++)
{
if(data[i]>0)//所有大于0的数即为正面向上的纸牌。
printf("第%d牌",i+1);
}
printf("\n");
printf("是否回到主菜单?
(Y/N):
");
n=getchar();
n=getchar();
if(n=='Y')break;
elseif(n=='N')
choice=0;
elseprintf("***************(提示:
输入错误,默认为继续。
)**********\n");
}break;
case0:
break;
default:
printf("\t输入错误,请重新输入!
\n");
}
}while(choice!
=0);//0作为整个循环的完毕条件。
printf("*******************程序完毕,使用********************\n");}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 纸牌 游戏