




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计 纸牌游戏姓名:xxx 学号:xxxx院系:计算机科学与技术学院 专业:计科 年级:大三 指导老师:xxxx 目 录 1.课程设计的目的x2.需求分析x3.课程设计报告内容x 3.1.概要设计x 3.2.详细设计x 3.3.调试分析x 3.4.用户手册x 3.5.测试结果x 3.6.程序清单x 4.小结x 5.参考文献x1.课程设计的目的(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2.需求分析编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些?3. 纸牌游戏的设计3.1概要设计建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录:data52,flag52定义一个全局变量作为正反面的判断条件:Flag= -1Case3:输出记录Case2:所有牌翻牌记录Case1:输出题目查看翻牌的最后结果查看指定纸牌翻牌记录查看所有牌的翻牌记录查看题目欢迎来到纸牌游戏Case4:显示最后结果 开始一维数组data52,flag52;并将flag初始化为0表示正面朝上YYY N N Nj=52输出正面朝上的卡牌翻牌。如果flagj-1为0则变为1,否则变为0 j+ i+ 结束j%i=0 j=ii=52 i=23.2详细设计/建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。int i,j,data52,flag52,choice,num;char m,n;for(i=1;i=52;i+)datai-1=i;/录入52张牌的编号。flagi-1=0;/将相应编号纸牌的翻牌数初始化为0。for(i=2;i=52;i+)/外循环,基数循环。for(j=1;j=52;j+)/内循环,基数倍数条件判断。if(j%i=0)dataj-1=dataj-1*Flag;/将翻转后的结果更新data中的数据。 flagj-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;i52;i+)printf(t-第%d张牌翻过%d次。-t,i+1,flagi);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:doprintf(t请输入您想查询的纸牌编码:);scanf(%d,&num);if(num52)/纸牌的序号为1-52,所以其他数值都为输入错误。printf(t输入错误!n);elseprintf(t纸牌翻转记录如下:n);printf(t纸牌翻转次数为%dn,flagnum-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;else if(n=N)choice=0;else printf(*(提示:输入错误,默认为继续。)* *n);break;case 4:printf(t最后所有正面向上的牌有:n);for(i=0;i0)/所有大于0的数即为正面向上的纸牌。printf( 第%d张牌 ,i+1);printf(n);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(t输入错误,请重新输入!n);while(choice!=0);/0作为整个循环的结束条件。printf(*程序结束,谢谢使用*n); 3.3调试分析:选择1,显示题目选择2,查看所有翻牌记录选择3,查看指定纸牌记录,如18选择4,显示最后结果4. 程序清单:#include#include#define Flag -1/定义一个全局变量作为正反面的判断条件。void main()int i,j,data52,flag52,choice,num;/建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。char m,n;for(i=1;i=52;i+)datai-1=i;/录入52张牌的编号。flagi-1=0;/将相应编号纸牌的翻牌数初始化为0。for(i=2;i=52;i+)/外循环,基数循环。for(j=1;j=52;j+)/内循环,基数倍数条件判断。if(j%i=0)dataj-1=dataj-1*Flag;/将翻转后的结果更新data中的数据。 flagj-1+;/翻牌一次,即记入flag数组中。doprintf(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语句进行功能的选择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;i52;i+)printf(t-第%d张牌翻过%d次。-t,i+1,flagi);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:doprintf(t请输入您想查询的纸牌编码:);scanf(%d,&num);if(num52)/纸牌的序号为1-52,所以其他数值都为输入错误。printf(t输入错误!n);elseprintf(t纸牌翻转记录如下:n);printf(t纸牌翻转次数为%dn,flagnum-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;else if(n=N)choice=0;else printf(*(提示:输入错误,默认为继续。)* *n);break;case 4:printf(t最后所有正面向上的牌有:n);for(i=0;i0)/所有大于0的数即为正面向上的纸牌。printf( 第%d张牌 ,i+1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医生初级面试必-备知识点与预测题详解
- 2025年村级环保人才招聘笔试模拟题及答案详解
- 公务员上岸面试题及答案
- 公务员面试题及答案合集
- 公务员遴选及答案面试题
- 2025年公墓设计师招聘笔试宝典全真模拟试题及答案
- 2025年医学影像诊断技术专业考试模拟试题及答案
- 校长科研知识培训课件
- 2025年海关聘用制工作人员招聘考试模拟试题及答案
- 2025年高职院校工会干事招聘面试指南及模拟题解析
- 2025中国人寿养老笔试题库
- 《浙江省中药饮片炮制规范》 2015年版
- 中国车路云一体化发展研究报告(2024)-赛文研究院
- 2025小学音乐新课程标准
- 扶壁式挡土墙专项施工方案
- 人工智能机器学习Deep Learning by Ian Goodfellow,Yoshua Bengio,Aaron Courville (z-lib.org)
- 销售客户跟进培训
- 2025年河南航空港发展投资集团有限公司社会招聘45人笔试参考题库附带答案详解
- 100以内加法减法口算1000题家庭作业打印
- 市政工程施工进度计划表范文
- 商铺撤场申请书
评论
0/150
提交评论