C语言的一个小问题 希望帮忙解释下

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:16:25
int i,j,n=0;
max=xx[0];
for(i=0;i<N;i++)
if(xx[i]>max) max=xx[i];
for(i=0;i<N;i++)
{ if(xx[i]==max) cnt++;
if(xx[i]%3==0||xx[i]%7==0) {pj+=xx[i];n++;}
}
if(n==0) pj=0;
else pj/=n;

这是一个子函数,目的是求一堆数中最大数以及最大数的个数还有能被3或者7整除的数的平均值

我不理解的是 为何要写两个一样的FOR循环 第二个FOR循环为什么不能删掉

这个i不是表达的意思一样么
为什么不能执行呢?上面不是已经有了一个FOR语句了么?

第一个for是寻找最大的元素,第二个for是根据第一个for找到的最大元素来计算最大元素的个数的。i只是一个计数用的变量而已,意思确实一样,用i的目的是遍历数组的所有元素。
如果你用一个for的话可以这样写
max=xx[0];
count =1;
for(i=0;i<N;i++)
{
if(xx[i]>max)
{
max=xx[i];
count=1;
}
else if(xx[i]==max)
{
count++;
}

}
这样最大元素也找到了 并且数目也算出来了。:-) 平均数跟能被3或者7整除的数就不用说了吧
不明白百度hi再问我。

int i,j,n=0;
max=xx[0];
for(i=0;i<N;i++)
if(xx[i]>max) max=xx[i];
for(i=0;i<N;i++)//你把这个for循环删了,下面的if语句怎么执行?
{ if(xx[i]==max) cnt++;
if(xx[i]%3==0||xx[i]%7==0) {pj+=xx[i];n++;}
}
if(n==0) pj=0;
else pj/=n;

按照你的意思应该是以下这个代码:

int i,j,n=0;
max=xx[0];
for(i=0;i<N;i++)
{
if(xx[i]>max) max=xx[i];
//for(i=0;i<N;i++)
{ if(xx[i]==max) cnt++;
if(xx[i]%3==0||xx[i]%7==0) {pj+=xx[i];n++;}
}
}
if(n==0) pj=0;
else pj/=n;

按你的补充,看来你还没有弄懂我的意思,一个for语句for(i=0;i<N;i++)对应的