+小组成员:廖强,侯诚超
设计思想
设计宽口:使用textbox输出整数数组.输入数组大小.取值范围等。
程序编辑:1.使用取随机数函数取随机数
2.利用for循环将随机数放入到一个数组中
3.调用获取最大子数组和的子函数得到该数组的最大子数组和
4.将最大子数组和在textbox中显示出来
调试和运行程序
出现的问题
1.调用求最大子数组和函数时求得的数值错误。
2.主函数定义的数组类型和子函数定义的数组类型不一致
3.在调试程序的时候,如果选择“输入数组计算”时,点击时出现错误
解决方案
1.更改子函数,使其求得的数为最大子函数和。
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.Threading.Tasks; using System.Windows.Forms; namespace 最大数组和 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void textBox3_TextChanged(object sender, EventArgs e) { } private void label1_Click(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e)//取随机数时计算 { int maxsum; double size = Convert.ToDouble(textBox4.Text); double range1 = Convert.ToDouble(textBox3.Text); double range2 = Convert.ToDouble(textBox5.Text); int[] list = new int[(int)size]; Random r = new Random(); for (int i = 0; i < size; i++) { double temp = r.Next((int)range1, (int)range2); list[i] = (int)temp; textBox1.AppendText(list[i].ToString() + " , "); } maxsum = MaxListSum(list); textBox6.Text = maxsum.ToString(); } public int MaxListSum(int[] a)//获取最大子数组和 { if (null == a) { return 0; } if (a.Length == 1) { return a[0]; } int sum = a[0]; int temp = a[0]; for (int i = 1; i < a.Length; i++) { temp = max(temp + a[i], a[i]); if (sum < temp) { sum = temp; } } return sum; } public int max(int a, int b) { return a > b ? a : b; } private void button2_Click(object sender, EventArgs e) { Application.Exit(); } private void button3_Click(object sender, EventArgs e) { textBox1.Text = null; textBox6.Text = null; } private void button4_Click(object sender, EventArgs e)//输入已知数组时计算 { int maxsum; string[] strN = textBox1.Text.Split(','); int[] list = new int[strN.Length]; for (int i = 0; i < strN.Length; i++) { list[i] = int.Parse(strN[i]); } maxsum = MaxListSum(list); textBox6.Text = maxsum.ToString(); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox6_TextChanged(object sender, EventArgs e) { } } }
结果截图
当取值范围超过int32时,会出现如下情况
总结
在编写程序代码时,必须仔细认真,不能出现一点点的错误,例如输入的符号分中英文,代码字母分大小写,这是常出现的问题。
编写代码时要分段编写,还要有必要的注释,在定义变量类型的时候要根据这个变量的用途来定义。
在编写子函数过程中,先简单调试一下子函数是否能够正确运行,当无法运行时,必定时代码输入错误,当输出结果不正确时,必然时逻辑错误
小组照片