最大最小值总分问题
#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;
}
为啥输出是好大一串数字,求解答 数组越界了,访问到了栈中的一些其它的数据。
第十行出错了,不用写方括号。 本帖最后由 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]