课堂测试
课堂上老师让我们当堂做了一个测试,下面是老师给的代码
int Largest(int list[],int length) { int i,max; for(i=0;i<length-1;i++) { if(list[i]>max) { max=list[i]; } } return max; }
刚看到这个代码感到不难,审查之后发现了一个问题,就是i的取值范围出现了错误,修改后做了三组测试,分别是(-1,0,1),(0,2,4),(-2,-4,-6),本来以为这个测试这样就算完成了,然后听了老师的讲解之后才发现还远远不够,例如没有给max赋值,这是一个程序员最不该有的错误,同时作为一个合格的程序员而言,不仅要考虑到正确的情况,同时也要考虑到错误的情况,因为一个程序是给用户来用的,并不是我们自己用,于是我对之前的程序作了修改,考虑了数组为空和数组长度为0的情况,下面是我修改后的程序,但是仍然存在着许多的不足之处,通过这次的测试让我感到程序的测试甚至比写代码更重要,我们要充分的考虑到用户可能的情况,不能只按照我们自己的想法来做,希望各位大神来指点一下我这个菜鸟,谢谢!
#include <stdio.h> #include <stdlib.h> int Largest(int list[],int length) { int i,max; if(list[0]==+1) { printf("您输入的数组为空!"); exit (-1); } else if(length==0) { printf("您输入的数组长度为空!"); exit(0); } max=list[0]; for(i=0;i<=(length-1);i++) { if(list[i]>max) { max=list[i]; } } return max; } int main() { int a[100]; int j,num; printf("请输入数组长度:\n"); scanf("%d",&num); Largest(a,num); printf("请输入%d个数据(以+1结束):\n",num); for(j=0;j<num;j++) { scanf("%d",&a[j]); Largest(a,num); } printf("%d",Largest(a,num)); return 0; }
下面是测试截图