1.

int f(int a)
{
auto int b = 0;
static int c = 3;
b = b + 1;
c = c + 1;
return ( a + b + c );
}
int main()
{
int i,j;
i = f ( 2 );
j = f ( 2 );
printf("%d %d",i,j);
return 0;
}

输出i=7,j=8。

auto int定义的是局部变量,每次调用函数都会创建,static是静态全局变量,作用域是全局。

 

‍如果要一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,则这个变量的存储类型应该被说明为( )。 

  • A.

    register 寄存器变量

  • B.

    static 静态变量

  • C.

    extern 外部变量

  • D.

    auto 自动变量

    B。

     

    2.

    ‎若有定义int a=10;,下面正确的表达式是(   )。

    A.(a+2)++
    B.++a--
    • C.

      a+2++

    • D.

      -a++

      D。表达式(以及常量)不能进行自加、自减操作。

       

      2-20

      在一个被调用函数中,对return 语句使用有错误的是( )。

      (1分)
      A.

      在类型为void的函数定义中,不能使用 return 语句

      B.

      被调用函数中可以使用多个 return 语句

      C.

      被调用函数中,如果有返回值,就一定要有 return 语句

      D.

      一个 return 语句只能返回一个值给主调函数

      A。return;语句用于强行中止。

      2-27

      已知一个函数的定义如下: double play(int x, double y) { …… } 则该函数正确的函数原型声明为()。

      (1分)
      A.

      double play(int ,double);

      B.

      play(int x,double y)

      C.

      double play( x , y );

      D.

      play(x,y) ;

      A

      也可以不写形参,只写数据类型:

      dataType  functionName( dataType1, dataType2 ... );

       

      2-30

      以下函数值的类型是()。

      fun(double x)
      {
         double y;
         y=x*x;
         return y;
      }
       
      (1分)
      A.

      double

      B.

      不确定

      C.

      int

      D.

      void

      c

      1. C语言规定,函数返回值的类型由函数首部定义的类型决定。函数返回值应与首部定义的类型一致,如若不一致,则自动将返回值强制转换为函数首部定义的类型。

      2. 没有定义类型时默认为int型。也就是说你的函数是什么类型,返回值就是什么类型。

        2-45

        有如下的定义:

        char p[ ]="hello!";
        char q[10]={'h','e','l','l','o','!'};
        printf(""%d %d",strlen(p),strlen(q));
         

        则下述叙述中正确的是( )。

        (1分)
        A.

        p数组占6个字节,strlen函数输出长度为6。

        B.

        由于 q 数组中没有字符串结束符,长度不确定,但 p 数组中字符串长度为6。

        C.

        由于 p 数组中没有字符串结束符,长度不确定,但 q 数组中字符串长度为6。

        D.

        q数组占10个字节,strlen函数输出长度为6。

        D

        2-97

        下列实型常量,错误的是( )。

        (1分)
        A.

        2.2f

        B.

        -2.2E-2

        C.

        e2

        D.

        -3.0

        C e02

         

        2-59

        若有说明:int a[ ][4]={1,2,3,4,5,6,7};则数组a第一维大小是

        (1分)
        A.

        2

        B.

        3

        C.

        4

        D.

        不确定

        A。第一维即行数,这里未定义,但可以通过元素数量推断。