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].