求下列C语言程序的正确运行结果

来源:百度知道 编辑:UC知道 时间:2024/05/28 08:33:36
#define MAX 10
int a[MAX],i;
main()
{printf("\n");sub1();sub3(a);sub2();sub3(a);
}
sub2()
{int a[MAX],i,max;
max=5;
for(i=0;i<max;i++)a[i]=i;
}
sub1()
{for(i=0;i<MAX;i++) a[i]=i+i;
}
sub3(int a[])
{int i;
for(i=0;i<MAX;i++) printf("%d",a[i]);
printf("\n");
}
请问这个程序是要干什么呢?怎么求解啊!
麻烦讲解详细点,我是菜鸟··

#include<stdio.h>

#define MAX 10 //预定义,在编译前编译 遇到MAX先转变成10在执行编译

int a[MAX],i; //定义全局变量

void sub2(); //必须先声明函数
void sub1();
void sub3(int a[]);

void main()
{
printf("\n"); //换行
sub1(); //执行函数sub1()
sub3(a); //把数组a作为参数执行sub3函数
sub2();
sub3(a);
}

void sub2()
{
int a[MAX],i,max; //此处需要注意,因为a已定义为局部变量,所以全部数组a[MAX]在本函数被屏蔽
max=5;
for(i=0;i<max;i++) //给数组a前5个元素赋值为其下标
a[i]=i;
}
void sub1() //给数组a所有元素赋值为其下标*2
{
for(i=0;i<MAX;i++)
a[i]=i+i;
}
void sub3(int a[]) //输出数组a的所有元素
{
int i;
for(i=0;i<MAX;i++)
printf("%d ",a[i]); //此处若能适当增加空格能更容易看清楚
printf("\n");
}

目的是理解全局变量和局部变量的区别和作用域

sub的3个函数 都涉及到a数组

sub1 内部定义了局部的数组a
sub2 调用的是全局变量 a
sub3 通关参数传递 操作对象还是全局的a