#include<stdio.h>
void DivArray(int*pArray,int n)
{
int i;
for(i=0;i<n;i++)
{
pArray[i]/=pArray[0];
}
}
错误原因:在循环的第一步,第一个元素就变成了1,然后再用他去除以其他元素,就不符合题目要求。
改进:使用其他变量保存第一个元素:
#include<stdio.h>
void DivArray3(int*pArray,int n)
{
assert(pArray!=NULL);//1:参数的检验
assert(n>0);
if(pArray[0]==0)//2:除数不能为0
{
cout<<"除数不能为0"<<endl;
exit(1);//终止进程
}
int tmp=pArray[0];
for(int i=0;i<n;i++)//3:陷阱
{
pArray[i]/=tmp;
}
}
知识点:
函数的参数要进行检验:assert()。