p123,32

来源:互联网 发布:linux的dd命令详解 编辑:程序博客网 时间:2024/06/05 09:08
#include<stdio.h>#define N 100void order(int man[],int n,int m);int find(int a[],int n,int key);main(){int i,k,m,n,flag=1,man[N]={0};    while(flag=1){printf("\n输入总人数n和报数间隔m:");        scanf("%d%d",&n,&m);        order(man,n,m);        printf("人的顺序为:\n");        for(i=0;i<n;i++)        printf("%4d%c",i+1,((i+1)%15)==0?'\n':' ');        printf("\n每个人相应的第几个出队:\n");        for(i=0;i<n;i++)        printf("%4d%c",man[i],((i+1)%15)==0?'\n':' ');        printf("\n输入你想知道最后出队的人数:");        scanf("%d",&k);        for(i=0;i<k;i++)        printf("\n倒数第%d个出队的人为%d号\n",1+i,1+find(man,n,(n-i)));        printf("\n是否重新来过(是请按1,否请按0):");        scanf("%d",&flag);    }}void order(int man[],int n,int m){int i,k,pos;                for(i=0;i<n+1;i++)    man[i]=0;    i=k=0;    for(pos=0;k<n;pos=(pos+1)%n){ if(man[pos]==0)    i++;    if(i==m){    i=0;        k++;                               man[pos]=k;                       }    } }int find(int a[],int n,int key){int i;    for(i=0;i<n;i++)    if(key==a[i])    return i;}

0 0