1、(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2。需求分析编号为152张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些?3.纸牌游戏的设计3.1概要设计建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌
2、的翻牌记录:data52,flag52定义一个全局变量作为正反面的判断条件:Flag= 1Y N3.2详细设计/建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。int i,j,data52,flag52,choice,num;char m,n;for(i=1;i=52;i+)datai-1=i;/录入52张牌的编号.flagi1=0;/将相应编号纸牌的翻牌数初始化为0。for(i=2;i+)/外循环,基数循环。for(j=1;j=52;j+)/内循环,基数倍数条件判断.if(ji=0)dataj1=dataj-1*Flag;/将翻转后的结果更新data中的数据。 f
3、lagj1+;/翻牌一次,即记入flag数组中.case 1:printf(”-题目-n”);printf(*n”);编号为152张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,);直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,”);直到最后一张牌;直到以52为基数的翻过,输出:n*”);n”);printf(”n”);printf(”是否回到主菜单?(Y/N):);/在每个独立功能后添加了独立的判断语句,从而可以选择性的回到主菜单。n=getchar();n=getchar();if(n=Y)break;else if(n=N)choice=0;/0作
4、为整个界面的循环结束条件,所以直接将choice=0,即可结束循环.else printf(*(提示:输入错误,默认为继续.)*n break;case 2:以下为翻牌记录:t-第1张牌翻过0次.-t”);printf(”nfor(i=1;i52;t-第d张牌翻过d次.-t,i+1,flagi);if(i%2=0)printf(”n”);n”);if(n=Y)break;else if(n=N)else printf(”*(提示:输入错误,默认为继续。)* n break;case 3:dot请输入您想查询的纸牌编码:scanf(d”,num);if(num0)/所有大于0的数即为正面向上的纸
5、牌。printf(” 第d张牌 ”,i+1);是否回到主菜单?”);Nelse printf(”*(提示:输入错误,默认为继续.)* *n”);break;case 0:break;default:printf(”t输入错误,请重新输入!while(choice!=0);/0作为整个循环的结束条件。*程序结束,谢谢使用*n 3.3调试分析:选择1,显示题目选择2,查看所有翻牌记录选择3,查看指定纸牌记录,如18选择4,显示最后结果4.程序清单:includestdio.h#includewindows。hdefine Flag 1/定义一个全局变量作为正反面的判断条件。void main()i
6、nt i,j,data52,flag52,choice,num;/建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录.char m,n;datai1=i;/录入52张牌的编号。for(i=2;=52;for(j=1;if(j%i=0)dataj-1=dataj-1*Flag;flagj1+;/翻牌一次,即记入flag数组中。dot-n”);t-nprintf(”t- 欢迎进入纸牌游戏 -n”);t- 1.查看题目 -nprintf(”t- 2.查看所有纸牌的翻牌次数 -nprintf(”t- 3。查看指定编号纸牌翻牌记录 -n”);t- 4.查看最终正面向上的纸牌编号
7、-n”);t- 0.按0键结束 -n”);t-nprintf(”t-nprintf(”请输入您的选择(数字04):”);/主界面d”,choice);switch(choice)/通过switch语句进行功能的选择case 1:printf(”-题目-nprintf(”*n编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,printf(”直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,”);printf(”*”);/在每个独立功能后添加了独立的判断语句,从而可以选择性的回到主菜单./0作为整个界面的循环结束条件,所以直接将choice=0,即可
8、结束循环。*(提示:输入错误,默认为继续.)*ncase 2:printf(”以下为翻牌记录:t-第1张牌翻过0次。-t”);52;t-第%d张牌翻过d次。-t,i+1,flagi);choice=0;*(提示:输入错误,默认为继续.)* *n”); break;printf(”t请输入您想查询的纸牌编码:scanf(”d,&num);1&num52)/纸牌的序号为1-52,所以其他数值都为输入错误。printf(”t输入错误!t纸牌翻转记录如下:t纸牌翻转次数为%dn,flagnum-1);for(j=2;t在以编号%d为基数时此纸牌有一次翻转。n”,j);需要继续查询纸牌编码吗?/独立的判断语句,作为do-while的结束条件,从而可循环的查询纸牌编码。if(m!Y&printf(”*(提示:)* *nwhile(m=Y);else printf(”*(提示:输入错误,默认为继续.) *nbreak;case 4:t最后所有正面向上的牌有:if(dataiprintf(” 第d张牌 ,i+1);Y)break;else printf(”*(提示:输入错误,默认为继续。)* *ncase 0:default:t输入错误,请重新输入!while(choice!*程序结束,谢谢使用*n”);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2