标签:rand 有一个 循环 转化 变量 system append img partial
小组成员:司宇,滕达。
设计界面:
在c#界面添加一些控件。
程序设计: 1.使用for循环和取随机数的函数产生一千个随机数并且将其赋值到数组中;
2.封装获取最大子数组和的子函数;
3.设计主函数调用封装好的子函数;
4.将最大子数组和在textbox中显示出来;
调试和运行程序:
遇到的问题:1.没办法随意设定随机数的范围;
2.主函数需要的数值类型和子函数定义的数值类型不一致;
3.调试的时候进行一次调试以后就无法进行第二次调试;
解决方案:1.给随机数的上下限分别用两个可变量来定义,并且通过外界TextBox来进行输入;
2.主函数中的数组定义的是double类型,子函数定义的是int类型,在调用子函数之前将数组的类型转化为int类型;
3.设计一个清屏键,每次调试完以后,使用这个键清除文本,方便进行第二次调试;
几次运行的结果:
源程序:
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 _1000个数字的整数组的最大子数数组和 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //求一个整数数组任意的连续子数组的最大和 public int Sum(int[] a) { if (null == a) { return 0; } //判断数组是否为空,如果是空的话,令返回值为0 if (a.Length == 1) { return a[0]; } //判断数组里面是否只有一个元素,是,则返回此元素 int sum = a[0]; int temp; for (int i = 0; i < a.Length - 1; i++) { temp = a[i]; //开始从a[i]往它之后遍历,从a[i]开始累加,逐一跟sum对比 for (int j = i + 1; j < a.Length; j++) { temp = temp + a[j]; if (sum < temp) { sum = temp; //得出最大的一个Sum值,并且返回Sum } } } return sum; } private void button1_Click(object sender, EventArgs e) { Random random = new Random(); double min, max; min = Convert.ToDouble (textBox2.Text); max = Convert.ToDouble (textBox3.Text); int[] a = new int[1000]; for (int i = 0; i < 1000; i++) { a[i] = random.Next((int)min, (int)max); richTextBox1.AppendText(Convert.ToString(a[i])+" "); } int sum=Sum (a); //调用定义的封装好的子程序求和 textBox1.Text = Convert.ToString(sum); } private void textBox3_TextChanged(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { richTextBox1.Text=""; textBox1.Text = ""; } private void button3_Click(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } } }
标签:rand 有一个 循环 转化 变量 system append img partial
原文地址:https://www.cnblogs.com/qiyuea/p/9783681.html