培训考试

二级c语言上机题库

时间:2024-04-18 10:21:37 赛赛 培训考试 我要投稿
  • 相关推荐

2024二级c语言上机题库

  C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。全国计算机等级考试有二级c语言这个考试的项目。以下是小编整理的2024二级c语言上机题库,欢迎阅读。

  二级c语言上机题库 1

  一、选择题(每小题1分,共40小题,共40分)

  1.算法的空间复杂度是指( )。

  A.算法程序的长度

  B.算法程序中=的指令条数

  C.算法程序所占的存储空间

  D.算法执行过程中所需要的存储空间

  2.下列叙述中正确的是( )。

  A.一个逻辑数据结构只能有一种存储结构

  B.逻辑结构属于线性结构,存储结构属于非线性结构

  C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

  D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

  3.简单的交换排序方法是( )。

  A.快速排序

  B.选择排序

  C.堆排序

  D.冒泡排序

  4.关于结构化程序设计原则和方法的描述错误的是( )。

  A.选用的结构只准许有一个入口和一个出口

  B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

  C.不允许使用GOT0语句

  D.语言中若没有控制结构,应该采用前后一致的方法来模拟

  5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。

  A.可重用性差

  B.安全性差

  C.非持久性

  D.冗余性

  6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。

  A.模拟现实世界中不同事物之间的联系

  B.强调模拟现实世界中的算法而不强调概念

  C.使用现实世界的概念抽象地思考问题从而自然地解决问题

  D.不强调模拟现实世界中的算法而强调概念

  7.对如下二叉树进行后序遍历的结果为( )。

  A.ABCDEF

  B.DBEAFC

  C.ABDECF

  D.DEBFCA

  8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。

  A.模块间的关系

  B.系统结构部件转换成软件的过程描述

  C.软件层次结构

  D.软件开发过程

  9.两个或两个以上模块之间关联的紧密程度称为( )。

  A.耦合度

  B.内聚度

  C.复杂度

  D.数据传输特性

  10.下列描述错误的是( )。

  A.继承分为多重继承和单继承

  B.对象之间的通信靠传递消息来实现

  C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

  D.类是具有共同属性、共同方法的对象的集合

  11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。

  A.DB包含DBS和DBMS

  B.DBMS包含DB和DBS

  C.DBS包含DB和DBMS

  D.没有任何关系

  12.下列合法的声明语句是( )。

  A.int_abc=50;

  B.double int=3+5e2.5;

  C.long do=1L:

  D.float 3_asd=3e-3;

  13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。

  A.x&&Y

  B.x<=Y

  C.x‖y+z&&y-z

  D.!((x  14.若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。

  ch=’b’;

  k=10:

  printf("%X,%o,",ch,ch,k);

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

  A.因变量类型与格式描述符的类型不匹配,输出无定值

  B.输出项与格式描述符个数不符,输出为0值或不定值

  C.62,142,k一%d

  D.62,142,k一%l0

  15.有下列程序: 、

  fun(int X,int y){return(x+y);)

  main()

  { int a=1,b=2,c=3,sum;

  sum=fun((a++,b++,a+b),c++);

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

  }

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

  A.6

  B.7

  C.8

  D.9

  16.假定x和Y为double型,则表达式x=2,y—x+3/2的值是( )。

  A.3.500000

  B.3

  C.2.000000

  D.3.000000

  17.有如下程序:

  main()

  {int x=1,a=0,b=0;

  switch(x)

  {

  case 0:b++;

  case l:a++;

  case 2:a++;b++;

  )

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

  )

  该程序的输出结果是( )。

  A.a=2,b=1

  B.a=1,b=1

  C.a=1,b=0

  D.a=2,b=2

  18.下列程序的输出结果是( )。

  main()

  {int i=1,j=2,k=3;

  if(i++= =1&&(++j= =3= =‖k++= =3))

  printf("%d%d%d\n",i,J,k);

  )

  A.1 2 3

  B.2 3 4

  C.2 2 3

  D.2 3 3

  19.下列程序的输出结果是( )。

  #include

  main()

  { int a=0,i;

  for(i=1;i<5;i++)

  { switch(i)

  { case 0:

  case 3:a+=1;

  case l:

  case 2:a+=2;

  default:a+=3;

  )

  printf("%d",i);

  )

  A.19 B.1 C.6 D.8

  20.有以下程序:

  main()

  {int X,i;

  for(i=1;i<=50;i++)

  {x=i;

  if(X%2=O)

  if(x%3=O)

  if(X%7=0) .

  printf("%d,i)";

  )

  )

  输出结果是( )。

  A.28

  B.27

  C.42

  D.41

  21.以下程序的输出结果是( )。

  main()

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

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

  for(j=0;j<=i;j++)s+=a[i][j];

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

  }

  A.18

  B.19

  C.20

  D.21

  22.有下列程序:

  main()

  { int k=5;

  while(--k) printf("%d",k=1);

  printf("/n");

  )

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

  A.1

  B.2

  C.4

  D.死循环

  23.若有定义:“int a[2][3];”,则对a数组的第i行第J列元素的正确引用为( )。

  A.*(*(a+i)+j)

  B.(a+i)[j]

  C.*(a+i+j)

  D.*(a+i)+j

  24.下列能正确进行字符串赋值的是( )。

  A.char s[5]={"ABCDE"};

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

  C.char*S;S="ABCDE";

  D.char*s;printf("%《",s);

  25.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是( )。

  A.直接按系统设定的标准方式搜索目录

  B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

  C.仅仅搜索源程序所在目录

  D.仅仅搜索当前目录

  26.有下列程序:

  main()

  {int i,j,x=0;

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

  {x++;

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

  {if(j%2)continue;

  x++:

  )

  x++:

  }

  printf("x=%d\n"x);

  }

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

  A.x=4

  B.x=8

  C.x=6

  D.x=12

  27.有下列程序:

  int funl(double a){return a*=a;} 、

  int fun2(double x,double y)

  {double a=0,b=0;

  a=funl(x);b=funl(y);return(int)(a+b);

  )

  main()

  {double w;w=fun2(1.1,2.0),……}

  程序执行后变量w中的值是( )。 、

  A.5.21 B.5 C.5.0 D.0.0

  28.有下列程序:

  main()

  {int i,s=0,t[]={1,2,3,4,5,6,7,8,9};

  for(i=0;i<9;i+=2)s+=*(t+i);

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

  }

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

  A.45

  B.20

  C.25

  D.36

  29.有下列程序:

  int fun(int n)

  {if(n= =1))return l;

  else

  return(n+fun(n-1)):

  }

  main()

  { int x;

  seanf("%d",&x);x=fun(x);printf("%d\n",x);

  }

  执行程序时,给变量x输入l0,程序的输出结果是( )。

  A.55

  B.54

  C.65

  D.45

  30.有下列程序:

  int fun(int x[],int n)

  { static int sum=0,i;

  for(i=0;i   return sum;

  }

  main()

  {int a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;

  s=fun(a,5)+fun(b,4);printf("%d\n",s);

  程序执行后的输出结果是( )。 、

  A.45

  B.50

  C.60

  D.55

  31.有下列程序:

  main()

  f char*P[]={"3697","2584");

  int i,j;long num=0;

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

  {j=0;

  while(p[i][j]!=’\0’)

  {if((p[i][j]-t\0’)%2)num=10*num+p[j][j]-’0’;

  j+=2;

  )

  )

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

  )

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

  A.35 B.37 C.39 D.3975

  32.以下程序的输出结果是( )。

  main()

  { char st[20]="hell0\O\t\\\”;

  printf("%d%d\n",strlen(st),sizeof(st));

  }

  A.9 9

  B.5 20

  C.13 20

  D.20 20

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

  A.&t[3][2]

  B.t[3]

  C.t[l]

  D.t[2][2]

  34.函数fseek(pf,OL,SEEK_END)中的SEEK_END 代表的起始点是( )。

  A.文件开始

  B.文件末尾

  C.文件当前位置

  D.以上都不对

  35.下述程序的输出结果是( )。

  #include

  main()

  {int i;

  for(i=1;i<=10;i++)

  {if(i*i>=20)&&(i*i<=lOO))

  break;

  }

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

  )

  A.49

  B.36

  C.25

  D.64

  36.若有定义“int b[8],*p=b;”,则p+6表示( )。

  A.数组元素b[6]的值

  B.数组元素b[6]的地址

  C.数组元素b[7]的地址

  D.数组元素b[0]的值加上6

  37.设变量已正确定义,则以下能正确计算f=n!的程序是( )。

  A.f=0; for(i=1;i<=n;i++)f*=i;

  B.f=1;for(i=1;i  C.f=1;for(i=n;i>1;i++)f*=i;

  D.f=1;for(i=n;i>=2;i--)f*=i;

  38.下述程序执行的输出结果是( )。

  #include

  main()

  {char a[2][4]; ,strcpy(a。"are");strcpy(a[1],"you");

  a[o][3]=’&’;

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

  )

  A.are&you

  B.you

  C.are

  D.&

  39.设x=011050,则x=x&01252的值是( )。

  A.0000001000101000

  B.1111110100011001

  C.0000001011100010

  D.1100000000101000

  二、基本操作题(共18分)

  请补充函数proc(),该函数的功能是计算下面公式SN的值:

  SN=1+1/3十4/5+...+2N-1/SN-1

  例如,当N=20时,SN=29.031674。

  注意:部分源程序给出如下。

  请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

  试题程序:

  #include

  #include

  #include

  double proc(int n)

  {

  double s=1.0,sl=0.0;

  int k;

  for(【1】;k<=n;k++)

  {

  sl=S;

  【2】

  }

  return 【3】 ;

  )

  void main()

  {

  int k=0:

  double sum;

  system("CLS");

  printf("\nPlease input N=");

  scanf("%d",&k);

  sum=proc(k);

  printf("\nS=%If",sum);

  )

  三、程序改错题(共24分)

  下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:

  Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

  例如,n中的值为l0,则应输出0.817962。

  请修改程序中的错误,使它能得到正确结果。

  注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

  试题程序:

  #include

  #include

  #include

  double proc(int n)

  {

  double y=1.0;

  f|****found****

  int J=1; .

  int i;

  for(i=2;i<=n;i++)

  {

  j=-l*j;//****found****

  y+=1/(i*i);

  )

  return(y);

  )

  void main()

  {

  int n=10:

  system("CLS"):

  printf("\nThe result is%lf\n",proc(n));

  )

  四、程序设计题(共18分)

  编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

  注意:部分源程序给出如下。

  请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。

  试题程序:

  #include

  #include

  #include

  char*proc(*a)[81],int num)

  {

  )

  void main()

  {

  char ss[l0][81],*max;

  int n,i=0;

  printf("输入若干个字符串:");

  gets(ss[i]);

  puts(ss[i]);

  while(!strcmp(ss[i],"****")= =0)

  {

  i++:

  gets(ssEi]);

  puts(ss[i]);

  )

  n=i:

  max=proe(SS,n);

  printf("\nmax=%s\n",max);

  }

  参考答案及专家详解

  一、选择题

  1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。

  2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

  3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。

  4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。其他三项为结构化程序设计的原则。

  5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

  6.C。【解析】面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

  7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。

  8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。

  9.A。【解析】模块的.独立性是指每个模块保证完成系统要求的独立功能,并且与其他模块的联系少且接口简单。衡量软件的模块独立性有内聚性和耦合性两个定性度量标准。耦合性是模块间互相连接紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,以利于提高模块的独立性。

  10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

  11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中DB(DataBase)即数据库,是统一管理的相关数据的集合DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。

  12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项d0是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

  13.D。【解析】本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑l时,表达式返回值才是1;“‖”的两个运算对象至少有一个是逻辑1时,表达式返回值也是l,x  14.C。【解析】第l个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%o”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或o);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

  15.C。【解析】函数fun(int x,int y)的功能是返回x+Y的值。在主函数中,变量a,b,c的初始值分别为 1,2,3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

  16.D。【解析】在x=2,y=x+3/2中,3/2=1,2+1=3,因此表达式的值为3,因为X,y为double型变量,故选择D选项。

  17.A。【解析】当X为1时,执行case l,a自加等于l,因为case l后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。

  18.D。【解析】本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”出现在变量之前,表示先使用变量的值加1,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“‖”只要一个值为1,值就为l。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为l;1与任何数都为进行或(1 1)运算,结果都为1,因此k一3的表达式i++是先运算后自加,因此运算时i为 1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

  19.A。【解析】本题考查switch语句。当i=1时,执行case l,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行的default,a=a+3=l9,结束循环。

  20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。

  21.A。【解析】循环的作用是求行下标从l到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。

  22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减l为4,非0,执行循环体里的printf语句,输出k,此时k的值变为l。程序执行第2次循环时,k自减l变为0,为假,退出while循环语句。所以程序的最后结果为l。

  23.A。【解析】通过地址来引用数组元素的方法有下列5种:

  (1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+j);(4)*(a[i][j]);(5)(&a[o][0]+3*i+j)。故A正确。

  24.C。【解析】选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出 字符,不能输入字符串。

  25.D。【解析】由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next:r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

  26.B。【解析】在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加l两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

  27.C。【解析】子函数funl(double a)的功能是返回a的平方值的整数部分。子函数fun2(double X, double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量W的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.0。

  28.c。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是l+3+5+7+9=25,即变量S的值等于25。

  29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用的过程为

  fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)

  =10+9++8+7+fun(6)=10+9++8+7+6+fun(6)

  =10+9++8+7+6+5+fun(4)

  =10+9++8+7+6+5+4+fun(3)

  =10+9++8+7+6+5+4+3+fun(2)

  =10+9++8+7+6+5+4+3+2+fun(1)

  =10+9++8+7+6+5+4+3+2=55

  30.C。【解析】在函数int fun(int x[],int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数int fun(int x[],int n)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

  31.D。【解析】执行第一次for循环时,用表达式p[i][J]!=’\o’来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-’\o’)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

  32.B。【解析】从题目中可知,’\O’、’\t’、’\\’分别为一个字符,而sizeof是求字节个数的函数,其中包括’\O’占的字节,strlen函数是求数组长度的函数;其以’\0’结束,因此strlen的值为5,sizeof的值为20。

  33.C。【解析】数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项c中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。

  34.B。【解析]SEEK_SET代表文件的开始,SEEK_END 代表文件末尾,SEEK_CUR代表文件当前位置。

  35.C。【解析】当if执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下面的prinlf语句。

  36.B。【解析】指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中p+6指的是将指针向后移动了6个存储单元,即指向b[6],存放的是b[6]的地址。

  37.D。【解析】由n!的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以l,2,3,…,n,最后计算得到f=n!=0,所以选项A不正确。在选项B中,f的初值为l,在for循环语句中,f依次乘以l,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

  38.A。【解析]strcpy实现的功能是复制,该操作把are复制到a中,aE03 E33一’&’,且strcpy(aEl], "you")把you复制到a[l]中,故输出a为“are&you”。

  39.A。【解析】本题主要考查按位与运算,x=Oll050的二进制形式为00010010000101000,Ol252的二进制形式为0000001010101010,两者相与得0000001000101000。

  40.B。【解析】#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。

  二、基本操作题程序填空题

  【1】k=2【2】s+=(2*k一1)/sl【3】s

  【解析】由题目中所给公式可知,多项武的第一项为1。变量s中存放多项式的和,其初始值为l。因此,循环从第二项开始,因此,【1】处填“k=2”;变量sl中存放各项表达武的值,由公式可知,【2】处填“s+=(2*k-1)/sl”;题目中要求将多项式的和返回到主函数当中,因此,【3】处填“s”。

  三、程序改错题

  (1)错误:int j=1;正确:double j=1.0;

  (2)错误:y+=1/(i*i); 正确:y+=j/(i*i);

  【解析】由函数proc()可知,变量j的作用是控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此,“int j=1;”应改为“double j=1.0;”。变量y中存放多项式的值,多项式中的每一项符号由变量j决定。因此,“y+=1/(i*i);”应改为“y+=j/(i*i);”。

  四、程序设计题

  char*proc(*a)[81],int M)

  {

  char*max;

  int i=0:

  max=a[O]:

  for(i=0;i  if(strlen(max)  max=a[i];

  return max; //返回最长字符串的地址

  }

  【解析】本题首先要定义一个字符指针用于保存最长的字符串,并使其初始值指向第一个字符串;再循环遍历字符串数组,通过if语句比较字符串的长度,并把最长的字符串地址赋给字符指针;最后返回最长字符串的地址。

  二级c语言上机题库 2

  (1)算法的时间复杂度是指_______。

  A)执行算法程序所需要的时间

  B)算法程序的长度

  C)算法执行过程中所需要的基本运算次数

  D)算法程序中的指令条数

  答案:C

  评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

  (2)下列叙述中正确的是________。

  A)线性表是线性结构B)栈与队列是非线性结构

  C)线性链表是非线性结构D)二叉树是线性结构

  答案:A

  评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

  (3)下面关于完全二叉树的叙述中,错误的是_________。

  A)除了最后一层外,每一层上的结点数均达到最大值

  B)可能缺少若干个左右叶子结点

  C)完全二叉树一般不是满二叉树

  D)具有结点的完全二叉树的深度为[log2n]+1

  答案:B

  评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。

  C语言笔试题答案篇

  (1)结构化程序设计主要强调的是_________。

  A)程序的规模B)程序的易读性

  C)程序的执行效率D)程序的可移植性

  答案:B

  评析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。

  (2)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是________。

  A)概要设计B)详细设计C)可行性分析D)需求分析

  答案:D

  评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。

  (3)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_________。

  A)控制流B)加工C)数据存储D)源和潭

  答案:A

  评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

  (4)软件需求分析一般应确定的是用户对软件的__________。

  A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求

  答案:D

  评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的`功能需求和非功能需求。

  C语言笔试题答案篇

  (1)下述关于数据库系统的叙述中正确的是________。

  A)数据库系统减少了数据冗余

  B)数据库系统避免了一切冗余

  C)数据库系统中数据的一致性是指数据类型的一致

  D)数据库系统比文件系统能管理更多的数据

  答案:A

  评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

  (2)关系表中的每一横行称为一个________。

  A)元组B)字段C)属性D)码

  答案:A

  评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。

  (3)数据库设计包括两个方面的设计内容,它们是________。

  A)概念设计和逻辑设计B)模式设计和内模式设计

  C)内模式设计和物理设计D)结构特性设计和行为特性设计

  答案:A

  评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。

  (4)请读程序:

  #include

  main

  {

  int a;float b,c;

  scanf(“%2d%3P%4f’,&a,&b,&C);

  printf(” a=%d,b=%ec。%f ”,a,b,C);

  }

  若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。

  A)a=98,b=765,c=432 1

  B)a=1 0,b=432,c=8765

  C)a=98,b=765.000000,c=432 1.000000

  D)a=98,b=765.0,c=432 1.0

  答案:C

  评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

  (5)一个良好的算法由下面的基本结构组成,但不包括__________。

  A)顺序结构B)选择结构C)循环结构D)跳转结构

  答案:D

  评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。

  (6)请选出以下程序的输出结果________。

  #include

  sub(x,y,z)

  int x,y,星符号z:

  {星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。

  (7)下面程序在屏幕上的输出是________。

  main

  {

  printf(”ab c”);

  }

  A)ab c B)a c C)abc D)ab c

  答案:B

  评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:,换行;,水平制表;,退格;,回车。

  (8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。

  A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。

  (10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元

  int星符号int) D)(int星符号)

  答案:D

  评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。

  (11)下面程序输出的结果是__________。

  main

  {

  int i=5,J=9,x;

  x=(I==j?i:(j=7));

  printf(” %d,%d”,I,J);

  }

  A)5,7 B)5,5 C)语法错误D)7,5

  答案:A

  评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。

【二级c语言上机题库】相关文章:

2016年9月计算机二级《C++》上机题库及答案03-10

2017计算机二级C语言上机最终预测题12-11

计算机二级VF上机题库及答案03-19

计算机二级《C语言》选择题题库及答案11-16

计算机二级C语言上机编程题详细分析11-08

2017计算机二级C语言上机测试题附答案03-30

2016年计算机二级C语言上机考试技巧03-13

2016年9月计算机二级《C语言》上机试题及答案03-11

2015计算机二级C语言考试上机考试题及答案03-12

2016年计算机二级《C语言》选择题题库与解析11-28