试题

最新计算机二级笔试题及答案

时间:2024-08-19 22:54:13 试题 我要投稿
  • 相关推荐

2016最新计算机二级笔试题及答案

  本文为大家提供的是计算机二级的考试试题,希望能帮助到大家!

2016最新计算机二级笔试题及答案

  1)设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_______。

  A)‘a’&&‘b’ B)a<=b C)a||+c&&b-c D)!((a

  1)D

  知识点:几种运算符的使用

  评析:选项A:‘a’&&‘b’是字符a与b的相与,故不为0。

  选项B:a<=b,由题中变量赋值可知,结果为l。

  选项c:a||+c&&b-c,此表达式先做算术运算b-c,结果为一1.而+c属于单目运算符,由于c初值为5,经过单目运算符运算后,还是5,下面再进行逻辑与的运算,即5&&-1结果为1(因为c语言中除O代表假外,其他任一个数都代表真),最后a||l,结果为1。

  选项D:!((a

  2)设有如下程序

  #include

  main()

  {

  int **k,*j,i=100;

  j=&i; k=&j;

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

  }

  上述程序的输出结果是_______。

  A)运行错误 B)100 c)i的地址 D)j的地址

  2)B

  知识点:指针变量的引用

  评析:j=&i,j的值就是i的地,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。

  3)设有以下语句,其中不是对a数组元素的正确引用的是:_______(其中0≤i

  int a[10]={0,l,2,3,4,5,6,7,8,9,},*p=a;

  A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))

  3)D

  知识点:通过指针引用数组元素

  评析:观察程序可知.a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。

  4)有以下程序:

  #include

  main(){

  char c[6];

  int i=0:

  for(;i<6;c[i]=getchar(),i++);

  for(i=0;i<6;i++)putchar(c[i]);

  printf("\n");

  }

  如果从键盘上输入:

  ab<回车>

  c<回车>

  def<回车>

  则输出结果为________。

  A)a B)a C)ab D)abcdef

  b b c

  c c d

  d d

  e

  f

  4)C

  知识点:字符数据的输入、输出

  评析:1.getchar()

  此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。请注意:getchar()只能接受一个字符(回车符也算是一个字符)。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可不赋给任何变量,作为表达式的一部分。

  2.putchar()

  此函数的作用是向终端输出一个字符,也可以输出控制字符,如回车符•使输出的当前位置移到下一行的开头。

  本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。

  5)下面程序

  #include

  #include

  main()

  { char*p1:"abc",*p2="ABC",str[50]= "xyz";

  strcpy(str+2,strcat(p1,p2));

  printf("%s\n",str);

  }

  的输出是_______。

  A)xyzabcABC B)zabcABC

  C)yzabcABC D)xyabcABC

  5)D

  知识点:字符串的连接和拷贝

  评析:strcat(字符数组l,字符数组2)的作用是连接两个字符数组中的字符串,把字符串2接到字符串l的后面,结果放在字符数组l中,本题中strcat(p1,p2)函数将*pl和*p2指向的两个串连接了起来,将字符串abcABC放到了*pl所指向的存储单元中:而strcpy(字符数组1,字符串2)函数将字符串2复制到字符数组1中去,本题将字符串abcABC复制到了str+2所指向的存储单元中,即将原str数组中的字符z及z向后的所有字符覆盖,所以在打印输出时,str的值已经等于“xyabcABC”。

  6)下面程序

  int aa[3][3]={{2},{4},{6}};

  main()

  { int i,*p=&aa[0][0];

  for(i=0;i<2;i++){

  if(i==0)aa[i][i+1]=*p+l;

  else ++p;

  printf("%d",*p);

  }

  }

  的输出是_______。

  A)23 B)26 C)33 D)36

  6)A

  知识点:for循环语句

  评析:观察题目,可以发现,*p=&aa[0][O]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[0][0],输出2,而i=l时执行了++p操作,使指针向后移动指向了aa[0][l],所以在输出*p时应为3。

  7)下面程序

  main()

  { int x=100,a=10,b=20,okl=5,ok2=0;

  if(a

  if(b!=15)

  if(!okl)x=1;

  else if(ok2)x=10;

  X=-1;

  Ptintf("%d\n",x);

  }

  的输出是_______。

  A)-1 B)0 C)1 D)不确定的值

  7)A

  知识点:判断语句的循环嵌套

  评析:第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断……如此循环,在打印输出语句的前一行,程序给变量x赋了值,为一l,所以,无论前期如何变化,最后的x值依然为一l。

  8)下面程序

  main()

  {

  int x=32:

  printf("%d\n",x=x<<1);

  }

  的输出是_______。

  A)100 B)160 C)120 D)64

  8)D

  知识点:位运算

  评析:<<是c语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方。所以,x<<1=32*2-64。

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

  #include

  #define FUDGE(y) 2.84+y

  #define PR(a) printf("%d",(int))(a))

  #define PRINT l(a) PR(a);putchar(‘\n’)

  main()

  { int x=2;

  PRINT l(FUDGE(5)*X);

  }

  A)1l B)12 C)13 D)15

  9)B

  知识点:带参数的宏定义

  评析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参,如果宏定义中的字符串中的字符不是参数字符,则保留,这样就形成了置换的字符串。

  根据以上原则,我们将实参带入已经定义的宏中,可以得出答案,最后打印出来的是“12”。

  10)以下程序段给数组所有的元素输入数据,请选择正确答案填入:

  #include

  main()

  {

  int a[10],i=0;

  while(i

  :

  :

  }

  A)a+(i++) B)&a[i+l] C]a+i D]&a[++i]

  10)A

  知识点:格式输入函数scanf()

  评析:因为a实际上就是数组a的首地址,而a+x则是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有选项A可以完成给数组所有的元素输入数据的任务。

  11)字符(char)型数据在微机内存中的存储形式是________。

  A)反码 B)补码

  C)EBCDIC码 D)ASCII码

  11)D

  知识点:字符数据在内存中的存储形式

  评析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

  12)下面程序的输出是________。

  typedef union

  { long x[2];

  int y[4];

  char z[8];

  }MYTYPE;

  MYTYPE them;

  main()

  { printf("%d\n",sizeof(them));}

  A)32 B)16 C)8 D)24

  12)C

  知识点:共用体的长度

  评析:sizeof(x)是一个标准c函数,它的返回值是x型的数据结构占用的内存字节数。题目中定义了一个共用体,共用体变量在内存中所占的长度等于最长的成员的长度,所以共用体MYTYPE需要8个字节的存储空间,由它定义的变量的长度当然也是8。

  13)不能把字符串:“Hello!”赋给数组b的语句是________。

  A)char b[10]={‘H’,‘e’,‘l’,‘l’,‘0’,‘!’};

  B)char b[10]={‘h’,‘e’,‘l’,‘l’,‘0’,‘!’};

  C)char b[10];strcpy(b,"Hello!");

  D)char b[10]="Hello!";

  13)B

  知识点:给数组赋值

  评析:在c语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。

  14)下面程序的输出是________。

  main()

  { int x=3,y=6,a=0;

  while(x++!=(y—=1))

  { a+=1;

  if(y

  }

  printf("x:%d,y:%d,a=%d\n",x,y,a);

  }

  A)x=4.v=4,a=1 B)x=5,y=5,a=1

  C)x=5,y=4,a=3 D)x=5,y=4,a=l

  14)D

  知识点:运算符

  评析:注意在x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:

  第一次while循环:x=3与y=5比较,条件为真,执行a=a+1=1;此时,x的值己为4,判断y

  第二次while循环:x=4与y=4比较,条件为假,此时x的值已为5,退出while循环,执行printf。

  15)下面程序的输出是_______。

  main()

  {char*s:"12134211";

  int vl=0,v2=0,V3=0,v4=0,k;

  for(k=0;s[k];k++)

  switch(s[k])

  { default:V4++;

  case‘1’:vl++:

  case‘3’:v3++:

  case‘2’:v2++:

  }

  printf("vl=%d,v2=%d,v3=%d,v4=%d\n",vl,v2,v3,V4);

  }

  A)vl=4,v2=2,v3=l,v4=1 B)vl=4,V2=9,V3=3,V4=l

  C)vl=5,v2=8,v3=6,v4=1 D)vl=8,V2=8,V3=8,v4=8

  15)C

  知识点:switch()语句

  评析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。本题中,for循环的条件是s数组的数组元素值,只要将数组的值一一代入程序逐步求解即可。

  16)下面程序的输出是_______。

  main()

  {int k=ll;

  printf("k=%d,k=%o,k=%x\n",k,k,k);

  }

  A)k=11.k=12,k=ll B)k=ll,k=13,k=13

  C)k=ll,k=013,k=0xb D)k=ll,k=13,k=B

  16)D

  知识点:格式字符

  评析:在c语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数,即k=ll:“%o”是以8进制无符号形式输出整数(不输出前导符0),即k=13:“%x”是以16进制无符号形式输出整数(不输出前导符0x),即k=B。

  17)以下叙述中正确的是_______。

  A)c语言比其他语言高级

  B)C语言可以不用编译就能被计算机识别执行

  c)c语言以接近英语国家的自然语言和数学语言作为语言的表达形式

  D)C语言出现的最晚,具有其他语言的一切优点

  17)C

  知识点:c语言风格

  评析:计算机语言分为低级语言、汇编语言和高级语言,c语言属于高级语言,但并不是说c语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;c语言出现于1972年到1973年问,并不是出现最晚的语言,所以选项D也是错误的。

  18)下列可用于c语言用户标识符的一组是_______。

  A)void define WORD B)a3_b3 _123 Car

  C)For -abc IFCase D)2a D0 sizeof

  18)B

  知识点:c语言的标识符

  评析:c语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,所以排除c和D。c语言还规定标识符不能为c语言的关键字,从而选项A是错误的,因为void为关键字。

  19)请选出正确的程序段________。

  A)int*p B)int*s,k;

  Scanf("%d",p); *s=100;

  ……

  C)int*s,k: D)int*s,k;

  Char*p,c; char*p,e;

  s=&k; s=&k;

  p=&c; p=&c;

  *p=‘a’; s=p;

  …… *s=l;

  ……

  19)C

  知识点:指针变量

  评析:本题的A和B犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量。也就是说,p中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D中,s是int指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变最s。

【最新计算机二级笔试题及答案】相关文章:

计算机二级模拟试题及答案03-22

计算机二级VFP试题及答案10-22

计算机二级《VFP》试题及答案03-11

计算机二级考试《Java》试题及答案03-30

计算机二级考试WEB试题及答案10-22

计算机二级模拟试题含答案10-23

计算机二级考试MySQL试题及答案10-23

计算机二级考试Java试题及答案12-04

计算机二级考试word试题及答案03-19