代码:
#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); }
错误:
max变量要初始化,否则计算机会根据之前的存储情况赋值,或许导致结果错误。i<length,如果是i<(length-1),那么最后一个数将不能被查到。
截图:
①全是正数
②全是负数
③有正有负
④最大值重复
⑤如果数组长度为0
出现的问题:
由上面的测试结果看,当数组长度为0时,结果会出现问题。
解决方案:
如果用户输入的数组长度为0,就返回0。
改后代码:
#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);
}
总结:我们在写程序的时候应该完成一个模块就对一个模块进行测试修改而不是等到全部代码敲完在测试那样会很困难而且时间浪费的更多。