当前位置:编程学习 > C#/ASP.NET >>

C#面向对象编程

43个人围成一圈,报到7的出列,直到最后一个出列,如何用C#面向对象的思想写

追问:报到7的出列,例如17,27,37.......也是的。感谢你。

我是这么做的,不知道对不对。

public void Do(List<Perpson> list)
        {
            if (list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    string no = (++start).ToString();
                    if (no.Contains("7"))
                    {
                        MessageBox.Show("编号:" + list[i].Id + ",用户名:" + list[i].Name + "报" + no + " ,(有7)出列");
                        list.RemoveAt(i);
                        i--;
                    }
                }

                Do(list);
            }

        }

答案:using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{

     /// <summary>
    /// 定义一个人类
    /// </summary>
    class Man
    {
        /// <summary>
        /// 姓名
        /// </summary>
        string name;
        /// <summary>
        /// 获取或设置姓名
        /// </summary>
        public string Name
        {
            set { this.name = value; }
            get { return name; }
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="name"></param>
        public Man(string name)
        {
            this.name = name;
        }

    }
}

通过程序模拟该过程

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个链表存放47个Man的对象
            LinkedList<Man> mans = new LinkedList<Man>();
            //模拟添加47个人
            for (int i = 1; i <= 47; i++)
            {
                //创建一个Man类的对象 姓名用 "Man_"+i 初始化 
                Man man = new Man("Man_" + i);
                //添加对象到链表的尾部                                
                mans.AddLast(man);
            }
            // 设置第一个开始报数的人     
            LinkedListNode<Man> node = mans.First;
            //只要剩余的人数大于1                                      
            while (mans.Count > 1)
            {
                //要删除的节点
                LinkedListNode<Man> delNode = null;
                // 循环将node指向下一个开始报数的人
                for (int i = 0; i < 7; i++)
                {
                    node = node.Next;
                    //如果到达链表的末尾 将node指向链表的开始节点
                    if (node == null)
                        node = mans.First;
                    //如果报数达到7 将要删除的节点 赋给变量  delNode
                    if (i == 5)
                        delNode = node;
                }
                mans.Remove(delNode);
                Console.WriteLine(delNode.Value.Name+"出列!");
            }
            // 输出最后剩下的人
            Console.WriteLine("最后剩下 " + node.Value.Name);
        }
    }
}

没明白你的意思..报到7的出列是什么意思? 从哪里还是报?
www.zhenjiandan.com 不明白就去真简单视频教程网看看啊

上一个:有没有一款比较成熟的网络通信框架,最好支持P2P的? - C#编程 -
下一个:socket 网络编程 C#

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,