C语言问题

#define MAX 5
int a[MAX];
void sub1()
{int i;
for(i=0;i<MAX;i++)
a[i]=i+i;}
void sub2()
{int a[MAX],i;
for(i=0;i<MAX;i++)
a[i]=i;}
void sub3()
{int i;
for(i=0;i<MAX;i++)
printf("%3d",a[i]);
printf("\n")}
main()
{ sub1();sub3();
sub2();sub3();}

结果是多少 简单分析一下~

输出
0 2 4 6 8
0 2 4 6 8
空格就不打那么多了,
分析
首先调用sub1()函数,这个函数中的for语句对全局整型数组a进行赋值,赋值的结果是a={0,2,4,6,8}。因为全局变量的值在整个程序中是保持不变的,因此当函数sub1结束时,全局数组a仍然是这几个值。

然后调用sub3函数,输出全局数组a的值。

然后调用sub2函数,在这个函数中定义了一个局部变量a[MAX],这个局部变量隐藏了全局变量a[MAX],因此,在sub2中对a的更改是对局部变量a的更改,而全局变量a的值,仍然是{0,2,4,6,8}

然后调用sub3函数,输出全局数组a的值,因为sub2并未改变全局数组a的值,因此仍然输出0 2 4 6 8
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-22
这位小朋友,你好啊、
你这个程序 有一点小小的错误的,
我的下部分就是改的部分噢 ,好好 的听噢 。
#include<stdio.h>
#define MAX 5
int a[MAX];

void sub1()
{int i;
for(i=0;i<MAX;i++)
a[i]=i+i;}

void sub2()
{int a[MAX],i;
for(i=0;i<MAX;i++)
a[i]=i;}

void sub3()
{int i;
for(i=0;i<MAX;i++)
printf("%3d",a[i]);
printf("\n");}

int main()
{ sub1();sub3();
sub2();sub3();
fflush(stdin);
getchar();
}
程序运行的结果是
0 2 4 6 8
0 2 4 6 8
就是这个的啊。
那么我就给你简单的解释一下吧
main()
函数中调用以上定义的程序。
这个是关于函数简单的调用的,
还有关于for的使用,及用数组的表示,要好好的看书,我想这些你是看明白的。
加油噢。
第2个回答  2010-03-22
0
2
4
6
8
两次答案一样,sub3()输出的是全局变量a[MAX],sub2()中的a[MAX]是局部变量,在sub2()中没输出,就没有机会输出了
%3d?跟谁学的?
相似回答