记录几个易错的编程知识

    xiaoxiao2021-03-25  107

    1.若有语句:char *line[5];,以下叙述中正确的是

      A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量

      B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

      C) 定义line是一个指针数组,语句中的*号称为间址运算符

      D) 定义line是一个指向字符型函数的指针

    Ans: A .

    2.

    有以下程序段

      char ch; int k;

      ch=′a′;

      k=12;

      printf("%c,%d,",ch,ch,k);printf("k=%d \n",k);

      已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

      A)因变量类型与格式描述符的类型不匹配输出无定值

      B)输出项与格式描述符个数不符,输出为零值或不定值

      C)a,97,12k=12

      D)a,97,k=12

    Ans: D.

    3.

    以下错误的定义语句是

      A)intx[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

      C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4};

    Ans:C.   C语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项C)错误

    4.

    下面的程序段运行后,输出结果是

      int i,j,x=0;

      static inta[8][8];

      for(i=0;i<3;i++)

      for(j=0;j<3;j++)

      a[i][j]=2*i+j;

      for(i=0;i<8;i++)

      x+=a[i][j];

      printf("%d",x);

      A)9 B)不确定值 C)0 D)18

    Ans: C j最后的值为3,判断不通过检查后再继续后续的代码。

    5.

    下列程序执行后的输出结果是

      void func(int*a,int b[])

      { b[0]=*a+6; }

      main()

      { int a,b[5];

      a=0; b[0]=3;

      func(&a,b);printf("%d\n",b[0]);}

      A)6 B)7 C)8 D)9

    Ans:A. 

    void func(int *a,int b[])里定义了int* a ,传入地址,b[]没有初始化也表示地址b, 传入两个地址后,可以对地址里面存的东西修改,并传出去,但是不能更改地址,因为函数在传入实参的时候,是把参数复制了一份。除非是&按值取用,则不把参数复制,直接使用原地址的值,对该地址的操作也会保留下来。

    l
    转载请注明原文地址: https://ju.6miu.com/read-22858.html

    最新回复(0)