1.程序代码
//郭婷 20132916 信1305 2015/3/27 #include<iostream> using namespace std; int Largest(int list[], int length) { int i, max; max = list[0]; for (i = 0; i < length ; i++) { if (list[i]>max) { max = list[i]; } } return max; } void main() { int list[5],length; int i; cin >> length; for (i = 0; i < length; i++) { cin >> list[i]; } cout << Largest(list, length); }
2.错误查找
max变量要初始化,否则计算机会根据之前的存储情况赋值,或许导致结果错误。
i<length,如果是i<(length-1),那么最后一个数将不能被查到。
3.测试结果
全是正数
全是负数
有正有负
最大值重复
如果数组长度为0
4.出现的问题
由上面的测试结果看,当数组长度为0时,结果会出现问题。
5.解决方案
如果用户输入的数组长度为0,就返回0。
6.修改后的源代码
//郭婷 20132916 信1305 2015/3/27 #include<iostream> using namespace std; int Largest(int list[], int length) { int i, max; max = list[0]; if (length == 0 || list == NULL) { return 0; } for (i = 0; i < length ; i++) { if (list[i]>max) { max = list[i]; } } return max; } void main() { int list[5],length; int i; cin >> length; for (i = 0; i < length; i++) { cin >> list[i]; } cout << Largest(list, length); }
6.总结
在之前如果写这个程序,我一定不会考虑到如果数组的长度为零的情况,在学完这节课,测试了这个程序后,了解了程序在编写过程中要考虑各种情况,并且要针对出现的问题做出相应的解决方案。