| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2517 人关注过本帖, 1 人收藏
标题:我初学C语言,弄了一个简单的人员出列程序。请高人指点。如有人帖上链表解法 ...
只看楼主 加入收藏
linpinjin
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-12-30
收藏(1)
 问题点数:0 回复次数:13 
我初学C语言,弄了一个简单的人员出列程序。请高人指点。如有人帖上链表解法,在下感激不尽。
/*出列问题的解法*/

#include<stdio.h>
struct men
 {int nextp;
  int no;
 }link[1000];

void main(void)
  { int i,k=0,m,n,y,count=0;   /**n存储总人数,m存储从第几个人报数,y存储报到此数时该人出列值********/
                               /**count统计已经出列的总人数,初始为0*********************************/
    printf("请输入总人数?");
    scanf("%d",&n);
    printf("从第几个人开始报数?");
    scanf("%d",&m);
    printf("当报数多少时此人出列?");
    scanf("%d",&y);

    for(i=0;i<n;i++)           /*为结构赋初值,成员nextp用来判断是否已经出列,这里全部初始成1,即全部在列*/
     {link[i].nextp=1;link[i].no=i+1;}      /*成员no为人员的编号****************************************/

   while(count!=n)               /*当已出列人数count等于总人数n时,即所有人都已出列,结束循环**********/
    {if(link[m-1].nextp)k++;
 /*由于数组下标是从0开始,这里第m个人所在数组的下标为m-1,k记录报数值,当所对应的nextp为1时,表示该人*/
 /*在列,参予报数;为0时,表示该人已出列,跳过。**********/
     if(k==y)                   /*当k等于y时,满足出列条件*******************************************/
      {printf("%-4d",link[m-1].no);        /*输出该人的编号,即该人对应的结构成员no的值*/
       k=0;link[m-1].nextp=0;         /*计数变量K归零,重新从1开始计数,并把已出列人对应的nextp置为0,不*/
       if((++count)%20==0)printf("\n");} /*再参予报数,count累加出列人数,出列人数达到20人时,换行重新输出*/

      m++;if(m>n)m=1; /*m++驱使下一个人接着报数,当其数值超过报数总人数时,令其为1,又由第1个人接着报数*/
     }
  }
搜索更多相关主题的帖子: 表解 C语言 出列 上链 
2008-02-13 19:50
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
为什么要链表解法(它远远超出初学范围).
2008-02-13 20:04
linpinjin
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-12-30
收藏
得分:0 
因为我手上这本C教程看完了都没有提到链表。网上找了一些资料也看不明白。想知道是怎么回事。
2008-02-13 20:19
有敌手
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-2-12
收藏
得分:0 
那个。。。
我不明白链表咋回事,不过这个一看就是个结构体啊
2008-02-13 20:35
有敌手
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-2-12
收藏
得分:0 
http://hi.baidu.com/gx9900/blog/item/dbc80df4de0a4aeb7709d772.html
自己给自己写的简单分析,不清楚LZ是否看得懂
2008-02-13 20:59
linpinjin
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-12-30
收藏
得分:0 
感谢你们的回帖。
2008-02-13 21:24
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<stdio.h>
#include<conio.h>
#include<alloc.h>

struct men
{ int no;
  struct men *next;
};

void main(void)
  { int i,m,n,y,count=1;
    struct men  *h,*pf,*pl,*p;
    printf("please input the number of population:");
    scanf("%d",&n);
    fflush(stdin);
    printf("which number is the first:");
    scanf("%d",&m);
    fflush(stdin);
    printf("the number of out line:");
    scanf("%d",&y);
    fflush(stdin);
    for(i=1;i<=n;i++)
    {     if(i==1)
          {
            h=(struct men *)malloc(sizeof(struct men)) ;
            pf=h;
            h->no=1;
            printf("%d",pf->no) ;
           }
         else
         {
         pl=(struct men*)malloc(sizeof(struct men));
         pl->no=i;
         printf("%d",pl->no) ;
         pl->next=h;
         pf->next=pl;
         pf=pl;

         }
    }

       if(m==1)
       {
          pl=h->next;
          p=h;

       }
       else
       {
       while(h->no!=m-1)
       {
        h=h->next;

       }
       pf=h;
       h=h->next;
       p=h;
       pl=h->next;
       }
     do
     {
       if((count++)%y==0)
       {
         pf->next=pl;
         printf("%d",p->no);
         p=pl;
         pl=pl->next;
       }
       else
       {
       pf=pf->next;
       p=p->next;
       pl=pl->next ;
       }
     }
     while(p->next!=p);
     printf("%d",p->no);

      getch();
}
2008-02-14 10:36
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你自己看看。可能还可以优化一下。。。
2008-02-14 10:37
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
LS好兄弟,支持你.
2008-02-14 14:02
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
谢谢兄弟..呵呵...
2008-02-14 14:18
快速回复:我初学C语言,弄了一个简单的人员出列程序。请高人指点。如有人帖上链 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016377 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved