首页 > 高考 >

2015年下半年计算机二级考试C语言模拟试题及答案(四)

2020-10-16 11:27:02

  一、选择题

  1.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是(B)。

  A、一个存储区,存放要读的数据项

  B、一个指针,指向要读入数据的存放地址

  C、一个文件指针,指向要读的文件

  D、一个整数,代表要读入的数据项总数

  2.结构体类型的定义允许嵌套是指(A)。

  A、成员是已经或正在定义的结构体型

  B、定义多个结构体型

  C、成员可以重名

  D、结构体型可以派生

  3.对结构体类型的变量的成员的访问,无论数据类型如何都可使用

  的运算符是(B)。

  A、&

  B、.

  C、*

  D、->

  4.若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是(D)。

  A、&t[1]

  B、t[3]

  C、&t[3][2]

  D、t[2]

  5.若有说明:int *p,m=5,n;以下正确的程序段是(D)。

  A、scanf("%d",&n);*p=n;

  B、p=&n;scanf("%d",*p)

  C、p=&n;scanf("%d",&p);

  D、p=&n;*p=m;

  6.若定义:int a=511,*b=&a;, 则printf("%dn",*b);的输出结果为(D)。

  A、无确定值

  B、a的地址

  C、512

  D、511

  7.下列说法中正确的是(B ).

  A、函数调用不占运行时间,只占编译时间.

  B、宏替换不占运行时间,只占编译时间.

  C、有参数的宏定义,就是函数.

  D、在定义宏时,宏名与带参数的括弧之间可以加空格.

  C语言程序中,若对函数类型未加声明,则函数的类型系统默认为(C)。

  A、void

  B、double

  C、int

  D、char

  8.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(A)。

  A、函数调用可以作为一个函数的形参

  B、函数调用可以作为一个函数的实参

  C、函数调用可以作为独立的语句存在

  D、函数调用可以出现在表达式中

  9.对于void类型函数,调用时不可作为(B)。

  A、循环体里的语句

  B、表达式

  C、if语句的成分语句

  D、自定义函数体中的语句

  10.C语言规定,函数返回值的类型是由(A)。

  A、在定义该函数时所指定的函数类型所决定

  B、return语句中的表达式类型所决定

  C、调用该函数时系统临时决定

  D、调用该函数时的主调函数类型所决定

  11.以下定义语句中,错误的是(A)。

  A、int n=5,a[n];

  B、int a[]={1,2};

  C、char s[10]="test";

  D、char *a[3];

  12.以下不能对二维数组a进行正确初始化的语句是(A)。

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

  B、int a[][3]={{1,2},{0}};

  C、int a[2][3]={0};

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

  13.在C语言中,引用数组元素时,其数组下标的数据类型允许是(B)。

  A、整型常量

  B、整型常量或整型表达式

  C、整型表达式

  D、任何类型的表达式

  14.int a[10];合法的数组元素的最小下标值为(D)。

  A、10

  B、9

  C、1

  D、0

  15.下列数组说明中,正确的是(B)。

  A、int array[][];

  B、int array[][4];

  C、int array[3][];

  D、int array[][][5];

  16.以下正确的描述是(A ).

  A、只能用continue语句来终止本次循环

  B、switch语句中不能出现continue语句

  C、在循环中break语句不能独立出现

  D、goto语句只能用于退出多层循环

  17.针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是(B ).

  A、break语句可以一次性跳出多层嵌套循环

  B、break语句只能跳出最内层循环

  C、continue语句可以一次性跳出多层嵌套循环

  D、continue语句不能跳出最外层循环

  18.下面程序正确的运行结果是(B ).(答案中用大写字母U代表空格)

  main()

  {

  int num=0;

  while(num<=2)

  {

  num++;

  printf("=",num);

  }

  }

  A、UU1

  B、UU1UU2UU3

  C、UU1UU2UU3UU4

  D、UU1UU2

  19.以下程序的执行结果是(B )。

  main()

  { int num = 0;

  while( num <= 2 ) { num++; printf( "%d,",num ); } }

  A、0,1,2

  B、1,2,3,

  C、1,2,3,4,

  D、1,2,

  20.C语言中,switch后的括号内表达式的值可以是( C)。

  A、只能为整型和字符型

  B、只能为整型

  C、任何类型

  D、只能为整型,字符型,枚举型

  21.下列运算符中,不属于关系运算符的是(C)。

  A、>=

  B、>

  C、!

  D、<

  22.下面说法不正确的是:(C )。

  A、a为真b为假,则a&&b为假

  B、a为真b为假,!a&&b为假

  C、a为真b为假,则a||b为假

  D、a为真,!a-1为真

  23.以下运算符中,优先级最高的运算符是(D)。

  A、==

  B、||

  C、%

  D、!

  24.已知键盘输入a=4,b=3,下面程序输出的结果是( C).

  main()

  { int a,b,s;

  scanf("%d%d",&a,&b);

  s=a;

  if(a   s=s*s;

  printf("%dn",s);

  }

  A、9

  B、13

  C、16

  D、15

  25.为表示关系x>=y>=z,应使用C语言表达式为:( A)

  A、(x>=y)&&(y>=z)

  B、(x>=y)&(y>=z)

  C、(x>=y)AND(y>=z)

  D、(x>=y>=z)

  26.已定义float a; int i;选择正确的输入语句(C ).

  A、scanf("%6.2f=", &a,&i);

  B、scanf("%f%s", &a,&i);

  C、scanf("o=",&a,&i);

  D、scanf("%f%d", a,i);

  27.根据下面的程序,正确的输出形式是(A );

  main()

  {

  int i=5,j=10;

  printf ("i=%d,", i);

  printf ("j=%d ", j);

  }

  A、i=5, j=10

  B、10,5

  C、5,10

  D、i=5Uj=10

  28.若有以下程序:

  main()

  {

  int k=2,i=2,m;

  m=(k+=i*=k);

  printf("%d,%dn",m,i);

  }

  29执行后的输出结果是(D )。

  A、8,3

  B、7,4

  C、8,6

  D、6,4

  30下列字符序列中,不可用作C语言标识符的是(C)。

  A、b70

  B、a_1

  C、#ab

  D、symbol

  31设C语言中,int类型数据占2个字节,则unsigned类型数据占(C)。

  A、1个字节

  B、8个字节

  C、2个字节

  D、4个字节

  32已知f是float型的变量,对于语句f=(2.0,1.0,0.0),(3.0,4.0,5.0);的判断中,正确的是(B ).

  A、使 f 的值为5.000000

  B、使 f 的值为0.000000

  C、使 f 的值为2.000000

  D、语法错误

  33执行下列语句后变量x和y的值是(A)。

  y=10;x=y++;

  A、x=10,y=11

  B、x=11,y=11

  C、x=11,y=10

  D、x=10,y=10

  34设有说明:char c; int x; double z;则表达式c*x+z值的数据类型为( C)。

  A、char

  B、int

  C、double

  D、float

  35以下数据中,不正确的数值或字符常量是(D)。

  A、82.5

  B、0xff00

  C、10

  D、8.9e1.2

  36若int a=2,则执行完表达式a-=a+=a*a后,a的值是(C )。

  A、-4

  B、-8

  C、0

  D、-2

  37以下运算符中,优先级最高的运算符是(C)。

  A、!=

  B、*(乘号)

  C、( )

  D、=

  38下列数据中,为字符串常量的是(D)。

  A、A

  B、How do you do.

  C、$abc

  D、"house"

  39以下标识符中,不能作为合法的C用户定义标识符的是(D)。

  A、INT

  B、_123

  C、_double

  D、putchar

  40经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在

  微机上的值分别为(D)。

  char x=65;

  float y=7.3;

  int a=100;

  double b=4.5;

  A、1,2,2,4

  B、2,4,2,8

  C、2,2,2,4

  D、1,4,2,8

  41以下标识符中,不能作为合法的C用户定义标识符的是(B)。

  A、a3_b3

  B、void

  C、_123

  D、IF

  42能将高级语言编写的源程序转换为目标程序的是(A)。

  A、编译程序

  B、链接程序

  C、解释程序

  D、编辑程序

  43C语言的注释定界符是(D)。

  A、[ ]

  B、{ }

  C、* *

  D、/* */

  44C语言源程序的基本单位是(B)。

  A、子程序

  B、函数

  C、标识符

  D、过程

  45在下列程序段中,枚举变量c1,c2的值依次是(A)。

  enum color {red,yellow,blue=4,green,white} c1,c2;

  c1=yellow;c2=white;

  printf("%d,%dn",c1,c2);

  A、1,6

  B、2,5

  C、2,6

  D、1,4

  46定义int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,其中0≤i≤9,则对a数组元素的引用不正确的是____.C

  A、p[i]

  B、a[p-a]

  C、*(*(a+i))

  D、*(&a[i])

  47执行下面程序段后,ch的值是:____D

  char ch=’Z’;

  ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch;

  A、A

  B、Z

  C、a

  D、z

  48能正确进行字符串赋值操作的语句是_____ .A

  A、char *s; scanf("%s",s);

  B、char *s; s=’ABCDEF’;

  C、char s[5]={"ABCDE"};

  D、char s[5]={’A’,’B’,’C’,’D’,’E’};

  49按照C语言规定,程序中各函数之间,以下叙述不正确的是______.B

  A、主函数可以调用其它任何函数.

  B、允许嵌套定义.

  C、允许递归调用.

  D、允许嵌套调用.

  50.已经有prt( )函数的定义,假设以下各程序中对函数的说明是正确的,

  以下程序段中有语法错误的是( D ).

  A、main() { int k; void prt( );…prt(’A’);…}

  B、main() { int k; int prt( );…k=prt(’A’);…}

  C、main() { int k; char prt( );…k=k+prt(65);…}

  D、main(){ int k; void prt( );…k=prt(’A’);…}


  二、填空题

  1.C语言中,___ 函数__是程序的基本组成部分.

  2.已知x=3,y=2,则表达式x*=y+8的值为__ 30___.

  3.表达式 i++ 相当于表达式_ i=i+1 i=1+i____.

  4.写出语句 b=(a=6,a*3); 执行后整型变量b的值是__ 18 ___.

  5.设x=4<4-!0,x的值为__ 0___.

  6.getchar()函数只能接收一个___字符__.

  7.设x=(5>1)+2,x的值 为_ 3____.

  8.为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的__ If ___语句配对.

  9.若所用变量均已正确定义,则执行下面程序段执行后,输出的值是_ YESYESYES ____. for(i=0 ; i<2 ; i++ ) printf("YES"); printf("YES");

  10.求字符串长度的库函数是__ strlen ___,只写函数名即可.

  11.若有定义:char s[ ]="china"; 则C编译系统为数组s开辟__ 6___个字节的内存单元.

  12.C语言中,二维数组在内存中的存放方式为按_行 ____优先存放.

  13.如果函数不要求返回值,可用__ Void ___来定义函数为空类型.

  14.函数调用时的实参和形参之间的数据是单向的__值___传递.

  15.设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的 二进制数是_ 11110000____.

  三、 程序题

  1./***********ERROR***********/

  /***********ERROR***********/

  从键盘输入数n(=34)后,输出它的因子之和(34=1*2*17)。

  main()

  { int n,i=2;

  scanf("%d",&n);

  printf("34=1");

  l: if(n/i==0)

  {n=n/i; printf("*%d", i); }

  else i++;

  if(n==1)

  goto l;

  【参考答案】

  l: if(n%i==0)

  l:if(n%i==0)

  2【程序改错】

  --------------------------------------------------------

  题目:改正以下程序的函数体中不正确的语句。

  --------------------------------------------------------

  注意:不可以增加或删除程序行,也不可以更改程序的结构。

  ------------------------------------------------------*/

  #include "stdio.h"

  main()

  {

  /**********ERROR**********/

  int v=90000;

  int a,b=9;

  double x=1.45,y;

  x=x/4;

  /**********ERROR**********/

  y=float(v);

  y=y+x+5.2;

  a+=a-=(b=4)*(a=3);

  【参考答案】

  long int v=90000;

  long v=90000;

  3【程序改错】

  --------------------------------------------------------

  功能:读取7个数(1-50)的整数值,每读取一个值,程序打印

  出该值个数的*。

  ------------------------------------------------------*/

  #include "stdio.h"

  main()

  {

  int i,a,n=1;

  /**********ERROR**********/

  while(n<7)

  {

  do

  {

  scanf("%d",&a);

  }

  /**********ERROR**********/

  while(a<1&&a>50);

  /**********ERROR**********/

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

  printf("*");

  printf("n");

  n++;

  }

  }

  【参考答案】

  while(n<=7)

  while(n<8)

  }

  程序填空

  1.等比数列第一项a=3.5,公比k=1.7,求满足前n项和小于100的最大n。

  #include "stdio.h"

  main()

  { float a=3.5,k=1.7,sum=0; int n=0;

  do

  {

  _____

  n++;

  a=a*k;

  }while(_____);

  printf("%7.3f,%d",su

  【参考答案】

  sum=sum+a;

  sum=a+sum;

  sum+=a;

  【参考答案】

  sum<100

  2.【程序填空】

  ---------------------------------------------------------

  题目:本程序用getchar函数输入一个字符给变量s,完善程序。

  -------------------------------------------------------*/

  #include“stdio.h”

  main()

  {

  char s;

  /***********FILL***********/

  _____

  putchar(s);

  }

  【参考答案】

  s=getchar();

  /*-------------------------------------------------------

  3.【程序填空】

  ---------------------------------------------------------

  题目:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最

  低成绩,当输入负数结束。请填空。

  -------------------------------------------------------*/

  #include "stdio.h"

  main()

  {

  float x,amax,amin;

  scanf("%f",&x);

  amax=x; amin=x;

  /***********FILL***********/

  while(_____)

  {

  /***********FILL***********/

  if(_____)amax=x;

  if(x   scanf("%f",&x);

  }

  printf("amax=%f,amin=%fn",amax,amin)

  }

  【参考答案】

  x>=0

  x>=0.0

  【参考答案】

  x>amax

  x>=amax

  /*-------------------------------------------------------

  4.【程序填空】

  ---------------------------------------------------------

  题目:以每行4个数据的形式输出数组a。

  -------------------------------------------------------*/

  #include "stdio.h"

  #define N 20

  main()

  {

  int a[N],i;

  /***********FILL***********/

  for(i=0;_____;i++)

  {

  /***********FILL***********/

  if(i%4==0) _____

  printf("=",a[i]);

  }

  }

  【参考答案】

  i  【参考答案】

  printf("n");

考试第一网 Copyright © 2020

本站所有信息整理自互联网,如果侵犯了您的权力,请联系我们删除(cqmuci023@foxmail.com)。