标题:有关全局变量的问题,请各位朋友给解答下
只看楼主
cheenbee
Rank: 2
等 级:论坛游民
帖 子:53
专家分:32
注 册:2011-11-3
结帖率:100%
已结贴  问题点数:5 回复次数:5 
有关全局变量的问题,请各位朋友给解答下
#include<stdio.h>
float Max=0,Min=0;
float average(float array[],int n){
    int i;
    float aver,sum=array[0];
    Max=Min=array[0];
    for(i=1;i<n;i++){
        if(array[i]>Max)
            Max=array[i];
        else if(array[i]<Min)
            Min=array[i];
        sum=sum+array[i];
    }
    aver=sum/n;
    return aver;
}
int main(){
   
    float a[]={89,95,87.5,100,67.5,97,59,84,73,90};
    printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,average(a,10));
    return 0;
}
疑问一:
Max和Min在调用average函数之前输出,为什么其值不是0,0 。运行顺序是什么?
疑问二:
全局变量Max和Min的值在average函数中被改变为什么会被传到main函数中,是不是在别的函数中只要全局变量的值被改变会一直被沿用?
搜索更多相关主题的帖子: 朋友 average include return 
2011-11-07 17:31
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:1 
回复 楼主 cheenbee
printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,average(a,10));
改成这样试试:
printf("max=%6.2f\nmin=%6.2f\n",Max,Min);
printf("average=%6.2f\n",average(a,10));
printf("max=%6.2f\nmin=%6.2f\n",Max,Min);

总有那身价贱的人给作业贴回复完整的代码
2011-11-07 17:36
tianlanf
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2011-11-7
得分:1 
全局变量在整个程序运行期间一直占用存储单元,所以在任何地方都可能使得其值发生变化。也只能回答你的第二个问题。
2011-11-07 17:38
Sv少
Rank: 3Rank: 3
来 自:山东青岛
等 级:论坛游侠
威 望:1
帖 子:53
专家分:168
注 册:2011-11-7
得分:1 
问题一:
因为Max和Min是全局变量,而全局变量会申请一个固定的存储空间,
这样无论是主函数还是调用函数在使用同一个全局变量时其改变的都使同一个存储空间的数据;(问题二)
这样Max和Min最终的值分别是array[]的最大值和最小值即:100,59
我运行该段代码后,发现是:先执行Max,Min(但没有输出这两个变量的值),
然后是函数average(a,10)(Max,和Min的值就在这步改变),
最后是输出:
max=100.00
min= 59.00
average= 84.20
Press any key to continue
也就是说printf();语句先执行依次完所有的变量或表达式或调用函数后再依次输出其值;

Sv少  run
2011-11-07 18:47
Sv少
Rank: 3Rank: 3
来 自:山东青岛
等 级:论坛游侠
威 望:1
帖 子:53
专家分:168
注 册:2011-11-7
得分:0 
哦,对了,给个小建议!
其实,自己调试一遍程序得到的效果会更好,体会会更深!

Sv少  run
2011-11-07 18:57
cheenbee
Rank: 2
等 级:论坛游民
帖 子:53
专家分:32
注 册:2011-11-3
得分:0 
回复 4楼 Sv少
今天无意间看书已知道最后输出的问题:在多数系统中对函数参数求值顺序为自右向左!
2011-11-16 20:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354526-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.202995 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved