首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 一个循环报数的问题 [无满意答案结贴,结贴人:huaxiangsl]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huaxiangsl
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-06-10 20:31:58 楼主
    现在要把报到3的都删掉,看最后剩的是哪两号。。

    以下是我编的。。。但好像有点问题

    #include"stdio.h"
    #define LEN sizeof(struct baoshu)
    struct baoshu
      { int num;
      struct baoshu *next;
      };
    main()
      {  int m,i;
      struct baoshu *head,*q,*p;
      printf("input num;");
      scanf("%d",&m);/* 多少个人*/
      if (m%3==0) { printf(" 没有了"); return 0 ; }
      head=p=q=(struct baoshu*)malloc(LEN);
        head->num=1;  /*第一个人*/
      for (i=2;i <=m;i++)
          {  /*第几个人num就等于几,从第二个开始*/
            p=(struct baoshu*)malloc(LEN);
            p->num=i;
            q->next=p;
            q=p;
          }
          p->next=head;  /* 尾巴指向头头 */
          do {
          p=head;
          head->next=((head->next)->next)->next; /*第二个结点指向第四个,*/
          head=((head->next)->next)->next; /*head转到第四个结点上来*/
          free((p->next)->next); /*释放顺序为三的结点*/
          i--; /*i记录删除的个数*/
            } while(i>2); /*少余3个的话,终止*/
          printf("%d, %d",head->num,p->num); /* 打印最后*/
          getch();
      }
     
     
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zbing0203
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-10 20:39:121楼 得分:0
    if (m%3==0) { printf(" 没有了"); return 0 ; }
    这里什么意思 难道3个人报数就没有了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zbing0203
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-10 20:59:462楼 得分:0
    #include"stdio.h"
    #define LEN sizeof(struct baoshu)
    struct baoshu
      {
      int num;
          struct baoshu *next;
      };
    void main()
      {  int m,i;
      struct baoshu *head,*q,*p;
      printf("input num;");
      scanf("%d",&m);/* 多少个人*/
    // if (m%3==0) { printf(" 没有了"); return 0 ; }
      head=p=q=(struct baoshu*)malloc(LEN);
        head->num=1;  /*第一个人*/
      for (i=2;i <=m;i++)
          {  /*第几个人num就等于几,从第二个开始*/
            p=(struct baoshu*)malloc(LEN);
            p->num=i;
            q->next=p;
            q=p;
          }
          p->next=head;  /* 尾巴指向头头 */
      i=5;
          do {
          p=head;
    q=head->next->next; //保存要删除的节点   head->next->next=((head->next)->next)->next; /*第二个结点指向第四个,*/     
          head=((head->next)->next); /*head转到第四个结点上来*/
          free(q); /*释放顺序为三的结点*/
          i--; /*i记录删除的个数*/
            } while(i>2); /*少余3个的话,终止*/
          printf("%d, %d",head->num,head->next->num); /* 打印最后*/
          getch();
      }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zbing0203
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-10 21:04:053楼 得分:0
    上面有问题哦
    #include"stdio.h"
    #define LEN sizeof(struct baoshu)
    struct baoshu
      {
      int num;
          struct baoshu *next;
      };
    void main()
      {  int m,i;
      struct baoshu *head,*q,*p;
      printf("input num;");
      scanf("%d",&m);/* 多少个人*/
    // if (m%3==0) { printf(" 没有了"); return 0 ; }
      head=p=q=(struct baoshu*)malloc(LEN);
        head->num=1;  /*第一个人*/
      for (i=2;i <=m;i++)
          {  /*第几个人num就等于几,从第二个开始*/
            p=(struct baoshu*)malloc(LEN);
            p->num=i;
            q->next=p;
            q=p;
          }
          p->next=head;  /* 尾巴指向头头 */
      i=m;
          do {
          p=head;
    q=head->next->next; //保存要删除的节点  head->next->next=((head->next)->next)->next; /*第二个结点指向第四个,*/     
          head=((head->next)->next); /*head转到第四个结点上来*/
          free(q); /*释放顺序为三的结点*/
          i--; /*i记录删除的个数*/
            } while(i>2); /*少余3个的话,终止*/
          printf("%d, %d",head->num,head->next->num); /* 打印最后*/
          getch();
      }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • johnelf
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-10 21:11:144楼 得分:0
    #inlcude"malloc.h"
    main前加int,最后要return 0;
    PS:你的算法还是。。。有点晕
    不好意思 我菜
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zbing0203
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-10 21:11:175楼 得分:0
    m <=3再单独处理一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bhdgx
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-11 07:19:166楼 得分:0
    zbing0203强啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jillnicky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-11 08:52:357楼 得分:0
    引用 4 楼 johnelf 的回复:
    #inlcude"malloc.h"
    main前加int,最后要return 0;
    PS:你的算法还是。。。有点晕
    不好意思 我菜

    这个和编译器有关,有的编译器不需要在main前加int的……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luckybadman
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-11 10:14:458楼 得分:0
    C/C++ code
    #include "StdAfx.h" #include"stdio.h" #include <malloc.h> #define LEN sizeof(struct baoshu) struct baoshu { int num; struct baoshu *next; }; int main() { int m,i; struct baoshu *head,*q,*p; printf("input num:"); scanf("%d",&m);/* 多少个人*/ if ( m % 3 == 0 ) { printf("No number"); return 0; } head=p=q=(struct baoshu*)malloc(LEN); head->num=1; /*第一个人*/ for ( i = 2; i <= m; i++) { /*第几个人num就等于几,从第二个开始*/ p=(struct baoshu*)malloc(LEN); p->num=i; q->next=p; q=p; } p->next=head; /* 尾巴指向头头 */ do { for ( i = 0; i < 2; i++ ) { p = p->next; } q= p; q->next = p->next->next; m--; } while(m>2); /*少余3个的话,终止*/ printf("%d, %d",p->num,p->next->num); /* 打印缀?/ return 1; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huaxiangsl
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-06-11 19:16:039楼 得分:0
    我已经做出来了, 但下面的怎么是i>3啊  应该是i>=3吧。。。
    如50个人, 我一直删到只剩2个啊
    #include"stdio.h"
    #define LEN sizeof(struct baoshu)
    struct baoshu
      {
      int num;
      struct baoshu *next;
      };
    void main()
      {  int m,i;
      struct baoshu *head,*q,*p;
      printf("input num;");
      scanf("%d",&m);/* 多少个人*/
      head=p=q=(struct baoshu*)malloc(LEN);
        head->num=1;  /*第一个人*/
      for (i=2;i <=m;i++)
          {  /*第几个人num就等于几,从第二个开始*/
            p=(struct baoshu*)malloc(LEN);
            p->num=i;
            q->next=p;
            q=p;
          }
          p->next=head;  /* 尾巴指向头头,形成一个圆 */ 
          while(i>3) {
          p=head;
          q=head->next->next; /*保存要删除的节点 */
          head->next->next=((head->next)->next)->next; /*第二个结点指向第四个,*/     
          head=((head->next)->next); /*head转到第四个结点上来*/
          free(q); /*释放顺序为三的结点*/
          i--; /*i记录删除的个数*/
          }  /*少余3个的话,终止*/
          printf("%d, %d",head->num,head->next->num); /* 打印最后*/
          getch();
      }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved