各位大佬请问这段代码有什么问题?
#include <stdio.h>void main()
{
int a={98,95,99,86,82};
float average(int p,int n);
float ave;
ave = average(a,5);
printf("%f",ave);
}
float average(int p,int n)
{
float sum=0;
int i;
for(i=p;i<n;p++)
{
sum+=*p;
}
sum/=5;
return sum;
} 本帖最后由 Neverturnback 于 2019-8-6 13:35 编辑
#include <stdio.h>
void main()
{
int a={98,95,99,86,82};
float average(int p,int n); //下面a是一个int*类型,所以这里的p要是int*类型,不能是int类型
float ave;
ave = average(a,5);
printf("%f",ave);
}
float average(int p,int n)
{
float sum=0;
int i;
for(i=p;i<n;p++)//这里 i 是 一直小于 n 的,没有退出条件,这个就是死循环(i = p只会在进入循环的时候执行一次,后面的每一次循环都不执行i = p)
{
sum+=*p;
}
sum/=5;
return sum;
}
下面是更改后的代码(已成功运行):
#include <stdio.h>
void main()
{
int a = { 98, 95, 99, 86, 82 };
float average(int *p, int n);
float ave;
ave = average(a, 5);
printf("%f", ave);
getchar();
}
float average(int *p, int n)
{
float sum = 0;
int i;
for (i = 0; i<n; i++, p++)
{
sum += *p;
}
sum /= 5;
return sum;
}
Neverturnback 发表于 2019-8-6 13:34
#include
void main()
理解了,谢谢你{:9_232:}
页:
[1]