当前位置:首页 > 数据结构课程设计-纸牌游戏
.
选择3,查看指定纸牌记录,如18
选择4,显示最后结果
'.
.
4.程序清单:
#include
#define Flag -1//定义一个全局变量作为正反面的判断条件。 void main() { int i,j,data[52],flag[52],choice,num;//建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。 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数组中。 } } } do{
'.
.
printf(\printf(\printf(\欢迎进入纸牌游戏 -----------\\n\printf(\查看题目 -----------\\n\
printf(\查看所有纸牌的翻牌次数 -----------\\n\printf(\查看指定编号纸牌翻牌记录 -----------\\n\printf(\查看最终正面向上的纸牌编号 -----------\\n\printf(\按0键结束 -----------\\n\
printf(\printf(\printf(\请输入您的选择(数字0-4):\主界面 scanf(\
switch(choice)//通过switch语句进行功能的选择 {
case 1:{
printf(\题目---\\n\
printf(\printf(\编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,\
printf(\直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,\printf(\直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些?\\n\
printf(\printf(\printf(\
printf(\是否回到主菜单?(Y/N):\在每个独立功能后添加了独立的判断语句,从而可以选择性的回到主菜单。 n=getchar(); n=getchar(); if(n=='Y')break; else if(n=='N')
choice=0;//0作为整个界面的循环结束条件,所以直接将choice=0,即可结束循环。 else printf(\提示:输入错误,默认为继续。)***********\\n\case 2:{
printf(\以下为翻牌记录:\\n\
printf(\第1张牌翻过0次。----\\t\printf(\printf(\for(i=1;i<52;i++) {
printf(\第%d张牌翻过%d次。----\\t\if(i%2==0) printf(\}
'.
.
printf(\
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(\请输入您想查询的纸牌编码:\scanf(\
if(num<1&&num>52)//纸牌的序号为1-52,所以其他数值都为输入错误。 printf(\输入错误!\\n\else {
printf(\纸牌翻转记录如下:\\n\
printf(\纸牌翻转次数为%d\\n\for(j=2;j<=52;j++)//内循环,基数倍数条件判断。 {
if(num%j==0) {
printf(\在以编号%d为基数时此纸牌有一次翻转。\\n\} }
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(\最后所有正面向上的牌有:\\n\for(i=0;i<52;i++) {
'.
.
if(data[i]>0)//所有大于0的数即为正面向上的纸牌。 printf(\第%d张牌 \}
printf(\
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(\输入错误,请重新输入!\\n\}
}while(choice!=0);//0作为整个循环的结束条件。
printf(\程序结束,谢谢使用********************\\n\
'.
共分享92篇相关文档