c#初学求指导

a434453754 2013-03-23 02:20:46
我是刚从C过渡到C#的,在字段定义的时候可能没有面向对象的严谨,请指导
以下编码是自己根据书中的练习题编制的,求优化!
题目:
用out参数实现以下功能。
有一群人同乘一条船,船漏,必须有人跳入水中减轻重量才能保持船不沉没,大家决定所有人围成一圈报数,报到7的人跳到水中,该人的下一人继续从1开始报数,依旧是报到7的跳入水中,如此重复直到所有人入水为止。
实现各位置入水次序。

自己的编码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ch5_6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public class people
{

public void getjumpnum(int personnum, out int[] jumpnum)
{
jumpnum = new int[personnum+1];//定义personnum数组
int i,n=0, flag=0,k=1;
int[] j = new int[personnum + 1];//定义局部变量
for (i = 1; i <=personnum; i++)
{
j[i] = 1;//表示该位置上未跳水

}
for (i = 1; i <= personnum+1; i++)
{
if (i == personnum+1)//当i超过人数,给i初始化1
i = 1;
flag += j[i];
if (flag == 7)
{ n++; j[i] = 0; jumpnum[k++] = i; flag = 0; }// j[i] = 0表示该位置上跳水, jumpnum[k++] = i记录位置,flag初始化
if (n == personnum)//n来控制循环
break ;
}
}
}

private void button1_Click(object sender, EventArgs e)
{
int i, personnum;
int[] p;
people jump = new people();
personnum = Convert.ToInt16(textBox1.Text);
jump.getjumpnum(personnum, out p);
for (i= 1; i <= personnum;i++ )
{
textBox2.Text = textBox2.Text + " " + p[i].ToString();
}
}
}
}
...全文
196 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
狼烟辉 2013-03-23
  • 打赏
  • 举报
回复
这个只是一个算法,和面向对象扯不上太大的关系.

    void SortIt(int _num, int[] its, out ArrayList _jumpSort)
        {
            _jumpSort = new ArrayList();
            int i = 0, j = 0;
            while (_jumpSort.Count != its.Length)
            {
                j = (j == its.Length) ? 0 : j;
                if (its[j] == -1)
                {
                    j++;
                    continue;
                }
                if (i == _num)
                {
                    i = -1;
                    its[j] = -1;
                    _jumpSort.Add(j);
                }
                i++;
                j++;
            }
        }
我是老姚 2013-03-23
  • 打赏
  • 举报
回复
1、这段代码没有字段的定义,只是简单的传递参数,谈不上严谨不严谨。 2、people类写在form1类的内部,在定义类的时候一般不要这么做。当然这样做对这段程序来说没有任何影响,但这种习惯经常会导致你找不到这个类。一般情况下一个类我们都是单独放在一个CS文件中的。 3、命名规范问题 C#中的命名规范一般类名,方法名、属性名都是是Pascal命名法,字段、变量、参数是骆驼命名法

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧