C。习题八。三。4(报数)

来源:互联网 发布:余文乐潮牌淘宝店 编辑:程序博客网 时间:2024/05/17 01:01
#include<stdio.h>#include<stdlib.h>int main(){    int *p,i,count,k,m,zero;    int n;    printf("Enter n m:");    scanf("%d %d",&n,&m);    if((p=(int *)calloc(n+1,sizeof(int)))==NULL){        printf("Error");        exit (1);    }    for(i=1;i<=n;i++)        p[i]=i;    for(i=1;i<n;i++){           //主循环n-1次        k=0;                    //记录下标        count=0;                //记录是否数到第m个数        zero=0;                 //记录数组中置0的数        while(count<m){                    if(p[k+1]!=0)                count++;            if(p[k+1]==0)                zero++;            k++;                             if(k==n&&n-zero<m)   //m遍循环count还没累加到m                k=0;             //让它继续循环遍历        }        printf("%3d",p[k]);     //找到就把它置0(淘汰掉)        p[k]=0;    }    free(p);    return 0; } 
原创粉丝点击