c语言作业 出圈游戏.docx
《c语言作业 出圈游戏.docx》由会员分享,可在线阅读,更多相关《c语言作业 出圈游戏.docx(9页珍藏版)》请在冰豆网上搜索。
![c语言作业 出圈游戏.docx](https://file1.bdocx.com/fileroot1/2023-1/30/c3098d2f-5231-40ed-aa3a-37fb9391e295/c3098d2f-5231-40ed-aa3a-37fb9391e2951.gif)
c语言作业出圈游戏
#include//头函数
#include
#include
#defineSIZE100
structSeqList{
intnum;
charname[10];
};
intmenu_select();//函数声明部分
voidJoseph1();
voidJoseph2();
voidJoseph3();
voidJoseph4();
voidJoseph(structSeqList*p,intlength);
voidmain()//主要程序段
{
printf("╭───────────────────────╮\n");
printf("║出圈游戏!
!
║\n");
printf("╰───────────────────────╯\n");
for(;;){
switch(menu_select()){//菜单的选择
case1:
printf("假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。
\n一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向从1开始顺序报数,报到m时停止报数。
\n报数m的人出列,然后从他原来所在的顺时针方向的下一个人开始重新从1报数,报到m时停止报数,并出列。
\n如此下去,直至所有人全部出列为止。
\n要求按他们出列的顺序输出他们原来的代号。
\n");
break;
case2:
Joseph1();
break;
case3:
Joseph2();
break;
case4:
Joseph3();
break;
case5:
Joseph4();
break;
case6:
printf("╭───────╮\n");//小组的成员名单
printf("║小组成员列表:
║\n");
printf("║方勇徐灵琳║\n");
printf("║赵雄彬应邦诺║\n");
printf("║叶兰鸿彭黎明║\n");
printf("╰───────╯\n");
printf("谢谢使用!
O(∩_∩)O~~\n");
exit(0);//退出该程序
}
system("pause");
system("cls");
}
}
intmenu_select()//菜单函数
{
intcn;
printf("出圈游戏菜单目录:
\n");//菜单列表
printf("╭───────────╮\n");
printf("║1.出圈游戏题目║\n");
printf("║2.第一种方法║\n");
printf("║3.第二种方法║\n");
printf("║4.第三种方法║\n");
printf("║5.第四种方法║\n");
printf("║6.退出║\n");
printf("╰───────────╯\n");
printf("输入1-6之间的数字\n");
while
(1)//无限次循环
{
scanf("%d",&cn);
if(cn>0||cn<7)//要求输入数字为1-9之间
{
returncn;
break;//输入正确跳出循环
}
else
{printf("输入错误!
!
请重新输入!
");
continue;}//输入错误,退出本次循环,重新输入
}
}
voidJoseph1()
{
intnum[SIZE];
inti=0,m=0,j=0,k=0,n;
printf("请输入参加游戏的人数:
");
scanf("%d",&n);
for(i=0;i{
num[i]=i+1;
}
printf("请输入间隔数:
");
scanf("%d",&m);
printf("出圈的顺序如下:
\n");
i=-1;
for(k=1;k<=n;k++)
{
j=0;
while(j{
i++;
if(i==n)
i=0;
if(num[i]!
=0)
j++;
}
printf("%d",num[i]);
printf("");
num[i]=0;
}
printf("\n");
}
voidJoseph2()
{
charnum[SIZE][SIZE];
inti=0,n,m=0,j=0,k=0;
intlength=0;
chars[SIZE];
printf("请输入参加游戏的人数:
\n");
scanf("%d",&n);
printf("请输入间隔数:
\n");
scanf("%d",&m);
printf("请输入游戏者名字:
\n");
getchar();
for(i=0;i{
printf("第%d个人的名字:
",i+1);
gets(s);
strcpy(num[i],s);
}
printf("出圈的顺序如下:
\n");
i=-1;
for(k=1;k<=n;k++)
{
j=0;
while(j{
i++;
if(i==n)
i=0;
if(num[i][0]!
='0')
j++;
}
printf("%s",num[i]);
printf("");
num[i][0]='0';
}
printf("\n");
}
voidJoseph3()
{
inti=0,m=0,j=0,k=0;
int*p;
intlength=0;
printf("请输入准备参加游戏的人数:
");
scanf("%d",&length);
p=(int*)malloc(length*sizeof(int));
if(p==NULL)
{
printf("内存分配错误");
exit
(1);
}
for(i=0;i{
*(p+i)=i+1;
}
printf("请输入间隔数:
");
scanf("%d",&m);
printf("出圈的顺序如下:
\n");
i=-1;
for(k=1;k<=length;k++)
{
j=0;
while(j{
i++;
if(i==length)
i=0;
if(*(p+i)!
=0)
j++;
}
if(k==length)
break;
printf("%d",*(p+i));
printf(",");
*(p+i)=0;
}
printf("%d",*(p+i));
printf("\n");
free(p);
}
voidJoseph4()
{
structSeqList*p;
intlength=0;
printf("请输入准备参加游戏的人数:
");
scanf("%d",&length);
p=(structSeqList*)malloc(length*sizeof(structSeqList));
if(p==NULL)
{
printf("内存分配错误");
exit
(1);
}
Joseph(p,length);
}
voidJoseph(structSeqList*p,intlength)
{
intm;
intj,k;
chars[10];
inti;
printf("请输入间隔数m(m<=20):
");
scanf("%d",&m);
while(m>20)
{
printf("太大,请重新指定间隔数m(m<=20)");
scanf("%d",&m);
}
printf("请输入游戏者名字:
\n");
getchar();
for(i=0;i{
printf("第%d个人的名字:
",i+1);
gets(s);
strcpy((p+i)->name,s);
(p+i)->num=i+1;
}
printf("出圈的顺序如下:
");
i=-1;
for(k=1;k<=length;k++)
{
j=0;
while(j{
i++;
if(i==length)
i=0;
if((p+i)->num!
=0)
j++;
}
if(k==length)
break;
printf("%s",(p+i)->name);
printf(",");
(p+i)->num=0;
}
printf("%s",(p+i)->name);
printf("\n");
free(p);
}
海藻肥TWfZZvj8Y33n