ahr123 发表于 2018-8-11 11:29:47

最大最小值总分问题

#include<stdio.h>

int l,h,n;

void main()
{
        int score = {1,2,3,4,5,6,7,8,9,0};
        int f(int a[]);
        int x;
        x = f(score);
        printf("%d\n%d\n%d\n",l,h,n);
}

int f(int a[])
{
        int i = 0;
        l = 0;
        h = 100;
        n = 0;
        for(; i < 10; i++)
        {
                n = n + a;
                if(a>h)
                {
                        h = a;
                }
                if(a<l)
                {
                        l = a;
                }
        }
        return n;
}

为啥输出是好大一串数字,求解答

无符号整形 发表于 2018-8-11 11:44:18

数组越界了,访问到了栈中的一些其它的数据。
第十行出错了,不用写方括号。

TyCk 发表于 2018-8-11 12:21:38

本帖最后由 TyCk 于 2018-8-11 12:24 编辑

void main()
{
      int score = {1,2,3,4,5,6,7,8,9,0};
      int f(int a[]);   // 函数的声明最好放到最开始的位置,不要在main函数内部声明啦,另外声明的话,可以直接用int f(int); 就可以。
      int x;
      x = f(score);// 同楼上,这里数组越界了,第10个元素索引为9;等下,这里不应传入score,应当传入数组的地址,也就是传入score或者score即可(具体请实际测试下)
      printf("%d\n%d\n%d\n",l,h,n);
}
页: [1]
查看完整版本: 最大最小值总分问题