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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程设计-- ——纸牌游戏

姓名:xxx 学号:xxxx

院系:计算机科学与技术学院专业:计科

年级:大三指导老师:xxxx

目录

1。课程设计的目的 (x)

2。需求分析...................................................x3.课程设计报告内容 (x)

3.1。概要设计 (x)

3.2。详细设计…………………………………x

3。3.调试分析 (x)

3。4.用户手册 (x)

3.5.测试结果 (x)

3.6.程序清单 (x)

4.小结 (x)

5.参考文献…………………………………x

1。课程设计的目的

(1)熟练使用 C 语言编写程序,解决实际问题;

(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

2.需求分析

编号为1—52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些?

3.纸牌游戏的设计

3.1概要设计

建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录:data [52],flag[52]

定义一个全局变量作为正反面的判断条件:Flag= -1

3.2详细设计

//建立两个数组,一个存放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("**************************************************************\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;

else if(n=='N')

choice=0;//0作为整个界面的循环结束条件,所以直接将choice=0,即可结束循环。else printf("**********(提示:输入错误,默认为继续。)***********\n"); }break;

case 2:{

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;

else if(n=='N’)

choice=0;

else printf(”**********(提示:输入错误,默认为继续。)*************\n”); }break;

case 3:{

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):”);

相关文档
最新文档