#include typedef struct Node { int m;//密码 int n;//序号 struct Node *next; }Node,*Linklist; Linklist create(int z) //生成循环单链表并返回,z为总人数 { int i,mm; Linklist H,r,s; H=NULL; printf(\"请按顺序依次为每个人添加密码:\"); for(i=1;i<=z;i++) { printf(\"\\ninput cipher=\"); scanf(\"%d\ s=(Linklist)malloc(sizeof(Node)); s->n=i; s->m=mm; printf(\"%d号的密码%d\ if(H==NULL)//从链表的第一个节点插入 { H=s; r=H; } else//链表的其余节点插入 { r->next=s; r=s;//r后移 } }//for结束 r->next=H;/*生成循环单链表*/ return H; } void search(Linklist H,int m0,int z)//用循环链表实现报数问题 { int count=1;//count为累计报数人数计数器 int num=0;//num为标记出列人数计数器 Linklist pre,p; p=H; printf(\"出列的顺序为:\"); while(num void clean(){ int system(const char *string); int inquiry; printf(\"请问需要清除上一次操作记录吗(1.清屏/2.不清屏)...?\\n\"); scanf(\"%d\ if(inquiry ==1) system(\"cls\"); } void text(){ int m0,z,i, choose,k=1; //k用来阻止第一次进入程序清屏操作 Linklist H; bool chooseFlag=false; while(1){ if(k!=1) clean(); k++; while(!chooseFlag){ printf(\" ……………………欢迎进入约瑟夫环问题系统…………………… \\n\"); printf( \"* 1.输入约瑟夫环数据 * \\n\"); printf(\" * 2.什么是约瑟夫环 * \\n\"); printf(\" * 3.退出系统 * \\n\"); printf(\"........................................................ \\n\"); printf(\"请输入相应的数字进行选择: \"); scanf(\"%d\ for(i=1;i<=4;i++){ if(choose==i){ chooseFlag=true; break; }else chooseFlag=false; } if(!chooseFlag) printf(\"Error Input!\\n\"); } //end while(!chooseFlag) if(choose==1) //if 开始 { printf(\"Input how many people in it:\");//z为总人数 scanf(\"%d\ if(z<=30){ H=create(z);//函数调用 printf(\"\\nInput the start code m0=\"); scanf(\"%d\ search(H,m0,z); printf(\"\\n\\n\\n\"); }else{ printf(\"超过最大输入人数\\n\"); break; } } else if(choose==2){ printf(\"\\n约瑟夫环问题:设有n个人,其编号分别为1,2,3,…,n,安装编号顺序顺时针围坐一圈。选定一个正整数m,从第一个人开始顺时针报数,报到m时,则此人出列,然后从他的下一个人从1重新报数,依此类推,直到所有人全部出列为止,求出列的顺序。\\n\\n\"); } else if(choose==3){ printf(\"程序结束\\n\"); break; }else{ printf(\"错误!\\n\"); }//end if chooseFlag=0; }//end while(1) } void main(){ time_t timer ;/*时间*/ struct tm *ptrtime;/*指向struct tm的指针*/ timer = time( NULL ) ;/*调用time()函数获取当前时间*/ ptrtime = localtime( &timer ) ;/*调用localtime()函数将获得的系统时间转化为指向struct tm的指针指向的结构体*/ printf(\" 系统时间: %s\用asctime()将结构体转化为字符串输出*/ text(); } 因篇幅问题不能全部显示,请点此查看更多更全内容