计算机等级 百分网手机站

计算机二级考前冲刺卷及答案(3)

时间:2018-03-27 15:08:38 计算机等级 我要投稿

2016年计算机二级考前冲刺卷及答案

  (38)以下叙述中正确的是

  A)全局变量的作用域一定比局部变量的作用域范围大

  B)静态(static)类别变量的生存期贯穿于整个程序的运行期间

  C)函数的形参都属于全局变量

  D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

  (39)设有如下说明

  typedef struct

  { int n; char c; double x; }STD;

  则以下选项中,能正确定义结构体数组并赋初值的语句是

  A)STD tt[2]={ {1,'A',62},{2,'B',75} }; B)STD tt[2]={1, "A",62, 2, "B",75};

  C)struct tt[2]={ {1,'A'} ,{2,'B'} }; D)struct tt[2]={{1, "A",62.5},{2, "B",75.0} };

  (40)有以下程序

  main()

  { union { unsigned int n;

  unsigned char c;

  } u1;

  u1.c='A';

  printf("%c\n",u1.n);

  }

  执行后输出结果是

  A)产生语法错 B)随机值 C)A D)65

  (41)有以下程序

  main()

  { char str[]="xyz",*ps=str;

  while(*ps) ps++;

  for(ps--; ps-str>=0;ps--) puts(ps);

  }

  执行后输出结果是

  A) yz B) z C) z D) x

  xyz yz yz xy

  xyz xyz

  (42)有以下程序

  main()

  { int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;

  pa=a;

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

  if(i<2) pa[1][i] = pa[1][i]-1;

  else pa[1][i]=1;

  printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

  }

  执行后输出结果是

  A)7 B)6 C)8 D)无确定值

  (43)有以下程序

  void fun( int *a, int i, int j)

  { int t;

  if(i

  { t=a[i]; a[i]=a[j]; a[j]=t;

  fun(a,++i,--j);

  }

  }

  main()

  { int a[]={1,2,3,4,5,6},i;

  fun(a,0,5);

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

  printf("%d ",a[i]);

  }

  执行后输出结果是

  A)6 5 4 3 2 1 B)4 3 2 1 5 6 C)4 5 6 1 2 3 D)1 2 3 4 5 6

  (44)有以下程序

  main(int argc, char *argv[] )

  { int n,i=0;

  while(argv[1][i]!='\0')

  { n=fun(); i++; }

  printf("%d\n", n*argc);

  }

  int fun()

  { static int s=0;

  s+=1;

  return s;

  }

  假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行

  exam 123<回车>

  则运行结果为

  A)6 B)8 C)3 D)4

  (45)以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

  A) main() B) main()

  { int *p; { int *p;

  fun(p); fun(&p);

  ┆ ┆

  } }

  int fun(int *p) int fun(int **p)

  { int s; p=&s; } { int s; *p=&s; }

  C) #include D) #include

  main() main()

  { int *p; { int *p;

  fun(&p); fun(p);

  ┆ ┆

  } }

  int fun(int **p) int fun(int *p)

  { *p=(int *)malloc(2); } { p=(int *)malloc(sizeof(int)); }

  (46)若要说明一个类型名STP,使得定义语句STP s;等价于 char *s;,以下选项中正确的是

  A)typedef STP char *s; B)typedef *char STP;

  C)typedef STP *char; D)typedef char* STP;

  (47)设有如下定义

  struct ss

  { char name[10];

  int age;

  char sex;

  } std[3],*p=std;

  下面各输入语句中错误的是

  A)scanf("%d",&(*p).age); B)scanf("%s",&std.name);

  C)scanf("%c",&std[0].sex); D)scanf("%c",&(p->sex) );

  (48)设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是

  A)10101001 B)10101000 C)11111101 D)01010101

  (49)以下叙述中不正确的是

  A)C语言中的文本文件以ASCII码形式存储数据

  B)C语言中对二进制文件的访问速度比文本文件快

  C)C语言中,随机读写方式不适用于文本文件

  D)C语言中,顺序读写方式不适用于二进制文件

  (50)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。

  #include

  main()

  { FILE *fout; char ch;

  fout=fopen('abc.txt','w' );

  ch=fgetc(stdin);

  while(ch!='#')

  { fputc(ch, fout);

  ch=fgetc(stdin);

  }

  fclose(fout);

  }

  出错的原因是

  A)函数fopen调用形式错误 B)输入文件没有关闭

  C)函数fgetc调用形式错误 D)文件指针stdin没有定义