三个c 发表于 2019-8-6 13:17:16

各位大佬请问这段代码有什么问题?

#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:34:09

本帖最后由 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;
}

三个c 发表于 2019-8-6 14:19:25

Neverturnback 发表于 2019-8-6 13:34
#include

void main()


理解了,谢谢你{:9_232:}
页: [1]
查看完整版本: 各位大佬请问这段代码有什么问题?