关于全局变量的问题
为什么top和lowest的值会是0,我调试的时候发现子程序运行完后,top和lowest的值是对的,但是为什么回到主程序就变成0了,是不是全局变量的问题,求大佬解答#include <stdio.h>
int top,lowest;
int main(void)
{
double average(int b[]);
double ave;
int i,a;
printf("Input 10 students' score:");
for(i=0;i<10;i++)
scanf("%d",&a);
ave=average(a);
printf("%lf\n %d\n %d\n",ave,top,lowest);
}
double average(int b[])//形参可以不定义数组大小
{
double ave;
int i,top=b,lowest=b;
for(i=1,ave=b;i<10;i++)
{
if(top<b)
top=b;
else if(lowest>b)
lowest=b;
ave=ave+b;
}
ave=ave/10.0;
return ave;//全局变量不用返回
}
看错了 int i,top=b,lowest=b;
改成
int i;
top=b,lowest=b; xieglt 发表于 2021-1-12 15:27
改成
一样的,还是错的 本帖最后由 xieglt 于 2021-1-12 15:50 编辑
#include <stdio.h>
int top,lowest;
int main(void)
{
double average(int b[]);
double ave;
int i,a;
printf("Input 10 students' score:");
for(i=0;i<10;i++)
scanf("%d",&a);
ave=average(a);
printf("%lf\n %d\n %d\n",ave,top,lowest);
return 0;
}
double average(int b[])//形参可以不定义数组大小
{
double ave;
int i;
top=b,lowest=b;
for(i=1,ave=b;i<10;i++)
{
if(top<b)
top=b;
else if(lowest>b)
lowest=b;
ave=ave+b;
}
ave=ave/10.0;
return ave;//全局变量不用返回
}
MeowMoo 发表于 2021-1-12 15:41
一样的,还是错的
按楼上那样改就行了啊,不应该错啊 xieglt 发表于 2021-1-12 15:48
哦~,原来是全局变量重定义了,谢谢,但是这个问题调试的时候子函数能正常运行,而且结果也正确,意思是如果在子函数重定义,相当于这两个变量在子函数的值只在子函数有效,回主函数就会被重新赋值了,是这个意思吗? 心驰神往 发表于 2021-1-12 15:54
按楼上那样改就行了啊,不应该错啊
是的,没错了{:10_279:} 上面已经有正确答案,我回个帖子而已
页:
[1]