#include"stdio.h"
void subaver()
{
int i,j,stu[5][5];
float sum=0;
for(j=0;j<5;j++)
{
for(i=0;i<5;i++)
{
sum+=stu[i][j];
}
printf("第%d门课的平均成绩为%5.1f \n",j+1,sum/5);
sum=0;
}
}
int main(void)
{
int i,j,stu[5][5];
for(i=0;i<5;i++)
{
printf("输入第%d个学生的5门课成绩",i+1);
for(j=0;j<5;j++)
{
scanf("%d",&stu[i][j]);
}
}
subaver();
return 0;
}
编译后的问题是 ,我输入成绩并存放到数组里(我单独检验过,数组数据可以正确输出),但是调用我自定义的函数后,却不能引用数组里的数字。是哪里出问题了,我是新手。
你那个stu[5][5]数组的作用域只是在main函数里,不能被别的函数引用
而且subaver()函数里不用再一次定义数组
如果要使用,可以这样
#include"stdio.h"也是定义为全局变量吗?
追答是的,全局变量就是指这个变量不在任何函数里定义,但可以被任何函数引用
追问嗯嗯,明白了!没办法了,只能采纳一个答案,也非常感谢你了,只不过是他早一点回答的,不过我知道是你亲自实验过所以才慢了点,总之也很感谢你了。
定义为全局变量的话,两个函数里的数据不会互相影响吗?
追答将stu定义为全局变量后, subaver() 和 main() 共享 stu, 但subaver() 和main() 一个读一个写, 对stu 本身没什么影响, 如果是将stu做为参数传给subaver, 也是将stu的地址传给subaver, 实际上还是共享stu.
可恶的考试9 提供给你的答案就是按全局变量的方式进行修改.