大数据结构课程设计纸牌游戏.docx

上传人:b****6 文档编号:6316756 上传时间:2023-01-05 格式:DOCX 页数:14 大小:336.62KB
下载 相关 举报
大数据结构课程设计纸牌游戏.docx_第1页
第1页 / 共14页
大数据结构课程设计纸牌游戏.docx_第2页
第2页 / 共14页
大数据结构课程设计纸牌游戏.docx_第3页
第3页 / 共14页
大数据结构课程设计纸牌游戏.docx_第4页
第4页 / 共14页
大数据结构课程设计纸牌游戏.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

大数据结构课程设计纸牌游戏.docx

《大数据结构课程设计纸牌游戏.docx》由会员分享,可在线阅读,更多相关《大数据结构课程设计纸牌游戏.docx(14页珍藏版)》请在冰豆网上搜索。

大数据结构课程设计纸牌游戏.docx

大数据结构课程设计纸牌游戏

 

《数据结构》课程设计

————纸牌游戏

 

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");}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1