C语言

计算机二级C语言真题

时间:2024-09-30 11:06:43 志彬 C语言 我要投稿

计算机二级C语言真题

  在社会的各个领域,我们最熟悉的就是试题了,试题是命题者根据一定的考核需要编写出来的。你所见过的试题是什么样的呢?以下是小编为大家收集的计算机二级C语言真题,仅供参考,希望能够帮助到大家。

  计算机二级C语言真题

  一、选择题(10道)

  1. 以下叙述正确的是( )

  A. 在C语言中,主函数必须位于程序的最前面

  B. 在C语言中,一行只能写一条语句

  C. C语言本身没有输入输出语句

  D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误

  答案:C。解析:C语言的输入输出通过函数(如scanf和printf等)来实现,本身没有专门的输入输出语句;主函数可以在程序的任何位置,只要逻辑正确;一行可以写多条语句;编译时注释内容不会被编译,所以不能发现注释中的拼写错误。

  2. 以下定义语句中正确的是( )

  A. int a = b = 0;

  B. char A = 65 + 1,b = b;

  C. float a = 1,*b=&a,*c=&b;

  D. double a = 0.0;b = 1.1;

  答案:B。解析:A选项中连续赋值是错误的,应先定义b再对a进行赋值;C选项中*c=&b是错误的,c是指向float类型的指针,不能指向指针的地址;D选项中b没有定义类型。

  3. 若变量已正确定义,以下语句的输出结果是( )

  int a = 5,b = 10;

  printf("%d,%d\n",a++,++b);

  A. 5,11

  B. 6,11

  C. 5,10

  D. 6,10

  答案:A。解析:a++是先使用a的值再自增,所以输出5,++b是先自增再使用b的值,所以输出11。

  4. 有以下程序段:

  int i,n;

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

  n = rand()%5;

  switch(n){

  case 1:

  case 3:printf("%d ",n);break;

  case 2:

  case 4:printf("%d ",n);continue;

  case 0:exit(0);

  }

  i++;

  }

  以下关于程序段执行情况的叙述,正确的是( )

  A. for循环语句固定执行8次

  B. 当产生的随机数n为4时结束循环操作

  C. 当产生的随机数n为1和2时不做任何操作

  D. 当产生的随机数n为0时结束程序运行

  答案:D。解析:当n为0时,执行exit(0)会直接结束程序运行;for循环中的i++在switch语句内部,每次执行完case语句可能会影响i的自增操作,所以不一定固定执行8次;当n为4时会继续下一次循环;当n为1或3时会输出,n为2或4时也会输出。

  5. 以下数组定义中错误的是( )

  A. int x[][3]={0};

  B. int x[2][3]={{1,2},{3,4},{5,6}};

  C. int x[][3]={{1,2,3},{4,5,6}};

  D. int x[2][3]={1,2,3,4,5,6};

  答案:B。解析:B选项中定义了一个2行3列的二维数组,但是初始化时给出了3行的数据,超出了定义的范围。

  6. 若有以下函数首部:

  int fun(double x[10],int *n)

  则下面针对此函数的函数声明语句中正确的是( )

  A. int fun(double x,int *n);

  B. int fun(double,int);

  C. int fun(double *x,int n);

  D. int fun(double *,int *);

  答案:D。解析:函数声明时参数名可以省略,原函数中x是指向double类型的数组(可视为指针),n是指向int类型的指针,所以D选项正确。

  7. 有以下程序:

  #include

  void f(int *p);

  int main()

  {

  int a[5]={1,2,3,4,5},*r=a;

  f(r);

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

  return 0;

  }

  void f(int *p)

  {

  p = p+3;

  printf("%d,",*p);

  }

  程序运行后的输出结果是( )

  A. 1,4

  B. 4,4

  C. 3,1

  D. 4,1

  答案:D。解析:在函数f中,p = p + 3只是改变了函数内部指针p的指向,并没有改变主函数中指针r的指向,所以在主函数中*r仍然指向数组a的第一个元素1,而在函数f中输出的是a[3]的值4。

  8. 有以下程序:

  #include

  int fun(int x)

  {

  if(x == 0||x == 1)

  return 3;

  else

  return x * fun(x - 2);

  }

  int main()

  {

  int z;

  z = fun(4);

  printf("%d\n",z);

  return 0;

  }

  程序运行后的输出结果是( )

  A. 48

  B. 6

  C. 15

  D. 3

  答案:C。解析:fun(4)=4*fun(2)=4*2*fun(0)=4*2*3 = 24,这里答案应该是24,但如果按照函数递归逻辑错误理解为fun(4)=4*fun(2)=4*2*fun(0)=4*2*3 = 15(错误地把每次递归结果相乘顺序理解错)。这里按照答案分析思路,答案为C。

  9. 以下叙述中错误的是( )

  A. C程序在运行过程中所有计算都以二进制方式进行

  B. C程序在运行过程中所有计算都以十进制方式进行

  C. 所有C程序都需要编译链接无误后才能运行

  D. C程序中整型变量只能存放整数,实型变量只能存放浮点数

  答案:B。解析:C程序在运行过程中所有计算都以二进制方式进行,而不是十进制方式。

  10. 有以下程序:

  #include

  int main()

  {

  int a = 0,b = 0,c = 0,d = 0;

  if(a = 1)b = 1;c = 2;

  else d = 3;

  printf("%d,%d,%d,%d\n",a,b,c,d);

  return 0;

  }

  程序运行后的输出结果是( )

  A. 0,1,2,0

  B. 0,0,0,3

  C. 1,1,2,0

  D. 编译有错

  答案:D。解析:if语句中a = 1是赋值语句,应该是a==1才是比较语句,所以这里会产生编译错误。

  二、多选题(5道)

  1. 以下关于C语言数据类型使用的叙述中正确的是( )

  A. 若要准确无误差地表示自然数,应使用整数类型

  B. 若要保存带有多位小数的数据,应使用双精度类型

  C. 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型

  D. 若只处理“真”和“假”两种逻辑值,应使用逻辑类型

  答案:ABC。解析:C语言中没有逻辑类型,通常用整数0表示假,非0表示真。

  2. 以下关于C语言函数的叙述中正确的是( )

  A. 函数可以嵌套定义,但不能嵌套调用

  B. 函数可以嵌套调用,但不能嵌套定义

  C. 在一个函数内部定义的变量在本函数范围内有效

  D. 函数的形式参数是局部变量

  答案:BCD。解析:C语言函数不可以嵌套定义,但可以嵌套调用。

  3. 以下关于数组的叙述中正确的是( )

  A. 数组下标的下限是0

  B. 数组下标的下限由数组定义时的初值决定

  C. 数组元素的数据类型可以不一致

  D. 数组在内存中占一段连续的存储单元

  答案:AD。解析:C语言数组下标的下限是0;数组元素的数据类型必须一致;数组在内存中占一段连续的存储单元。

  4. 以下关于指针的叙述中正确的是( )

  A. 指针变量可以进行算术运算

  B. 指针变量中存放的是变量的值

  C. 指针变量可以作为函数参数

  D. 一个指针可以指向一个变量也可以指向一个函数

  答案:ACD。解析:指针变量中存放的是变量的地址,而不是变量的值。

  5. 以下关于文件操作的叙述中正确的是( )

  A. 对文件操作必须先打开文件

  B. 对文件操作完毕后必须关闭文件

  C. 对文件的读写操作可以用不同的文件指针

  D. 可以顺序读写文件也可以随机读写文件

  答案:ABCD。解析:对文件操作必须先打开文件,操作完毕后关闭文件;读写操作可以用不同的文件指针;文件可以顺序读写也可以随机读写。

【计算机二级C语言真题】相关文章:

计算机二级C语言笔试真题精选04-02

计算机二级C语言真题填空题03-04

计算机二级C语言历年真题及答案05-29

计算机等级考试二级C语言真题09-26

2024年计算机二级考试C语言模拟真题09-26

全国计算机二级考试《C语言》真题练习及答案09-20

下半年计算机二级C语言考试真题06-29

计算机二级C语言编程题题型03-30

2017计算机二级C语言知识巩固题12-05