我试图将一个用于计算最大半径的函数从使用指针转换为使用长度数组(L[10])。不幸的是,它显示了不同的结果,使用指针的结果是正确的,而数组形式是不正确的,但我找不到这个计算中的问题是什么。请给我看看写进数组表格中的问题。如有任何帮助,我们将不胜感激。
L[10]={1,2,3,4,5,6,7,8,9,10}
//Function in pointer form
double maxR() {
double er,pr, *p1=L+3, *p2=L+9;
er=(L[0]*L[0])+(L[1]*L[1])+(L[2]*L[2]);
while(p1<p2) {
pr=*p1*(*p1); p1++;
pr+=*p1*(*p1); p1++;
pr+=*p1*(*p1); p1++;
if(pr>er){ er=pr; }
}
return er;
}
//Function in array form
double maxR() {
double er,pr;
er=(L[0]*L[0])+(L[1]*L[1])+(L[2]*L[2]);
int i=3;
while(L[i]<L[9]) {
pr=L[i]*L[i]; i++;
pr+=L[i]*L[i]; i++;
pr+=L[i]*L[i]; i++;
if(pr>er){ er=pr; }
}
return er;
}
更改
while(L[i]<L[9])
至
while(i<9)