1)int z=5;f ( ){ static int x=2; int y=5;x=x+2; z=z+5;y=y+z;
1个回答

把代码补全一点,主要是注意返回类型!

#include "stdio.h"

int z=5;

void f()

{ static int x=2; int y=5;/* x为静态变量,分配了以后直到程序结束,y没实际用到*/

x=x+2; z=z+5;

y=y+z;

printf ("%5d%5dn",x,z);

}

int main()

{ static int x=10; int y;/* x为静态变量,分配了以后直到程序结束,和上面的x不同*/

y=z;

printf("%5d%5dn",x,z); /*这时x=10,z=5*/

f();/*这时进入函数f(),函数里面的x=4,z=10*/

printf("%5d%5dn",x,z);/*这时main()函数的x=10,z=10*/

f();/*这时进入函数f(),函数里面的x=x+2=4+2,z=15*/

return 0;

}

运行结果

10 5

4 10

10 10

6 15

其实关键是静态变量的作用域问题

#include "stdio.h"

struct prob

{ char *a;

int b;

} x[]={ "Zhang San",19,"Li Si",21,"Wang Wu",20};

int main()

{ int i,m1,m2;

m1=m2=x[0].b;

for (i=1; im1) m1=x[i].b;/*m1存放最大的年龄*/

else if (x[i].