C语言笔试题带答案(3)

  main()

  { char* alpha[6]={“ABCD”,EFGH”,”IJKL”,”MNOP”,”QRST”,”UVwX”};

  char**p;

  int i:

  p=alpha;

  for(I=0;i<4;i++)

  printf(”%s”,p[I]);

  }

  A)ABCDEFGHIJKL B)ABCD

  C)ABCDEFGHIJKLMNOP D)AEIM

  答案:C

  评析:alpha[O]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此类推。当执行p=alpha后,p指向指针数组alpha的首地址。for循环中输出了4个字符串。

  (38)下面程序的输出结果是_________。

  #include

  main()

  { char*p[]={”B00L”,”0PK”,”H”,”SP”};

  int i:

  for(i=3;i>=0;i–,i–)

  printf(“%c”,*p[i]);

  printf(”\n”);

  }

  A)SO B)SP C)SPOPK D)SHOB

  答案:A

  评析:p[0]存放的是“BOOL\0”的首地址;p[1]存放的是“OPK\0”的首址等。

  在printf语句中输出的+p[I]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“s”,接着两次i–,则输出的值为+p[1],即字符“0”,所以本题的输出为SO。

  (39)以下程序的输出结果是_________。

  #include

  void prt(int*x,int*y,int*z)

  { printf(”%d,%d,%d\n”,++*x,++*y*(z++));}

  int a=10,b=40,c=20;

  main()

  { prt(&a,&b&C);

  prt(&a,&b,&C);

  }

  A)ll,42,3l B)ll,41,20 C)1l,21,40 D)11,41,2l

  12,22,41 12,42,20 11,2l,41 12,42,22

  答案:B

  评析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

  (40)若一个外部变量的定义形式为static int x;,那么,其中static的作用应该是_______。

  A)将变量存储在静态存储区

  B)使变量x可以由系统自动初始化

  C)使x只能在本文件内引用

  D)使x的值可以永久保留

  答案:C

  评析:事实上,无论有无static修饰,外部变量都具有A、B和c三种特性。作为一种修饰,static仅是限制此类型外部变量的引用范围:只能在定义它的文件范围内使用。

  (41)以下程序的输出结果是________。

  #include

  #define SQR(x)x*x

  main()

  { int a,k=3;

  a=++SQR(k+1);

  printf(”%d\n”,a);

  }

  A)8 B)9 C)17 D)20

  答案:B

  评析:本题宏替换中遇到形参x以实参k+l代替,其它字符不变。sQR(k+1)展开后应为字符串k+l*k+l。

  (42)下面是对宏定义的描述,不正确的是_______。

  A)宏不存在类型问题,宏名无类型,它的参数也无类型

  B)宏替换不占用运行时间

  C)宏替换时先求出实参表达式的值,然后代入形参运算求值

  D)宏替换只不过是字符替代而已

  答案:C

  评析:宏替换实质上就是字符替代,它不可能进行计算,故c错误。带参数的宏与函数相比,宏在程序编译之前已经将代码替换到程序内,执行时不会产生类似于函数调用的问题,可以说不占用运行时间。

  (43)以下程序(程序左边的数字为附加的行号)________。

  1#include

  2#include

  3main()

  4{char s[]=”string”;

  5 puts(s);

  6 strcpy(s,”hello”);

  7 printf(”%3s\n”,s);}

  A)没有错 B)第l行有错 C)第6行有错 D)第7行有错

  答案:B

  评析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第l行文件包含命令是错误的。

  (44)若有如下说明,则__________的叙述是正确的。

  struct st

  { int a;

  int b[2l;

  }a;

  A)结构体变量a与结构体成员a同名,定义是非法的

  B)程序只在执行到该定义时才为结构体st分配存储单元

  C)程序运行时为结构体st分配6个字节存储单元

  D)类型名struct st可以通过extern关键字提前引用(即引用在前,说明在后)

  答案:D

  评析:结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是a.a,变量a处于不同的“层次”上,系统完全能够分清。st是一个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。

  (45)若有以下结构体定义,则________是正确的引用或定义。

  struct example

  { int x;

  int y;

  }v1;

  A)example.x=10 B)example v2.x=10

  C)struct v2;v2.x=lO D)struct example v2={10};

  答案:D

  评析:在定义结构体变量时,不能只用结构体名example或关键字strum进行定义,必需要用结构体类型名struct example定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  (46)下列程序的执行结果是_________。

  #include

  union un

  { int i;

  char c[21;

  };

  void main()

  { union un x;

  x.c[0]=10:

  x.c[1]=1:

  printf(“\n%d”,x.i);

  }

  A)266 B)ll C)265 D)138

  答案:A

  评析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[O]位于低字节,c[1]位于高字节,所以x.i的值为266。

  (47)已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_______。

  struct link

  Datanext{ char data;

  ___________

  }node;

  A)struct link next B)link*next

  C)struct next link D)struct link*next

  答案:D

  评析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为struct link*next。

  (48)已知小写字母a的ASCII码为97,大写字母A的ASCII.码为65,以下程序的结果是__________。

  main()

  { unsigned int a=32,b=66;

  printf(“%c\n”,atb);

  }

  A)66 B)98 C)b D)B

  答案:C

  评析:位运算符“l”的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为l。最后以字符型输出, 98对应的字符“b”。

  (49)C语言库函数龟ets(str,n,fp)的功能是_________。

  A)从fp指向的文件中读取长度n的字符串存入str指向的内存

  B)从fp指向的文件中读取长度不超过n-l的字符串存入str指向的内存

  C)从fp指向的文件中读取n个字符串存/Xstr指向的内存

  D)从str读取至多n个字符到文件fp

  答案:B

  评析:fgets函数的作用是从指定的文件读入一个字符串。fgets(str,n,fp);中的n为要求得到的字符的个数,但只从fb指向的文件输入n-1个字符,然后在最后加一个‘\O’字符,因此得到的字符串共有n个字符。

  (50)下述程序向文件输出的结果是__________。

  #include

  void main()

  { FILE*fp=fopen(“TEST”,”wb”);

  fprintf(fp,”%d%5.0f%c%d”,58,76273.0,’-',2278);

  fclose(fp);

  }

  A)58 76273-2278 B)5876273。.000000-2278

  C)5876273-2278 D)因文件为二进制文件而不可读

本文已影响6827
上一篇:数据结构笔试题目 下一篇:阿里巴巴测试笔试题目

相关文章推荐

|||||