百度
360搜索
搜狗搜索

计算机二级c语言题库真题,计算机等级二级C语言模拟试题1(十)详细介绍

本文目录一览: 计算机等级二级C语言模拟试题1(八)

一、选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分)
   下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
   (1)数据结构中,与所使用的计算机无关的是数据的________。
   A)存储结构   B)物理结构      C)逻辑结构     D)物理和存储结构
   答案:C
   评析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
   (2)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,
   则出栈序列可能是________。
   A)ABCED     B)DBCEA       C)CDABE       D)DCBEA
   答案:D
   评析:栈操作原则上"后进先出",栈底至栈顶依次存放元素A、B、c、D,则表明这4个元素中D是最后进栈,B、c处于中间,A最早进栈。所以出栈时一定是先出D,再出c,最后出A。
   (3)线性表的顺序存储结构和线性表的链式存储结构分别是________。
   A)顺序存取的存储结构、随机存取的存储结构
   B)随机存取的存储结构、顺序存取的存储结构
   C)随机存取的存储结构、随机存取的存储结构
   D)任意存取的存储结构、任意存取的存储结构
   答案:B
   评析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)。LOC(a1) (i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。
   (4)在单链表中,增加头结点的目的是________。
   A)方便运算的实现          B)使单链表至少有一个结点
   C)标识表结点中首结点的位置     D)说明单链表是线性表的链式存储实现
   答案:A
   评析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。
   (5)软件 设计 包括软件的结构、数据接口和过程设计,其中软件的过程设计是指________。
   A)模块间的关系            B)系统结构部件转换成软件的过程描述
   C)软件层次结构            D)软件开发过程
   答案:B
   评析:软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和 操作系统 之间及软件与人之间如何 通信 ;过程设计则是把系统结构部件转换成软件的过程性描述。
   (6)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程  图,通常也把这种图称为________。
   A)PAD图    B)N-S图       C)结构图       D)数据流图
   答案:B
   评析:常见的过程设计工具有:程序流程图、N-S图、PAD图和HIPO图。其中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为N-S图。
   (7)数据处理的最小单位是________。
   A)数据     B)数据元素      C)数据项      D)数据结构
   答案:C
   评析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。
   (8)下列有关数据库的描述,正确的是________。
   A)数据库是一个DBF文件       B)数据库是一个关系
   C)数据库是一个结构化的数据集合   D)数据库是一组文件
   答案:C
   评析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有"集成"、"共享"之特点。
   (9)单个用户使用的数据视图的描述称为 ______ 。
   A)外模式    B)概念模式     C)内模式      D)逻辑模式
   答案:A
   评析:外模式是用户的数据视图,也就是用户所见到的数据模式;全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;存储模式即为内模式。
   (10)需求分析阶段的任务是确定______。
   A)软件开发方法  B)软件开发工具  C)软件开发费用    D)软件系统功能
   答案:D
   评析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
   (11)若变量a是int类型,并执行了语句:a='A' 1.6;,则正确叙述是______。
   A)a的值是字符C           B)a的值是浮点型
   C)不允许字符型和浮点型相加     D)a的值是字符'A'的ASCII值加上l
   答案:D
   评析:在赋值表达式中,赋值符右边的值的类型会自动转换成赋值符左边的变量的类型。在本题中,先用"A"的ASCII码值加上1.46得到66.46,然后将它强制转换成int型,转换后,实数的小数部分全部
   (12)若以下选项中变量已正确定义,则正确的赋值语句是______。
   A)x1=26.8%3;  B)1 2=x2;   C)x3=0x12;     D)x4=1 2=3;
   答案:C
   评析:赋值符号"="就是赋值运算符,它的作用是将一个数据赋给一个变量。如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换,所以选项A错误。在赋值表达式中,赋值运算符的左侧必须是一个变量,所以选项B、D错误。选项C是将一个十六进制数赋值给变量x3。
   (13)以下程序段的输出结果是______。
   int a=1234;
   printf("%2d\n",a);
   A)12       B)34        C)1234       D)提示出错、无结果
   答案:C
   评析:本题主要考查对primf函数域宽描述符的理解,在这里我们要特别注意:输出数据的实际精度并不主要决定于格式项中的域宽与精度,也不决定于输入的数据精度,而主要决定于数据在机器内的存储精度。
   (14)以下选项中不属于C语言的类型的是______。
   A)signed short int         B)unsigned char
   C)signed long            D)long short
   答案:D
   评析:c语言中归纳起来,基本类型数据有以下几种:
   [signed]char;unsigned char;[signed]short[int];unsigned short[int];[signed]long[int];unsigned long[int];float;double.
   (15)设有定义:int a,*pa=&a;以下scanf语句能正确为变量a读入数据的是______。
   A)scanf("%d",B);         B)scanf("%d",a);
   C)scanf("%d",&pa);        D)scanf("%d",*pa);
   答案:C
   评析:scanf函数要求其中的输入项必须是地址形式,比如:普通变量的地址、数组名、指针变量等。对于普通变量,地址形式为:&变量名;当一个普通变量的地址赋予了一个指针变量名,scanf函数的输入项处就可以直接写这个指针变量名。
   (16)以下程序的输出结果是______。
   main()
   {int a=5,b=4,c=6,d;
   printf("%d\n",d=a>c?(a>c?a:C):(b));
   }
   A)5       B)4         C)6        D)不确定
   答案:B
   评析:本题最重要的分析d=a>c?(a>c?a:C):(b)),首先运算括号内的式子a>c?a:c,它的值是c的值6,即式子化成d=a>c?6:4。显然a=c,所以将4赋给d。
   (17)以下程序中,while循环的循环次数是______ 。
   main()
   { int i=0:
   while(i<10)
   {if(i<1)continue;
   if(i==5)break;
   i :
   }
   ……
   }
   A)1       B)10        C)6        D)死循环,不能确定次数
   答案:D
   评析:进入循环后,先执行一个条件语句,如果i的值小于l,那么直接进入下一轮循环,因为i的初始值是0,小于l,故直接进入下一轮循环,又因为i的值始终没有改变,所以这个循环成了死循环。
   (18)有以下程序:
   main()
   {
   char k;int i;
   for(i=1;i<3;i )
   {
   scanf("%c",&k);
   switch(k)
   {
   case'0':printf["another\n"];
   case'1':printf["number\n");
   }
   }
   }
   程序运行时,从键盘输入:0l回车>,程序执行后输出结果是______。
   A)another   B)another      C)another      D)number
   number      number        number       number
   another       number
   答案:C
   评析:switch语句是多分支选择语句,执行完一个case后面的语句后,流程控制转移到下一个case继续执行。"case常量表达式"只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断
   (19)以下程序的输出结果是______。
   main()
   {Int a=O,i;
   for(i=1;i<5;i )
   {switch(i)
   { case 0:
   case 3:a =2:
   case l:
   case 2:a =3:
   default:a =5;
   }
   }
   printf("%d\n",a)
   }
   A)3l       B)13        C)10         D)20
   答案:A
   评析:switch结构的执行过程同上题。
   (20)己定义c为字符型常量,则下列语句中正确的是______。
   A)C='97'    B)c="97"     C)c=97        D)c="a"
   答案:C
   评析:字符变量占内存一个字节,只能放一个字符;字符常量为单引号括起的单个字符;字符串常量为双引号括起的一串字符(可以0个字符,即"",称为空串)。选项c为字符ASCII码的整数形式。
   (21)以下程序的输出结果是_________。
   main()
   f int a=4,b=5,c=0,d;
   d=!a&&!b||!c;
   printf("%d\n",d);
   }
   A)l       B)0         C)非0的数     D)-1
   答案:A
   评析:!a值为0,故!a&&!b的值为0,!c的值为l,而0IIl的值应该是l。所以答案是A。
   (22)以下程序的输出结果是_________。
   #include
   main()
   {int i=0,a=0;
   while(i<20)
   {for(;;)
   {if((i%10)==0)break;
   else  I--:
   }
   i =ll;a =i;
   }
   printf("%d\n",a);
   }
   A)21      B)32        C)33        D)11
   答案:B
   评析:本题中,有两个循环语句。首先,i=0,进入while循环,for语句中对循环没有任何条件,故直接进入for循环,因为0%10结果还是O,所以跳出for循环,执行i :11,i的值变为11,执行a =i,a的值变为11:接着进入下一轮while循环,在for循环中,因为i的值是11,对10取余结果为l,所以执行i自减,i的值变成10,进入又一轮for循环,因为10%10==0,所以跳出for循环,执行i =1l,i的值变成21,执行a =i,也就是将21 1 1的和赋给a,a=32,因为此时i的值不再小于20,所以结束循环,
   故输出结果是32。
   (23)有以下程序:
   int n(int x,int y)
   {retum x>y?x:y;}
   Int f2(int x,int y)
   {return x>y?y:x;)
   main()
   { int a=4,b=3,c=5,d,e,f;
   d=f1(a,b);d=fl(d,C);
   e=f2(a,b);e=f2(e,C);
   f=a b C-d-e;
   printf("%d,%d,%d\n",d,e,f);
   }
   程序运行后的输出结果是_________ 。
   A)3,4,5    B)5,3,4      C)5,4,3       D)3,5,4
   答案:B
   评析:函数n是一个求两个整数中值的函数,函数f2是一个求两个整数中最小值的函数。在main函数中两次调用函数n,求得变量a、b、、c中的值赋值给d;两次调用函数f2,求得变量a、b、c中的最小值赋值给e;表达式a b c-d-e得到中间值,输出5,3,4。
   (24)以下程序的输出结果是_________。
   int f()
   {static int i=0;
   int s=1:
   s =i;i ;
   return s;
   }
   main()
   {inti,a=0;
   for(i=0;i<5;j )a =f();
   printf("%d\n",a);
   }
   A)20      B)24        C)25         D)15
   答案:D
   评析:静态变量,在编译时就为其分配了存储空间,程序一开始执行便被建立,直到该程序执行结束都存在,而不像动态变量只存在于函数或分程序被调用期间。在函数多次被调用的过程中静态局部变量的值具有可继承性。
   (25)已定义以下函数:
   fun(int *p)
   {retum *p;}
   该函数的返回值是______ 。
   A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值
   答案:C.
   评析:函数首部fun(int*p)中 p表示这是一个指针变量,指向整型数据,用来从主调函数接收地址;而语句return *p;中的*p代表p所指向存储单元中的值。
   (26)若有以下程序
   #include
   Void f(int n);
   main()
   {void f(int n);
   f(5);
   }
   Void f(int n)
   {print("%d\n",n);}
   则以下叙述中不正确的是______ 。
   A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
   B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
   C)对于以上函数程序,编译时系统会提示出错信息;提示对f函数重复说明
   D)函数f无返回值,所以可用void将其类型定义为无值型
   答案:C
   评析:一个函数在一个文件中的定义只能有一次,但对它的声明却可以有很多个。一个函数可以正确调用在当前函数之前声明的函数。

下半年计算机二级c语言基础试题

下半年计算机二级c语言基础试题
  任何设计活动都是在各种约束条件和相互矛盾的需求之间寻求一种平衡,程序设计也不例外。下面是我收集的关于计算机二级c语言基础试题,希望大家认真阅读!

  下半年计算机二级c语言基础试题1   一、选择:
  1.给出以下定义:
  char acX[ ]= "abcdefg";
  char acY[ ]= {'a','b','c','d','e','f','g'};
  则正确的叙述为( )
  A) 数组acX和数组acY等价 B) 数组acX和数组acY的长度相同
  C) 数组acX的长度大于数组acY的长度 D) 数组acX的长度小于数组acY的长度
  答案:C
  2.
  void example(char acHello[])
  {
  printf("%d", sizeof(acHello));
  return;
  }
  void main()
  {
  char acHello[] = "hello";
  example(acHello);//数组名称作参数,传的是地址,一个地址占四个字节
  return;
  }
  的输出是
  A 4 B 5 C 6 D不确定
  答案:A
  3. 有以下程序段
  char acArr[]= "ABCDE";
  char *pcPtr;
  for(pcPtr = acArr; pcPtr < acArr 5; pcPtr )
  {
  printf("%s/n", pcPtr);
  }
  return;
  输出结果是( )
  A) ABCD B) A C) E D) ABCDE
  B D BCDE
  C C CDE
  D B DE
  E A E
  答案:D
  4.在中断中,不能同步获取信号量,但是可以释放信号量。
  A.正确 B.错误
  答案:A
  5.以下叙述中不正确的是( )
  A) 在不同的函数中可以使用相同名字的变量
  B) 函数中的形式参数是局部变量
  C) 在一个函数内定义的变量只在本函数范围内有效
  D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
  答案:D
  6.设有如下定义:
  unsigned long pulArray[] = {6, 7, 8, 9, 10};
  unsigned long *pulPtr;
  则下列程序段的输出结果为( )
  pulPtr = pulArray;
  *(pulPtr 2) = 2;
  printf ("%d,%d/n", *pulPtr, *(pulPtr 2));
  A)8,10 B)6,8 C)7,9 D)6,10
  答案:D
  7. 定义结构体时有下面几种说法,请指出正确的(多选):______
  A、结构体中的每个部分,最好进行四字节对齐;
  B、结构体的总长度最好是四字节对齐;
  C、结构中成员的存放不用考虑字节对齐情况;
  答案:A、B
  8.void example()
  {
  int i;
  char acNew[20];
  for(i = 0; i < 10; i )
  {
  acNew[i] = '0';
  }
  printf("%d/n", strlen(acNew));
  return;
  }
  的输出为( )
  A 0 B 10 C 11 D不确定
  答案:D
  9.switch(c)中的c的数据类型可以是char、long、float、unsigned、bool. ( )
  A. 正确 B. 错误
  答案:B
  10. 网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是
  大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。
  A. 正确 B.错误
  答案:A
  二、 填空题
  1、 C语言函数返回类型的默认定义类型是
  2、 函数的实参传递到形参有两种方式: 和
  3、在一个函数内部调用另一个函数的调用方式称为 。在一个函数内部直接或间接调用该函数成为函数 的调用方式
  4、C语言变量按其作用域分为 和
  5、凡在函数中未指定存储类别的局部变量,其默认的存储类别为
  三、 看程序写结果
  1、#include
  Int abc(int u,int v);
  Void main()
  {int a=24,b=16,c;
  c=abc(a,b);
  printf(“value=%d”,c);
  }
  Int abc(int u, int v)
  {int w;
  While(v)
  {w=u%v;
  u=v;
  v=w;
  }
  Return u;
  }
  2、#include
  int x1=30,x2=40;
  main()
  {int x3=10,x4=20;
  sub(x3,x4);
  sub(x2,x1);
  printf(“%d,%d,%d,%d ”,x3,x4,x1,x2);
  }
  sub(int x,int y)
  {x1=x;x=y;y=x1;}
  3、#include
  Main()
  {int i=5;
  Printf(“%d ”,sub(i));
  }
  sub(int n)
  {int a;
  If(n==1) return 1;
  a=n sub(n-1);
  return (a);
  }
  4、#include
  Void fun()
  {static int m;
  m =2;
  printf(“%d ”,m);
  }
  Main()
  {int a;
  For(a=1;a<=4;a ) fun();
  Printf(“ ”);
  }
  四、 编程题
  1、 编写一个函数,判断任一整数是否为素数,用main()函数调用并测试之。
  2、 用递归方法求n!
  3、 有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分
  下半年计算机二级c语言基础试题2   1.下列叙述中正确的是( )。
  A. 所有数据结构必须有根结点
  B. 所有数据结构必须有终端结点(即叶子结点)
  C. 只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构
  D. 没有根结点或没有叶子结点的数据结构一定是非线性结构
  【答案】D
  【解析】D项正确,线性结构的特点是:
  ①集合中必存在“第一个元素"且惟一;
  ②集合中必存在“最后一个元素”且惟一;
  ③除最后一个元素外,其他数据元素均有惟一的“后继;
  ④除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项。
  2. 以下叙述中错误的是( )。
  A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
  B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
  C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
  D. C语言源程序经编译后生成后缀为.obj的目标程序
  【答案】A
  【解析】A项错误,注释语句不会被翻译成二进制的'机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。
  3. C语言主要是借助以下( )功能来实现程序模块化的。
  A. 定义函数
  B. 定义常量和外部变量
  C. 三种基本结构语句
  D. 丰富的数据类型
  【答案】A
  【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。答案选择A选项。
  4. 有以下程序段:
  char ch;
  int k;
  ch='a';
  k=12;
  print("%c,%d,",h,ch,k);
  printf("k=%d ",k);
  已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是( )。
  A. 因变量类型与格式描述符的类型不匹配输出无定值
  B. 输出项与格式描述符个数不符,输出为零值或不定值
  C.a,97,12k=12
  D. a,97,k=12
  【答案】D
  【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。"ch='a",%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出"k=",然后以十进制代码输出k的值,为12。答案选择D选项。
  5. 下列叙述中正确的是( )。
  A. 栈是“先进先出”的线性表
  B. 队列是“先进后出"的线性表
  C. 循环队列是非线性结构
  D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
  【答案】D
  【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出"的线性表B项错误,队列是“先进先出"的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。
  答案选择D选项。
  6. 某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为( )。
  A. 5
  B. 40
  C.3
  D. 2
  【答案】B
  【解析】二叉树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。答案选择B选项。
  7. 设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,则以下赋值语句中正确的是( )。
  A. s[0]=m[1];
  B. s=m;
  C.s.n=m.n;
  D. s[2].x=m[2].x;
  【答案】A
  【解析】定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。答案选择A选项。
  8. 关于C语言标识符,以下叙述错误的是( )。
  A. 标识符可全部由数字组成
  B. 标识符可全部由下划线组成
  C. 标识符可全部由小写字母组成
  D. 标识符可全部由大写字母组成
  【答案】A
  【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。
  9. 以下程序段中的变量已定义为int类型,则
  sum=pAd=5;
  pAd=sum , pAd,pAd ;
  printf("%d ",pAd);
  程序段的输出结果是( )。
  A. 6
  B. 4
  C. 5
  D. 7
  【答案】D
  【解析】自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。执行pAd=sum ,sum 是后置自增,执行完后,pAd=5,sum=6。 pAd和pAd 语句中没有其他运算,即效果相同,pAd分别加1,两句执行完后,pAd7。答案选择D选项。
;

计算机等级二级C语言模拟试题1(十)

一、选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分)
   下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
   (1)算法能正确地实现预定功能的特性称为算法的__________。
   A)确定性  B)易读性  C)健壮性  D)高效性
   答案:A
   评析:算法的确定性是指算法中的每一个步骤都必须是有明确定义的,不允许有摸棱两可的解释,也不允许有多义性,即每个步骤都是预先定义好的。
   (2)数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为__________。
   A)存储结构    B)逻辑结构
   C)顺序存储结构  D)链式存储结构
   答案:C
   评析:如果数据之间在逻辑上有相邻关系时,能够在物理位置上体现出来,则这种存储结构称为顺序存储结构。如果数据之间的逻辑相邻关系在存储时是靠存储地址的指针来体现的,则称为链式存储结构。
   (3)从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放  在已排序序列的合适位置,该排序方法称为__________。
   A)希尔排序  B)冒泡排序  C)插入排序  D)选择排序
   答案:C
   评析:最基本的排序方法有三大类,即选择排序、交换排序和插入排序。
   (4)对线性表进行折半查找时,要求线性表必须__________。
   A)以顺序方式存储
   B)以链接方式存储
   C)以顺序方式存储,且结点按关键字有序排列
   D)以链接方式存储,且结点按关键字有序排列
   答案:C
   评析:折半查找算法要求被查找的对象必须采用顺序的存储结构,并且关键字有序排列。
   (5)链表不具备的特点是__________。
   A)可随机访问任意一个结点
   B)插入和删除不需要移动任何元素
   C)不必事先估计存储空间
   D)所需空间与其长度成正比
   答案:A
   评析:顺序表可以随机访问任意一个结点,而链表必须从第一个数据结点出发,逐一查找每个结点。
   (6)下列描述中正确的是__________。
   A)软件是物理产品
   B)程序就是软件
   C)软件工程由方法、工具和过程三部分组成
   D)软件工程是一个机械工程
   答案:B
   评析:软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。计算机软件是一种逻辑产品,而不是物理产品。软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工具可以自动或半自动的生成软件文档。软件工程过程是管理者控制软件开发各环节的基本方法。
   (7)软件测试是保证软件质量最关键的步骤,下列关于白盒测试技术描述中不正确的是_______。
   A)保证模块中每一独立的路径至少执行一次
   B)保证所有判断的每一分支至少执行一次
   C)保证每一循环都在边界条件和一般条件下最多执行一次
   D)验证所有内部数据结构的有效性
   答案:C
   评析:软件测试技术中,白盒测试技术和黑盒测试技术是两种基本的软件测试手段。白盒测试技术有四个原则:保证模块中每一个独立的路径至少执行一次;保证所有判断的每一分支至少执行一次;保证每一循环都在边界条件和一般条件下至少执行一次;验证所有内部数据结构的有效性。
   (8)客观世界中任何一个事物都可以看成一个对象。但是从计算机的角度看,一个对象应  该包含两个要素:一个是_______,另一个是需要进行的操作。
   A)语句  B)命令  C)算法  D)数据
   答案:D
   评析:在面向对象的程序 设计 中,从计算机的角度看,一个对象应该包含两个元素:数据,相当于家庭中的成员;操作,相当于家庭成员的活动。对象就是一个包含数据与这些数据有关的操作的集合。
   (9)下列概念中,不是数据库管理系统必须提供的数据控制功能的是_______。
   A)安全性  B)完整性  C)移植性  D)一致性
   答案:C
   评析:数据库管理系统提供的数据控制功能是指在数据库建立、运行和维护时,由DBMS统一管理、统一控制,以保证数据的安全性、完整性和一致性。
   (10)设关系R和关系S的元数分别是3和4,关系T是R和S的笛卡儿积,即T=R×S,则关系T的元数是_______。
   A)7  B)9  C)12  D)16
   答案:A
   评析:笛卡儿积的定义是设关系R和s的元数分别是r和s,R和s的笛卡儿积是一个(r十s)元属性的集合,每一个元组的mr个分量来自R的一个元组,、后s爪分量来自s的一个元组。所以关系T的属性元数是3 4=7。
   (11)以下叙述中正确的是_______。
   A)C语言中的全部数据类型都是基本类型
   B)C语言中的全部数据类型都是构造类型
   C)C语言中的数据类型只有两种,即基本类型和构造类型
   D)以上都不对
   答案:D
   评析:c语言中的数据类型有四种,即基本类型、构造类型、指针类型和空类型。
   (12)下列可作为C语言赋值语句的是_______。
   A)x=3,y=5  B)a=b=6  C)i--;  D)y=6
   答案:C
   评析:此题实际上是考查对c语言中"语句"概念的理解。表达式后面只有加上分号才能成为语句,因此,A),B),D)均是表达式,只有C)为语句。且利用自减运算符使i值减l。
   (13)以下可以定义为用户标识符的是_______。
   A)printf  B)net  C)3com D)int
   答案:B
   评析:c语言中的标识符分为两类。一类是系统标识符,即系统定义使用的关键字标识符等。另一类是用户自定义标识符。两类标识符都只能用字母、数字和下划线三种字符组成。且第一个字母必须为字母或下划线。并且用户自定义标识符不能使用系统关键字相同的标识符。
   (14)以下选项中,不能作为合法常量的是_______。
   A)0X2A  B)015  C).2.8e9  D)123.6e0.4
   答案:D
   评析:c程序中的基本数据类型有整型、实型和字符型。其中整型常量三种形式,即八进制、十进制和十六进制。而实型常量有十进制小数和指数形式两种。
   (15)有以下程序
   main()
   {
   int a;  char c=10:
   float f=-100.0;double x;
   clrscrO;
   a=f/=c*=(x=6.5);
   printf("%d,%c,%3.1C%3.1f\n",a,c,Cx);
   }
   程序运行后的输出结果是_______。
   A)1,65,1,6.5  B)1,A,1.5,6.5  C)1,65,1.5,6.5  D)2,65,1.5,6.5
   答案:B
   评析:在赋值语句a=f/=c*=(x=6.5);中,可得x=6.5,将x的值乘以10赋予c,为65,再将f=100的值除以65,并按照四舍五入的原则,重新赋给f'得到f=-I.5。最后将f的值赋给a,由于a是整型,所以得到a=l。
   (16)以下语句序列中错误的是_______。
   A)int x=l;  B)int x=0;  C)int x=2.3;  D)int x=l,y=l;
   x ;     (x 1) ;   (x ) 1;    (x ) (y一);
   答案:B
   评析:c语言中的自加、自减运算只能用于变量,而不能用于常量或表达式。  (17)有定义语句:im.a;char b[10],c;则错误的输入语句是__________。
   A)scanf("%d%s%c",&a,D,&C);   B)scanf("%d%s%c",&a,&b,&C);
   C)scanf("%d%s%d",&a;b,&C);   D)scanf("%d%s"&c,a,%,&C);
   答案:D
   评析:在scanf()语句中,在给整型变量和字符型赋值时,必须要在变量名前加取地址符号(&),而对字符型数组赋值时,可以不在变量名前不加取地址符号,也可以加取地址符号。而且对于字符型变量既可以赋给整型值,也可以赋给字符型值。
   (18)有定义语句:int x,y;,若要通过scan即x=%d,y=%n&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是________。
   A)1l  12回车>    B)ll,12回车>
   C)x=l l,y=12回车>  D)x=ll,回车>12,回车>
   答案:C
   评析:在scanf()语句中,对于变量的赋值必须与数据的输入格式相一致。特别是一些字符说明。
   (19)设有如下程序段:
   int x=6, y=4;
   printf("%d\n",(x%y,x&&y));
   则以下叙述中正确的是__________。
   A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出
   B)运行时产生出错信息
   C)输出值为2
   D)输出值为l
   答案:D
   评析:在逗号表达式(表达式1,表达式2)中,其运算方法是先求表达式1的值,然后求表达2的值,整个逗号表达式的值是表达式2的值。
   (20)有以下程序
   main()
   {
   int i=1.j=2,k=3;
   clrscr();
   if(i ==j&&k--==j)
   printf("%d,%d,%d",i 'j,k);
   else
   printf("%d,%d,%d", i, j,k--);
   }
   程序运行后的输出结果是_________。
   A)l,2,3  B)2,2,3  C)2,3,2  D)3,3,3
   答案:D
   评析:按照运算符的优先级,最先计算的是关系运算i ==j,由于此关系式不成立,,它的结果是为"假"值,由此可以确定逻辑与运算的结果必然是"假"值,因此参加逻辑与运算的另一个关系表达式"k--==j"的值,系统不再对它进行运算。此时变量i的值自加1变成2,然后执行else语句后的printf语句。
   (21)有定义语句:int a=l,b=l,c=3,x;,则以下选项中各程序段执行后,x的值不等于3是__________。
   A)if(c
<a)x=l;       <br="" b)if(a<3&&b    else if(b<a‖b
a) x=3;    D)if(a
<b c)x:b;    if(a<2)x="2;       " if(b&&a<c)x="c=" if(a<1)z="l;        if(c<a)x=a;" 答案:c
   评析:在各种运算符中,运算级别的是算术运算,如果有括号,当然先算括号内的表达式的值。    (22)有以下程序,其输出结果是____________。
   main()
   {  float x=l; int y;
   X :
   y=x l;
   printf("x=%d,y=%f",x, y);
   }
   A)x=2,y=3    B)x=2,y=3.0
   C)x=2.0,y=3  D)x=0.y=O.000000
   答案:D
   评析:一般在对变量定义为何种类型的数据时,对输出应有完全一致的数据类型格式。但整型与实型数据在进行混合运算时,一般其数据类型可以自动转换。如本题的y=x l;语句中,系统自动将实型表达式x l的结果转换为整数赋给整型变量y,但整型变量y只能得到实型数的整数部分。
   (23)有以下程序
   main()
   {
   int a[6]={5,6,7,8,9,10},s=0,I=0;
   clrserO;
   do
   {
   if(a[i]%2 I-0)
   s =a[I];
   }while( i<5);
   primf("%d\n",s);
   }
   程序运行后的输出结果是_________。
   A)21  B)22  C)23  D)24
   答案:A
   评析:引用数组中的某个元素时,可以直接使用数组名加下标的形式。如p[1],就是数组中下标为1的元素,按顺序数,是第2个元素,因为数组的下标是从0开始的。本题实际上是求数组中所有奇数元素的和。
   (24)若有如下程序段,
   main()
   {
   char a[7]="123\010\032";
   int i,j=0;
   clrscr0;
   for (I=0;i
<strlen(a);i )    j="sizeof(a);"
   printf("%d,%d\n",I,J);

   }

   程序运行后的输出结果是_________。

   A)5,30  B)5,35  C)5,25    D)5,20

   答案:B

   评析:数组的存储空间是在其定义后就分配的。字符数组a[7]="123\010\032"的存储空间是7个单元。即sizeof(a)=7。而函数strlen()是求字符串的长度的。a[7]="123\010\032"中,有两个转义字符,因此字符串的长度实际上是5个字符。所以strlen(a)=5。在程序的for循环中,其循环的次数是5次,j每次加7,所以最后的结果是35。i的值就是循环的次数。

   (25)如果在c程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该  添加的头文件是__________。

   A)stdio.h  B)string.h  C)alloc.h  D)math.H

   答案:B

   评析:库函数并不是c语言的一部分,它是由人们根据需要编制并提供用户使用的。在调用不同类别的库函数时,必须在程序前添加相应的头文件。

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

   A)函数调用可以嵌套和递归

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

   C)函数调用可以出现在表达式中

   D)函数调用可以作为一个函数的形参

   答案:D

   评析:函数的调用有三种方式。一是将函数调用作为一个语句。二是函数出现在_个表达式中。三是作为一个函数的实参。但是没有函数调用作为形参。而且函数在调用时还有嵌套和递归两种特殊的情形。

   (27)下列关于c语言中字符常量与字符串常量的叙述中,错误的是_________。

   A)字符常量是用单撇号括起来的一个字符

   B)空格字符也可用作字符常量

   C)字符串常量是用单撇号括起来的一个字符序列

   D)字符串常量是用双撇号括起来的一个字符序列

   答案:C

   评析:c语言中的字符型数据常量有两类,一类是用单撇号括起来的字符常量。字符常量除了常用的字符外,还包括特殊的空格符和以"\"开头的转义字符。字符串常量则是用双撇号括起来的一个字符序列。

阅读更多 >>>  iphone微云在哪里

<b c)x:b;    if(a<2)x="2;       " if(b&&a<c)x="c=" if(a<1)z="l;        if(c<a)x=a;" 答案:c
计算机二级C语言操作题积累
<b c)x:b;    if(a<2)x="2;       " if(b&&a<c)x="c=" if(a<1)z="l;        if(c<a)x=a;" 答案:c

2017年计算机二级C语言操作题积累
  多媒体计算机是当前计算机领域中最引人注目的高新技术之一。多媒体计算机就是利用计算机技术、通信技术和大众传播技术,来综合处理多种媒体信息的计算机。下面是我整理的关于计算机二级C语言操作题积累,欢迎大家参考!
  一、单选题(每小题1分,共40分)
  1[单选题] 下列关于综合布线系统的描述中,错误的是(  )。
  A.双绞线扭绞可以减少电磁干扰
  B.管理子系统设置在楼层配线间内
  C.多介质插座是用来连接铜缆和光纤的
  D.对于建筑群子系统直埋布线是最理想的方式
  2[单选题] IP地址块59.67.79.128/28、59.67.79.144/28和59.67.79.160/27经聚合后可用地址数为(  )。
  A.62
  B.64
  C.126
  D.128
  3[单选题] IP地址块202.111.15.128/28、202.111.15.144/28和202.111.15.160/28经过聚合后可用的地址数为(  )。
  A.40
  B.42
  C.44
  D.46
  4[单选题] 下列攻击手段中,基于网络的入侵防护系统无法阻断的是(  )。
  A.SYNFlooding
  B.SQL注入
  C.DDOS
  D.PingofDeath
  5[单选题] 差异备份、增量备份、完全备份三种备份策略的备份速度由快到慢依次为(  )。
  A.增量备份、差异备份、完全备份
  B.差异备份、增量备份、完全备份
  C.完全备份、差异备份、增量备份
  D.完全备份、增量备份、差异备份
  6[单选题] CiscoPIX525防火墙用来允许数据流从具有较低安全级接口流向较高安全级接口的配置命令是(  )。
  A.fixup
  B.conduit
  C.global
  D.nameif
  7[单选题] 在Windows2003系统下DHCP服务器中添加排除时,应输入的信息是(  )。
  A.起始IP地址和结束IP地址
  B.起始IP地址和网关地址
  C.起始IP地址和MAC地址
  D.起始IP地址和掩码
  8[单选题] 下列关于服务器技术的描述中,错误的是(  )。
  A.集群系统中一台主机出现故障时不会影响系统的性能
  B.采用RISC结构处理器的服务器通常使用UNIX系统
  C.热插拔功能允许用户在不切断电源的情况下更换硬盘、电源等
  D.分布式内存访问(NUMA.技术将对称多处理器(SMP)和集群(Cluster)技术结合起来
  9[单选题] 下列对交换机中交换表的描述中,错误的是(  )。
  A.在一些高端交换机中,交换表通常被保存在CAM存储器中
  B.交换表中没有接收帧的目的MAC地址时,交换机用Flood技术转发该帧
  C.使用“showmac-addres-table”命令可显示小型交换机的交换表内容
  D.交换表的内容包括目的IP地址及其所对应的交换机端口号
  10[单选题] 下列关于无线网络HipeR1AN/2协议的描述中,错误的.是(  )。
  A.采用5GHz工作频段
  B.上行速率最多可达54Mbps
  C.室外最大覆盖范围为30米
  D.可支持面向连接的传输服务
  二、综合题(每空2分,共40分)
  (1)打开工作簿文件EXCEL.xlsx,将工作表sheetl的Al:El单元格合并为一个单元格,内容水平居中,计算“合计”列的内容,将工作表命名为“科研经费使用情况表”.
  (2)选取“科研经费使用情况表”的“项目编号”列和“合计”列的单元格内容,建立“簇状棱锥图”,x轴上的项为项目编号,图表标题为“科研经费使用情况图”,插入到表的A7:El8单元格区域内.
  三、演示文稿题
  打开考生文件夹下的演示文稿yswg.pptx,按照下列要求完成对此文稿的修饰并保存.

  (1)整个演示文稿设置成“时装设计”模板;将全部幻灯片切换效果设置成“分割”.
  (2)将第二张幻灯片对象部分的动画效果设置为“向内溶解”;在演示文稿的开始处插入一张“标题幻灯片”,作为文稿的第一张幻灯片,主标题键人“讽刺与幽默”,并设置为60磅、加粗、红色(请用自定义标签中的红色250,绿色1,蓝色1).
  二、电子表格题
  (1)【解题步骤】
  步骤1:通过“答题”菜单打开EXCEL.xlsx文件,选中A1:E1单元格,在【开始】功能区的【对齐方式】分组中,单击“合并后居中”按钮,合并单元格并使内容居中。
  步骤2:计算“合计”列内容。在E3单元格中插入公式“=SUM(B3:D3)”,并按回车键,将鼠标移动到E3单元格的右下角,按住鼠标左键不放向下拖动即可计算出其他行的值。
  注:当鼠标指针放在已插入公式的单元格的右下角时,它会变为小十字“ ”,按住鼠标左键拖动其到相应的单元格即可进行数据的自动填充。
  步骤3:双击现有名称,输入新名称“科研经费使用情况表”。
  步骤4:保存文件。
  (2)【解题步骤】
  步骤1:按照要求建立“簇状棱锥图”。选中“项目编号”列和“合计”列,在【插入】功能区的【图表】分组中,单击“创建图表”按钮,弹出“插入图表”对话框,在“柱形图”中选择“簇状棱锥图”,单击“确定”按钮,即可插入图表。
  步骤2:按照题目要求设置图表标题。在插入的图表中,选中图表标题,改为“科研经费使用情况图”。
  步骤3:调整图的大小并移动到指定位置。选中图表,按住鼠标左键单击图表不放并拖动,将其拖动到A7:El8单元格区域内。
  注:不要超过这个区域。如果图表过大,无法放下,可以将鼠标放在图表的右下角,当鼠标指针变为“、”时。按住左键拖动可以将图表缩小到指定区域内。
  步骤4:保存文件。
  三、演示文稿题
  (1)【解题步骤】
  步骤1:通过“答题”菜单打开ysw9.pptx文件,按照题目要求设置幻灯片模板。选中幻灯片,在【设计】功能区的【主题】分组中,单击“其他”下拉三角按钮,选择“时装设计”模板。
  步骤2:按照题目要求设置幻灯片的切换效果。选中幻灯片,在【切换】功能区的【切换到此幻灯片】分组中,单击“其他”下拉三角按钮,在“细微型”选项组中选择“分割”效果。
  (2)【解题步骤】
  步骤1:按照题目要求设置剪贴画的动画效果。选中第二张幻灯片的图片,在【动画】功能区的【动画】分组中,单击“其他”下拉三角按钮,选择“更多进入效果”选项,弹出“更改进入效果”对话框。在“基本型”选项组中选择“向内溶解”效果,单击“确定”按钮。
  步骤2:按照要求插入新幻灯片。用鼠标右键单击第一张幻灯片前面的位置,在【开始】功能区的【幻灯片】分组中,单击“新建幻灯片”下拉三角按钮,选择“标题幻灯片”选项。新插入的幻灯片作为第一张幻灯片。
  步骤3:在第一张幻灯片的“单击此处添加标题”处输入“讽刺与幽默”。
  步骤4:按题目要求设置字体。选中“讽刺与幽默”,在【开始】功能区的【字体】分组中,单击“字体”按钮,弹出“字体”对话框。在“字体”选项卡中,设置“大小”为“60磅”,设置“字体样式”为“加粗”。单击“字体颜色”下拉三角按钮,选择“其他颜色”选项,弹出“颜色”对话框。单击“自定义”选项卡,设置“红色”为“250”,设置“绿色”为…l’,设置“蓝色”为…l’,单击“确定”按钮,再单击“确定”按钮。
  步骤5:保存文件。
  三、应用题(共20分)
;

计算机二级考试C语言选择题(2)

  { char x=0xFFFF;printf("%d\n",x--);}

  A.-32767

  B.FFFE

  C.1

  D.32768

  22.下面的函数调用语句中func函数的实参个数是( )。

  func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

  A.3

  B.4

  C.5

  D.8

  23.语句“printf("akbre"\’hi\’y\\\bou\n")”;的输出结果是( )。

  A.akbre\’hi\’y ’\\\bou

  B.a\bre\’hi\\y\bou

  C.re ’hi’you

  D.abre’hi’y\bou

  24.下面程序输出的是( )。

  main()

  { int t=l;fun(fun(t));}

  fun(int h)

  { static int a[3]={1.2.3};

  int k;

  for(k=0;k<3;k )a[k] =a[k]-h;

  for(k=0;k<3;k )printf("%d",a[k]);

  printf("\n");

  return(a[h]);}

  A.1,2,3,

  1,5,9,

  B.1,3,5,

  1,3,j,

  C.1,3,5,

  0,4,8,

  D.1,3。5,

  -1,3,7,

  25.以下叙述中正确的是( )。

  A.预处理命令行必须位于C源程序的起始位置

  B.在C语言中,预处理命令行都以“#”开头

  c.每个C程序必须在开头包含预处理命令行:#include

  D.C语言的预处理不能实现宏定义和条件编译的功能

  26.为了避免在嵌套的条件语句if else中产生二义性,C语言规定,else子句总是与( )配对。

  A.缩排位置相同if

  B.其前面最近的if

  C.其后面最近的if

  D.同一行上的if

  27.设有下列程序段:

  char str[]="HelloWorld":

  char* plr;

  ptr=str:

  执行上面的程序段后,*(ptr 10)的'值为( )。

  A.’\0 ’

  B.’0’

  C.不确定的值

  D.’0’的地址

  28.有以下程序:

  void swap(char*x,char*y)

  { char t;

  t=*x;*x=*y;*y=t;

  }

  main()

  { char*s1="abe",*s2="123":

  swap(s1,s2);

  printf("%s,%s\n",s1,s2);

  }

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

  A.123,abe

  B.abc.123

  C.1bc,a23

  D.321,cba

  29.下列程序的运行结果是( )。

  #include

  main()

  { static char a[]="Languagef",b[]="programe":

  char*p1,*p2;int k;

  p1=a;p2=b;

  for(k=0;k<=8;k )

  if(*(p1 k)==*(p2 k))

  printf("%c",*(p1 k)):

  }

  A.gae

  B.ang

  C.program

  D.有语法错

  30.下列程序的运行结果为( )。

  #define MAX(x,y)(x)>(y)?(x):(y)

  main()

  { int a=2,b=3,C=1,d=3,t:

  printf("%d\n",(MAX(a h,c d))*100):

  }

  A.500

  B.5

  C.4

  D.400

  31.设int x=7,则~x的值是(  )。

  A.-8

  B.7

  C.-1

  D.1

  32.有以下程序:

  void fun(char*a,char*b)

  {a=b; (*a) ; }

  main(  )

  {char c1=’A ’,c2=’a’,*p1,*p2;

  p1=&c1;p2=*c2;fun(p1,p2);

  printf("%C%c\n",c1,c2);

  }

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

  A.Ab

  B.aa

  C.Aa

  D.Bb

  33.有以下程序:

  int fun(int n)

  {if(n==l)return l;

  else return(n fun(n一1)):

  }

  main(  )

  {int x;

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

  x):

  }

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

  A.55

  B.54

  C.65

  D.45

  34.有以下程序:

  void f(int x,int y)

  {int t;

  if(x  }

  main(  )

  {int a=4,b=3,c=5;

  f(a,b);f(a,c);f(b,c);

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

  }

  执行后输出结果是(  )。

  A.3,4,5

  B.5,3,4

  C.5,4,3

  D.4,3,5

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

  main(  )

  {char*s="12134211";

  int v[4]=(0,0,0,0),k,i;

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

  {switch(s[k])

  {case’1’:i=0;

  case’2’:i=1;

  case’3’:i=2;

计算机二级C语言测试题及答案解析

2017年计算机二级C语言测试题及答案解析
  全国计算机等级考试(National Computer Rank Examination,以下简称 NCRE),是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查非计算机专业应试人员计算机应用知识与技能的全国性计算机水平考试体系。下面是2017年计算机二级C语言测试题及答案解析。欢迎阅读。

  2017年计算机二级C语言测试题及答案解析   1.(A )是构成C语言程序的基本单位。
  A、函数
  B、过程
  C、子程序
  D、子例程
  2.C语言程序从 C 开始执行。
  A、 程序中第一条可执行语句
  B、 程序中第一个函数
  C、 程序中的main函数
  D、包含文件中的第一个函数
  3、以下说法中正确的是( C )。
  A、C语言程序总是从第一个定义的函数开始执行
  B、在C语言程序中,要调用的函数必须在main( )函数中定义
  C、C语言程序总是从main( )函数开始执行
  D、C语言程序中的main( )函数必须放在程序的开始部分
  4.下列关于C语言的说法错误的是( B ) 。
  A、 C程序的工作过程是编辑、编译、连接、运行
  B、 C语言不区分大小写。
  C、 C程序的三种基本结构是顺序、选择、循环
  D、C程序从main函数开始执行
  5.下列正确的标识符是(C )。
  A、-a1
  B、a[i]
  C、a2_i
  D、int t
  5~8题为相同类型题
  考点:标识符的命名规则
  只能由字母、数字、下划线构成
  数字不能作为标识符的开头
  关键字不能作为标识符
  选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)
  6.下列C语言用户标识符中合法的是(B )。
  A、3ax
  B、x
  C、case
  D、-e2 E)union
  选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);
  7.下列四组选项中,正确的C语言标识符是( C )。
  A、 %x
  B、a b
  C、a123
  D、123
  选项A中的“%” ,选项B中“ ”不满足(1);选项D中的标识符以数字开头不满足(2)
  8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。
  A、print _3d db8 aBc
  B、I\am one_half start$it 3pai
  C、str_1 Cpp pow while
  D、Pxq My->book line# His.age
  选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)
  9.C语言中的简单数据类型包括(D )。
  A、整型、实型、逻辑型
  B、整型、实型、逻辑型、字符型
  C、整型、字符型、逻辑型
  D、整型、实型、字符型
  10.在C语言程序中,表达式5%2的结果是 C 。
  A、2.5
  B、2
  C、1
  D、3
  %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;
  /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2
  11.如果int a=3,b=4;则条件表达式"aA、 3
  B、 4
  C、 0
  D、1
  详见教材P97.
  表达式1?表达式2:表达式3
  先计算表达式1,
  若表达式1成立, 则选择计算表达式2,并表达式2的值作为整个大表达式的值;
  若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值
  此题中的aa为3,b为4。a12.若int x=2,y=3,z=4 则表达式x
  A、4
  B、3
  C、2
  D、0
  E)1
  13.C语言中,关系表达式和逻辑表达式的值是( B ) 。
  A、0
  B、 0或1
  C、 1
  D、‘T’或’F’
  14. 下面( D )表达式的值为4.
  A、 11/3
  B、 11.0/3
  C、 (float)11/3
  D、 (int)(11.0/3 0.5)
  14~16题为同一类型
  详见教材P54~56.
  (1)相同数据类型的元素进行数学运算( 、-、*、/)得到结果还保持原数据类型。
  (2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。
  选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.
  选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3.666666
  选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同
  选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666 0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为4
  15.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( B )
  A、b=1.0/a
  B、b=(float)(1/A、
  C、b=1/(float)a
  D、b=1/(a*1.0)
  16. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)
  A、1
  B、4
  C、4.333333
  D、4.6
  “(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为1
  17. 以下对一维数组a的正确说明是: D
  A、char a(10);
  B、 int a[];
  C、int k=5,a[k];
  D、char a[3]={‘a’,’b’,’c’};
  详见教材P143~144,一维数组的定义、初始化
  类型符 数组名 [常量表达式]
  类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。
  选项A,常量表达式只能放在中括号 [ ]中
  选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。
  选项C,常量表达式不能为变量。
  18.以下能对一维数组a进行初始化的.语句是:( C )
  A、int a[5]=(0,1,2,3,4,)
  B、 inta(5)={}
  C、 int a[3]={0,1,2}
  D、 int a{5}={10*1}
  详见教材P145,一维数组的定义、初始化
  选项B,D,常量表达式只能放在中括号 [ ]中
  选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().
  19.在C语言中对一维整型数组的正确定义为 D 。
  A、int a(10);
  B、int n=10,a[n];
  C、int n;a[n];
  D、#define N 10
  int a[N];
  20、已知:int a[10]; 则对a数组元素的正确引用是( D )。
  A、a[10]
  B、a[3.5]
  C、a(5)
  D、a[0]
  详见教材P144,数组元素的引用
  数组名[下标]
  引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数
  int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素; a[1] 表示组中第2个元素; a[2] 表示组中第3个元素; ......;a[9] 表示组中第10个元素.
  选项A,超过了数组a的逻辑地址下标范围;
  选项B,逻辑地址下标只能为整数
  选项C,逻辑地址下标只能放在[ ]中
  21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C )。
  int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
  A、10
  B、9
  C、6
  D、5
  先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].
  a[10]对应下面数组中的元素为9. 因此a[a[i]]即为a[9]
  a[9]对应下面数组中的元素为6. 因此a[9]即为6
  22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( B )
  A、2
  B、3
  C、4
  D、无确定值
  5 7
  D、3 6 9
  二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行
  23.对二维数组的正确定义是(C )
  详见教材P149~152,二维数组的定义、初始化
  类型符 数组名 [常量表达式][常量表达式]
  二维数组可以看做是矩阵
  类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。
  一维数组初始化时可以省略数组长度
  二维数组初始化时可以省略行数,但不能省略列数
  选项A,B,都省略了列数
  选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中
  A、int a[ ][ ]={1,2,3,4,5,6};
  B、int a[2] []={1,2,3,4,5,6};
  C、int a[ ] [3]={1,2,3,4,5,6};
  D、int a[2,3]={1,2,3,4,5,6};
  24.已知int a[3][4];则对数组元素引用正确的是__C___
  A、a[2][4]
  B、a[1,3]
  C、a[2][0]
  D、a(2)(1)
  详见教材P150,数组元素的引用
  数组名[下标] [下标]
  引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数
  第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。
  本题图示详见P149图6.7
  因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;
  选项A,列逻辑地址下标超过范围
  选项B,D,的引用形式不正确。
  25.C语言中函数返回值的类型是由 A 决定的.
  A、函数定义时指定的类型
  B、 return语句中的表达式类型
  C、 调用该函数时的实参的数据类型
  D、形参的数据类型
  26. 在C语言中,函数的数据类型是指(A )
  A、 函数返回值的数据类型
  B、 函数形参的数据类型
  C、 调用该函数时的实参的数据类型
  D、任意指定的数据类型
  27.在函数调用时,以下说法正确的是( B )
  A、函数调用后必须带回返回值
  B、实际参数和形式参数可以同名
  C、函数间的数据传递不可以使用全局变量
  D、主调函数和被调函数总是在同一个文件里
  28. 在C语言中,表示静态存储类别的关键字是: ( C )
  A、 auto
  B、 register
  C、static
  D、extern
  29.未指定存储类别的变量,其隐含的存储类别为(A )。
  A、auto
  B、static
  C、extern
  D、register
  30. 若有以下说明语句:
  struct student
  { int num;
  char name[ ];
  float score;
  }stu;
  则下面的叙述不正确的是: (D )
  A、 struct是结构体类型的关键字
  B、 struct student 是用户定义的结构体类型
  C、 num, score都是结构体成员名
  D、 stu是用户定义的结构体类型名
  31.若有以下说明语句:
  struct date
  { int year;
  int month;
  int day;
  }brithday;
  则下面的叙述不正确的是__C___.
  A、 struct是声明结构体类型时用的关键字
  B、 struct date 是用户定义的结构体类型名
  C、 brithday是用户定义的结构体类型名
  D、year,day 都是结构体成员名
  32. 以下对结构变量stul中成员age的非法引用是 B
  struct student
  { int age;
  int num;
  }stu1,*p;
  p=&stu1;
  A、 stu1.age
  B、 student.age
  C、 p->age
  D、(*p).age
  33.设有如下定义:
  struck sk
  { int a;
  float b;
  }data;
  int *p;
  若要使P指向data中的a域,正确的赋值语句是 C
  A、 p=&a;
  B、 p=datA、a;
  C、p=&datA、a;
  D、*p=datA、a;
  34.设有以下说明语句:
  typedef struct stu
  { int a;
  float b;
  } stutype;
  则下面叙述中错误的是( D )。
  A、struct是结构类型的关键字
  B、struct stu是用户定义的结构类型
  C、a和b都是结构成员名
  D、stutype是用户定义的结构体变量名
  35.语句int *p;说明了 C 。
  A、p是指向一维数组的指针
  B、p是指向函数的指针,该函数返回一int型数据
  C、p是指向int型数据的指针 // 指针的定义教材P223
  D、p是函数名,该函数返回一指向int型数据的指针
  36.下列不正确的定义是( A )。
  A、int *p=&i,i;
  B、int *p,i;
  C.int i,*p=&i;
  D、int i,*p;
  选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为p赋i的地址,C正确)
  37. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( D )
  A、p=q
  B、*p=*q
  C、n=*q
  D、p=n
  p,q同为整型指针变量,二者里面仅能存放整型变量的地址。
  选项A,q中为地址,因此可将此地址赋给p
  选项B,*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;
  选项C,n=*q 等价于n=n;
  选项D,p中只能存放地址,不能将n中的整数值赋给p
  38.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。
  A、int p=*a;
  B、int *p=a;
  C、int p=&a;
  D、int *p=&a;
  选项A,a是数组名,不是指针变量名,因此不可用*标注数组名a
  选项C,a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量
  选项D,a是数组名,数组名就是地址,无需再用地址符号。
  39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )。
  A、a[p]
  B、p[a]
  C、*(p 2)
  D、p 2
  首先定义一个整型数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。
  对于数组元素下标的引用(详见p144), 一般形式 数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。
  选项A,p中存放的是地址,不是整数,不能做数组元素的下标
  选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标
  选项C,(重点!!!详见p231~234) p 2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p 2表示a[2]的地址,因此*(p 2)表示a[2]的内容
  40. 有如下程序
  int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
  则数值为9的表达式是 B
  A、 *P 9
  B、 *(P 8)
  C、 *P =9
  D、P 8
  (重点!!!详见p231~234)
  首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。
  数组中9对应的是a[8], 选项B,P 8表示数组中后8个元素的地址,即a[8]的地址。*(P 8)则表示该地址内所存放的内容,即a[8]的值。
  选项A,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1. *P 9=1 9=10
  选项C,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值。因此*P =9 即*P =*P 9, 等价于a[0]=a[0] 9.
  选项D,P 8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。
  41. 在C语言中,以 D 作为字符串结束标志
  A、’\n’
  B、’ ’
  C、 ’0’
  D、’\0’
  42.下列数据中属于“字符串常量”的是( A )。
  A、“a”
  B、{ABC}
  C、‘abc\0’
  D、‘a’
  若干个字符构成字符串
  在C语言中,用单引号标识字符;用双引号标识字符串
  选项B,C,分别用{}和’’标识字符串
  选项D,标识字符。
  43.已知char x[]="hello", y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是 B .
  A、相同
  B、x大于y
  C、x小于y
  D、以上答案都不对
  C语言中,字符串后面需要一个结束标志位'\0',通常系统会自动添加。
  对一维数组初始化时可采用字符串的形式(例如本题数组x),也可采用字符集合的形式(例如本题数组y)。在以字符串形式初始化时,数组x不尽要存储字符串中的字符,还要存储字符串后的结束标志位,因此数组x的长度为6;在以字符集合形式初始化时,数组y,仅存储集合中的元素,因此数组y长度为5
;

阅读更多 >>>  计算机编程基础知识自学,自学计算机编程先学什么

国家计算机二级C语言考试题

一 、选择题
(1)下列数据结构中,按先进后出原则组织数据的是
A)线性链表
B)栈
C)循环链表
D)顺序表
正确答案: B
(2)具有3个结点的二叉树有
A)2种形态
B)4种形态
C)7种形态
D)5种形态
正确答案: D
(3)设有下列二叉树:
对此二叉树前序遍历的结果为
A)ZBTYCPXA
B)ATBZXCYP
C)ZBTACYXP
D)ATBZXCPY
正确答案: B
(4)结构化程序设计主要强调的是
A)程序的规模
B)程序的效率
C)程序设计语言的先进性
D)程序易读性
正确答案: D
(5)程序的3种基本控制结构是
A)过程、子过程和分程序
B)顺序、选择和重复
C)递归、堆栈和队列
D)调用、返回和转移
正确答案: B
(6)下列叙述中,不属于测试的特征的是
A)测试的挑剔性
B)完全测试的不可能性
C)测试的可靠性
D)测试的经济性
正确答案: C
(7)需求分析中开发人员要从用户那里了解
A)软件做什么
B)用户使用界面
C)输入的信息
D)软件的规模
正确答案: A
(8)下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A)选择
B)连接
C)投影
D)并
正确答案: B
(9)下列叙述中,正确的是
A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系
B)用E-R图只能表示实体集之间一对一的联系
C)用E-R图只能表示实体集之间一对多的联系
D)用E-R图表示的概念数据模型只能转换为关系数据模型
正确答案: C
(10)"年龄在18~25之间"这种约束是属于数据库当中的
A)原子性措施
B)一致性措施
C)完整性措施
D)安全性措施
正确答案: C
11)以下说法错误的是
A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B)计算机只能处理由0和1的代码构成的二进制指令或数据
C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D)每一种高级语言都有它对应的编译程序
正确答案: C
(12)算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是
A)有零个输入或多个输入
B)高效性
C)有穷性
D)确定性
正确答案: B
(13)已知int a=6; 则执行a =a-=a*a;语句后,a的值为
A)36
B)0
C)-24
D)-60
正确答案: D
(14)下面各选项中,均是C语言标识符的选项组是
A)forchinato
B)long_123short56_do
C)voidunion_342
D)text.txt _023_3ew
正确答案: B
(15)下列表达式中,结果为5的是
A)6*5%6
B)5*-2 15
C)5 75
D)6 -2/3
正确答案: B
(16)下列常量中,为不合法的实型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
正确答案: D
(17)关于C语言的主函数描述正确的是
A)C程序可以有多个main函数
B)C程序必有一个而且只能有一个main函数
C)C程序可以没有main函数
D)C程序的执行不一定在main函数开始执行
正确答案: B
(18)已知int a=1,b=-1;则语句printf("%d\n",(a--, b));的输出结果是
A)-1
B)0
C)1
D)语句错误
正确答案: B
(19)已知int a,b;double c;则以下语句中错误的函数调用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
正确答案: D
(20)已知x,y,z均为整型变量,且值均为1,则执行语句 x|| y&& z;后,表达式x y的值为
A)1
B)2
C)3
D)4
正确答案: C

c语言二级考试题及答案

2011年3月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)
一、 选择题(1-10,21-40每题2分,11-20每题1分,共70分)
  
(1)下列关于栈叙述正确的是
  A)栈顶元素最先能被删除
  B)栈顶元素最后才能被删除
  C)栈底元素永远不能被删除
  D)以上三种说法都不对
  
(2)下列叙述中正确的是
  A)有一个以上根结点的数据结构不一定是非线性结构
  B)只有一个根结点的数据结构不一定是线性结构
  C)循环链表是非线性结构
  D)双向链表是非线性结构
  
(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)
  A)3 B)4 C)6 D)7
  
(4)在软件开发中,需求分析阶段产生的主要文档是
  A)软件集成测试计划 B)软件详细设计说明书
  C)用户手册 D)软件需求规格说明书
  
(5)结构化程序所要求的基本结构不包括
  A)顺序结构 B)GOTO跳转
  C)选择(分支)结构 D)重复(循环)结构
  
(6)下面描述中错误的是
  A)系统总体结构图支持软件系统的详细设计
  B)软件设计是将软件需求转换为软件表示的过程
  C)数据结构与数据库设计是软件设计的任务之一
  D)PAD图是软件详细设计的表示工具
  
(7)负责数据库中查询操作的数据库语言是
  A)数据定义语言
  B)数据管理语言
  C)数据操纵语言
  D)数据控制语言
  
(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是
  A)1:1联系 B)1:m联系
  C)m:1联系 D)m:n联系
(9)有三个关系R、S和T如下:
  
  则由关系R和S得到关系T的操作是
  A)自然连接 B)交 C)除 D)并
  
(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是
  A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}
  
(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是
  A)C语言程序仅可以编译执行
  B)C语言程序仅可以解释执行
  C)C语言程序既可以编译执行又可以解释执行
  D)以上说法都不对
  
(12)以下叙述中错误的是
  A)C语言的可执行程序是由一系列机器指令构成的
  B)用C语言编写的源程序不能直接在计算机上运行
  C)通过编译得到的二进制目标程序需要连接才可以运行
  D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
  
(13)以下选项中不能用作C程序合法常量的是
  A)1,234 B)'123'
  C)123 D)"\x7G"
  
(14)以下选项中可用作C程序合法实数的是
  A).1e0 B)3.0e0.2
  C)E9 D)9.12E
  
(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是
  A)a=(b=4)=3; B)a=b=c 1;
  C)a=(b=4) c; D)a=1 (b=c=4);
  
(16)有以下程序段
  char name[20];
  int num;
  scanf("name=%s num=%d",name;&num);
  当执行上述程序段,并从键盘输入:name=Lili num=1001

后,name的值为

  A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

  

(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

  A)必须是逻辑值 B)必须是整数值

  C)必须是正数 D)可以是任意合法的数值

(18)有以下程序

  #include

  main()

  { int x=011;

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

  }

  程序运行后的输出结果是

  A)12 B)11 C)10 D)9

 

(19)有以下程序

  #include

  main()

  { int s;

  scanf("%d",&s);

  while(s>0)

  { switch(s)

  { case1:printf("%d",s 5);

  case2:printf("%d",s 4); break;

  case3:printf("%d",s 3);

  default:printf("%d",s 1);break;

  }

  scanf("%d",&s);

  }

  }

  运行时,若输入1 2 3 4 5 0

,则输出结果是

  A)6566456 B)66656 C)66666 D)6666656

  

(20)有以下程序段

  int i,n;

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

  { n=rand()%5;

  switch (n)

  { case 1:

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

  case 2:

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

  case 0:exit(0);

  }

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

  }

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

  A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作

  C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行

 

(21)有以下程序

  #include

  main()

  { char s[]="012xy\08s34f4w2";

  int i,n=0;

  for(i=0;s[i]!=0;i )

  if(s[i]>='0'&&s[i]<='9') n ;

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

  }

  程序运行后的输出结果是

  A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句

  for(i=0,k=-1;k=1;k ) printf("*****\n");

  下面关于语句执行情况的叙述中正确的是

  A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环

  

(23)有以下程序

  #include

  main()

  { char b,c; int i;

  b='a'; c='A';

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

  { if(i%2) putchar(i b);

  else putchar(i c);

  } printf("\n");

  }

  程序运行后的输出结果是

  A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

  

(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是

  A)scanf("%f",&x[6]); B)scanf("%lf",*(x 6));

  C)scanf("%lf",p 6); D)scanf("%lf",p[6]);

  

(25)有以下程序(说明:字母A的ASCII码值是65)

  #include

  void fun(char *s)

  { while(*s)

  { if(*s%2) printf("%c",*s);

  s ;

  }

  }

  main()

  { char a[]="BYTE";

  fun(a); printf("\n");

  }

程序运行后的输出结果是

A) BY B) BT C) YT D) YE

  

(26)有以下程序段

  #include

  main()

  { …

  while( getchar()!='\n');

  …

  }

  以下叙述中正确的是

A)此while语句将无限循环

B) getchar()不可以出现在while语句的条件表达式中

  C)当执行此while语句时,只有按回车键程序才能继续执行

  D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序

  #include

  main()

  { int x=1,y=0;

  if(!x) y ;

  else if(x==0)

  if (x) y =2;

  else y =3;

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

  }

  程序运行后的输出结果是

  A)3 B)2 C)1 D) 0

(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是

  A)p=s; B)p=k; C)p=s[0]; D)k=s;

  

(29)有以下程序

  #include

  void fun(char *c)

  { while(*c)

  { if(*c>='a'&&*c<='z') *c=*c-('a'-'A');

  c ;

  }

  }

  main()

  { char s[81];

  gets(s); fun(s); puts(s):

  }

  当执行程序时从键盘上输入Hello Beijing

,则程序的输出结果是

  A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

  

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

  #include

  #define N 10

  void fun(int x[N])

  { int i=0;

  while(i<>

  }

  在程序中下划线处应填入的是

  A)x i B)&x[i 1]C)x (i ) D)&x[ i]

  

(31)有以下程序

  #include

  main()

  { char a[30],b[30];

  scanf("%s",a);

  gets(b);

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

  }

  程序运行时若输入:

  how are you? I am fine

  则输出结果是

  A)how are you? B)how I am fine are you? I am fine

  C)how are you? I am fine D)row are you?

  

(32)设有如下函数定义

  int fun(int k)

  { if (k<1) return 0;

  else if(k==1) return 1;

  else return fun(k-1) 1;

  }

  若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

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

  

(33)有以下程序

  #include

  int fun (int x,int y)

  { if (x!=y) return ((x y);2);

  else return (x);

  }

  main()

  { int a=4,b=5,c=6;

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

  }

  程序运行后的输出结果是 A)3 B)6 C)8 D)12

(34)有以下程序

  #include

  int fun()

  { static int x=1;

  x*=2;

  return x;

  }

  main()

  { int i,s=1;

  for(i=1;i<=3;i ) s*=fun();

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

  }

  程序运行后的输出结果是 A)0 B)10 C)30 D)64

  

(35)有以下程序

  #include

  #define S(x) 4*(x)*x 1

  main()

  { int k=5,j=2;

  printf("%d\n",S(k j));

  }

  程序运行后的输出结果是 A)197 B)143 C)33 D)28

  

(36)设有定义:struct {charmark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是

  A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

  

(37)有以下程序

  #include

  struct ord

  { int x,y;}dt[2]={1,2,3,4};

  main()

  {

  struct ord *p=dt;

  printf("%d,", (p->x));printf("%d\n", (p->y));

  }

  程序运行后的输出结果是 A)1,2 B)4,1 C)3,4 D)2,3

  

(38)有以下程序

  #include

  struct S

  { int a,b;}data[2]={10,100,20,200};

  main()

  { struct S p=data[1];

  printf("%d\n", (p.a));

  }

  程序运行后的输出结果是 A)10 B)11 C)20 D)21

  

(39)有以下程序

  #include

  main()

  { unsigned char a=8,c;

  c=a>>3;

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

  }

  程序运行后的输出结果是 A)32 B)16 C)1 D)0

  

(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是

  A)写操作结束后可以从头开始读 B)只能写不能读

  C)可以在原有内容后追加写 D)可以随意读和写

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】 测试



(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

  

(6)以下程序运行后的输出结果是 【6】。

  #include

  main()

  { int a;

  a=(int)((double)(3/2) 0.5 (int)1.99*2);

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

  }

  

(7)有以下程序

  #include

  main()

  { int x;

  scanf("%d",&x);

  if(x>15) printf("%d",x-5);

  if(x>10) printf("%d",x);

  if(x>5) printf("%d\n",x 5);

  }

  若程序运行时从键盘输入12

,则输出结果为 【7】 。

  

(8)有以下程序(说明:字符0的ASCII码值为48)

  #include

  main()

  { char c1,c2;

  scanf("%d",&c1);

  c2=c1 9;

  printf("%c%c\n",c1,c2);

  }

  若程序运行时从键盘输入48

,则输出结果为 【8】 。

  

(9)有以下函数

  void prt(char ch,int n)

  { int i;

  for(i=1;i<=n;i )

  printf(i%6!=0?"%c":"%c\n",ch);

  }

  执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】。

  #include

  main()

  { int x=10,y=20,t=0;

  if(x==y)t=x;x=y;y=t;

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

  }

  

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。

  void fun(int a[N],int k)

  { int i;

  for(i=k;i

  }

  

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。

  #include

  【12】 ;

  main()

  { double x,y,(*p)();

  scanf("%lf%lf",&x,&y);

  p=avg;

  printf("%f\n",(*p)(x,y));

  }

  double avg(double a,double b)

  { return((a b)/2);}

  

(13)以下程序运行后的输出结果是 【13】。

  #include

  main()

  { int i,n[5]={0};

  for(i=1;i<=4;i )

  { n[i]==n[i-1]*2 1; printf("%d",n[i]); }

  printf("\n");

  }

  

(14)以下程序运行后的输出结果是 【14】。

  #include

  #include

  #include

  main()

  { char *p; int i;

  p=(char *)malloc(sizeof(char)*20);

  strcpy(p,"welcome");

  for(i=6;i>=0;i--) putchar(*(p i));

  printf("\n-"); free(p);

  }

  

(15)以下程序运行后的输出结果是 【15】。

  #include

  main()

  { FILE *fp; int x[6]={1,2,3,4,5,6},i;

  fp=fopen("test.dat","wb");

  fwrite(x,sizeof(int),3,fp);

  rewind(fp);

  fread(x,sizeof(int),3,fp);

  for(i=0;i<6;i ) printf("%d",x[i]);

  printf("\n");

  fclose(fp);

  }

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计答案

一.选择题1-5 ABDDB

6-10 ACDCB 11-15 ADBAA

16-20 ADCAD 21-25 BDBCD

26-30 CDCCC 31-35 BBBDB

36-40 CDDCB

二,填空题

1) 顺序 2) DEBFCA 3) 单元测试 4) 主键 5) D 6) 3 7) 1217

8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715

14) e(E)moclew 15) 123456

2010年9月全国计算机等级考试二级C笔试试卷答案

一、选择题

1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB

21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空

1.1DCBA2345 2.n-1 3.25 4.结构化 5.物理设计 6.2008

7.15 8.非0 9. 1 4 13 40 10.i 11.2

12.a[row][col] 13.3 14.*s 15.FILE





全国计算机等级考试二级C语言历年试题及答案

2010年9月全国计算机等级考试二级C语言笔试试题及答案
一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))
(1)下列选项中不属于软件生命周期开发阶段任务的是
A)详细设计 B)概要设计 C)软件维护 D)软件测试
(2)树是结点的集合,它的根结点数目是
A)有且只有1 B)1或多于1 C)0或1 D)至少2
(3)在面向对象方法中,实现信息隐蔽是依靠
A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类
(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和
A)语句成分 B)变量成分 C)对象成分 D)传输成分
(5)冒泡排序在最坏情况下的比较次数是
A)n/2 B)nlog2n C)n(n-1)/2 D)n(n 1)/2
(6)下列叙述中,不属于软件需求规格说明书的作用的是
A)作为确认测试和验收的依据
B)反映出用户问题的结构,可以作为软件开发工作的基础和依据
C)便于用户、开发人员进行理解和交流
D)便于开发人员进行需求分析
(7)下列叙述中错误的是
A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成
C)C程序可以由一个或多个函数组成 D)一个函数可单独作为一个C程序文件存在
(8)下列不属于软件工程的3个要素的是
A)方法 B)过程 C)工具 D)环境
(9)下列叙述中正确的是
A)数据库系统是一个独立的系统,不需要操作系统的支持
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库管理系统就是数据库系统
D)以上三种说法都不对
(10)下列叙述中正确的是
A)每个C程序文件中都必须有一个main()函数
B)在C程序的函数中不能定义另一个函数
C)C程序可以由一个或多个函数组成
D)在C程序中main()函数的位置是固定的
(11)将E-R图转换到关系模式时,实体与联系都可以表示成
A)属性 B)关系 C)键 D)域
(12)下列定义变量的语句中错误的是
A)double int_; B)int _int; C)char For D)float USS
(13)下列叙述中正确的是
A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义 D)C语言的函数可以嵌套调用
(14)以下选项中,合法的一组C语言数值常量是
A) 0x8A B)12 C).177 D) 028
(15)以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
(16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是
A)scanf("%d",&p); B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p); D) scanf("%d",a,b,c);
(17) 有以下程序
main()
{int x,y,z;
x=y=1;
z=x ,y , y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是
A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1
(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是
A)***a=25,b=13,c=19 B)***a=26,b=14,c=19
C)### a=25,b=13,c=19 D)### a=26,b=14,c=19
(19)下列程序段的输出结果是
int a=1234;
float b=123.456;
double c=12345.54321;
printf("-,%2.1f,%2.1f",a,b,c);
A)无输出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5
(20)有以下程序
main()
{int a=0,b=0;
a=10; /*给a赋值
b=20; 给b赋值 */
printf("a b=%d\n",a b); /* 输出计算结果 */
}
程序运行后输出结果是
A)30 B)a b=30 C)a b=0 D)出错
(21)若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是
#include
main()
{ char c;
int v0=1,v1=0,v2=0;
do{ switch(c=getchar())
{ case ′a′:case ′A′:
case ′e′:case ′E′:
case ′i′:case ′I′:
case ′o′:case ′O′:
case ′u′:case ′U′:v1 =1;
default:v0 =1;v2 =1;
}
} while(c!=′\n′);
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8
C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12
(22) 有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);
}
程序的运行结果是
A)732 B)433 C)852 D)874
(23) 设有以下程序段
int x=0,s=0;
while(!x!=0)s = x;
printf("%d",s);

A)运行程序段后输出0 B)运行程序段后输出1
C)程序段中的控制表达式是非法的 D)程序段执行无限次
(24)有以下程序
fun(int x,int y){return(x y);}
main()
{int a=1,b=2,c=3,sum;
sum=fun((a ,b b,a b),c );
printf("%d\n",sum);
}
执行后的输出结果是
A)5 B)7 C)8 D)3
(25)执行下面的程序段后,变量k中的值为
int k=3, s[2];
s[0]=k; k=s[1]*10;
A)不定值 B)35 C)31 D)20
(26)以下叙述中错误的是
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
(27)以下程序段的描述,正确的是
x=-1;
do
{x=x*x;} while(!x);
A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误
(28)有以下程序
fun(int x,int y)
{static int m=0,i=2;
i =m 1;m=i x y; return m;
}
main()
{int j=1,m=I,k;
k=fun(j,m); printf("%d",k);
k=fun(j,m); printf("%d\n",k)
}
执行后的输出结果是
A)5,5 B)5,11 C)11,11 D)11,5
(29)有以下程序
fun(int x)
{int p;
if(x==0║x= =1) return(3);
p=x-fun(x=2);
retum p;
}main()
{ prinf("%d\n",fun(7));}
执行后的输出结果是
A)7 B)3 C)3 D)0
(30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=&a;,当执行p ;后,下列说法错误的是
A)p向高地址移了一个字节 B)p抽高地址移了一个存储单元
C)p向高地址移了两个字节 D)p与a 1等价
(31)有以下程序
main()
{int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是
A)1 B)2 C)3 D)4
(32)下列程序执行后的输出结果是
void func1(int i);
void func2(int i);
char st[]="hello,friend!";
void func1(int i)
{ printf("%c",st[i]);
if(i<3){i =2;func2(i);}
}
void func2(int i)
{ printf("%c",st[i]);
if(i<3){i =2;func1(i);}
}
main()
{ int i=0; func1(i); printf("\n");}
A)hello B)hel C)hlo D)hlm
(33)在下述程序中,判断i>j共执行的次数是
main()
{ int i=0, j=10, k=2, s=0;
for (;;)
{ i =k;
if(i>j)
{ printf("%d",s);
break;
} s =i;
}
}
A)4 B)7 C)5 D)6
(34)以下函数返回a所指数组中最大值所在的下标值
fun(int *a,int n)
{ int i,j=0,p;
p=j;
for(i=j;iif(a[i]>a[p]);
return(p);
}
在下划线处应填入的内容是
A)i=p B)a[p]=a[i] C)p=j D)p=i
(35)下列程序执行后的输出结果是
main()
{ int a[3][3], *p,i;
p=&a[0][0];
for(i=1; i<9; i )p[i]=i 1;
printf("%d\n",a[1][2]);
}
A)3 B)6 C)9 D)随机数
(36) 有以下程序
#include
void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{int t,i,j;
for(i=0;ifor(j=i 1;jif (a}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c 4,6);
for (i=0;i<10;i ) printf("%d,",c);
printf("\n");
}
程序运行的结果是
A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,
C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
(37)以下程序的输出结果是#include
void prt (int *x, int*y, int*z)
{ printf("%d,%d,%d\n", *x, *y,*(z ));}
main()
{ int a=10,b=40,c=20;
prt (&a,&b,&c);
prt (&a,&b,&c);
}
A)11,42, 31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
(38) 有以下程序:
#include
void fun(char *t,char *s)
{
while(*t!=0)t ;
while((*t =*s )!=0);
}
main()
{
char ss[10]=”acc”,aa[10]=”bbxxyy”;
fun(ss,aa);
printf(“%s,%s\n”,ss,aa);
}
程序运行结果是
A) accxyy , bbxxyy B) acc, bbxxyy
C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy
(39) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是
A)20 30 B)20 50 C)30 50 D)30 20
(40) 有以下程序
main()
{int x[3][2]={0},I;
for(I=0;I<3;I ) scanf("%d",x[i]);
printf("===\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入:246,则输出结果为
A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6
(41)有以下程序
int add(int a,int b){return b};}
main()
{int k,(*f)(),a=5,b=10;
f=add;

}
则以下函数调用语句错误的是
A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);
(41)有以下程序
#include
main(int argc,char *argv[])
{int i=1,n=0;
while(i
<arge){n=n strlen(argv[i]);i ;}
printf(“%d\n”,n);

}

该程序生成的可执行文件名为:proc.exe。若运行时输入命令行:

proc 123 45 67

则程序的输出结果是

A)3 B)5 C)7 D)11

(42)有以下程序

void fun2(char a, char b){printi(“%b%c”,a,b);}

char a= ‘A’,b= ‘B’;

void fun1( ){ a= ‘C’l b= ‘D’; }

main( )

{ fun1( )

printf( “%c%c”,a,b);

fun2(‘E’, ‘F’);

}

程序的运行结果是

A)CDEF B)ABEF C)ABCD D)CDAB

(43)有以下程序

#include

#define N 5

#define M N 1

#define f(x) (x*M)

main()

{int i1,i2;

i1=f(2);

i2=f(1 1);

printf(“%d %d\n”,i1,i2);

}

程序的运行结果是

A)12 12 B)11 7 C)11 11 D)12 7

(44)设有以下语句

typedef struct TT

{char c; int a[4];}CIN;

则下面叙述中正确的是

A)可以用TT定义结构体变量 B)TT是struct类型的变量

C)可以用CIN定义结构体变量 D)CIN是struct TT类型的变量

(45)有以下结构体说明、变量定义和赋值语句

struct STD

{char name[10];

int age;

char sex;

}s[5],*ps;

ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是

A)scanf(“%s”,s[0].name); B)scanf(“%d”,&s[0].age);

C)scanf(“%c”,&(ps>sex)); D)scanf(“%d”,ps>age);

(46)若有以下定义和语句

union data

{ int i; char c; float f;}x;

int y;

则以下语句正确的是

A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);

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

s=32; s^=32;printf(“%d”,s);

A)-1 B)0 C)1 D)32

(48) 若程序中有宏定义行:#define N 100 则以下叙述中正确的是

A)宏定义行中定义了标识符N的值为整数100

B)在编译程序对C源程序进行预处理时用100替换标识符N

C) 对C源程序进行编译时用100替换标识符N

D)在运行时用100替换标识符N

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

A)C语言中的文件是流式文件,因此只能顺序存取数据

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

(50)有以下程序

#include

main()

{FILE *fp; int i;

char ch[]=”abcd”,t;

fp=fopen(“abc.dat”,”wb ”);

for(i=0;i<4;i )fwriter&ch[],1,1fp;

fseek(fp,-2L,SEEK_END);

fread(&t,1,1,fp);

fclose(fp);

printf(“%c\n”,t);

}

程序执行后的输出结果是

A)d B)c C)b D)a

二、填空题(每空2分,共40分)

(1)在面向对象方法中,类之间共享属性和操作的机制称为 【1】 。

(2)一个关系表的行称为 【2】 。

(3)耦合和内聚是评价模块独立性的两个主要标准,其中 【3】 反映了模块内各成分之间的联系。

(4)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的【4】存储结构.

(5) 【5】 的任务是诊断和改正程序中的错误。

(6) 以下程序的输出结果是【6】.

#include

main()

{ int n=12345,d;

while(n!=0){ d=n; printf("%d",d); n/=10;}

}

(7)以下程序运行后的输出结果是 【7】 。

main()

{

int m=011,n=11;

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

}

(8)有以下程序,若运行时从键盘输入:18,11,则程序输出结果是 【8】 。

main()

{ int a,b;

printf("Enter a,b:");scanf("%d,%d",&a,&b);

while(a!=b)

{ while(a>b) a-=b;

while(b>a) b-=a;

}

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

}

(9) 有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k ) s=s 1.0/(k*(k 1));

printf("s=%f\n\n",s);

请填空,使下面程序段的功能为完全相同

s=1.0;k=1;

while(_【9】_______){ s=s 1.0/(k*(k 1)); _【10】_______;}

printf("s=%f\n\n",s);

(10)执行以下程序的输出结果是【11】______.

#include

main()

{ int i,n[4]={1};

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

{ n=n[i-1]*2 1; printf("%d",n); }

}

(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.

#include

viod f(int x[],int n)

{ int p0,p1,i,j,t,m;

i=j=x[0]; p0=p1=0;

for(m=0;m{ if(x[m]>i) {i=x[m]; p0=m;}

else if(x[m]}

t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;

t=x[p1];x[p1]= _【12】_______; 【13】______=t;

}

main()

{ int a[10],u;

for(u=0;u<10;u ) scanf("%d",&a);

f(a,10);

for(u=0;u<10;u ) printf("%d",a);

printf("\n");

}

(12)下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新的字符串。例如,若t所指字符串为efgh,调用strcpy2后,s所指字符串为efghefgh。请填空。

#include

#include

void strcpy2(char *s,char *t)

{ char *p=t;

while(*s =*t );

s= 【14】 ;

while( 【15】 =*p );

}

main()

{ char str1[100]="abcd",str2[]="efgh";

strcpy2(str1 ,str2); printf("%s\n",str1);

}

(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.

#include

#include

main()

{ int num[26]={0},i; char c;

while((_【16】_______)!='#')

if(isupper(c)) num[c-‘A’] = 【17】_______;

for(i=0;i<26;i )

Printf("%c:%d\n",i 'A',num);

}

(14)以下程序中,函数fun的功能是计算x2-2x 6,主函数中将调用fun函数计算:

y1=(x 8)2-2(x 8) 6

y2=sin2(x)-2sin(x) 6

请填空。

#include "math.h"

double fun(double x) { return(x*x-2*x 6); }

main()

{

double x,y1,y2;

printf("Enter x:"); scanf("%lf",&x);

y1=fun( 【18】 );

y2=fun( 【19】 );

printf("y1=%lf,y2=%lf\n",y1,y2);

}

(15) 以下程序的输出结果是_【20】______.

#include

#define M 5

#define N M M

main()

{ int k;

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

}

一、选择题答案:

1-10:CACDC DADBA 11-20:BDDBA CCCCB 21-30:DCBCA CCBCA

31-40:CCDAB DCDAB 41-50:CABCD BBBDB

二、填空题答案:

1.继承 2. 元组 3.内聚 4.顺序 5. 程序调试

6. 54321 7.10 11 8. 1 9.k<=n k

10. 3 7 5 11.x[0] x[0] 12.s--,*s 13.c=getchar() 14. (x 8),sin(x) 15.55

希望对你有所帮助

阅读更多 >>>  计算机上的无线开关在哪里

计算机二级C语言选择题及答案(2)

  }
  printf("%d\n",num);
  }
  程序执行后的输m结果是(  )。
  A.35
  B.37
  C.39
  D.3975
  32.以下程序的'输出结果是(  )。
  main()
  {char st[20]="hello\0\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 ENE 代表的起始点是(  )。
  A.文件开始
  B.文件末尾
  C.文件当前位置
  D.以上都不对
  35.下述程序的输出结果是(  )。
  #include
  main()
  { int i;
  for(i=l;i<=10;i )
  {if(i*i>=20)&&(i*i<=100))
  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[o]的值加上6
  37.设变量已正确定义,则以下能正确计算f=n!的程序是(  )。
  A.f=0:
  for(i=1;i<=n;i )f*=i:
  B.F=1:
  for(i=l;i<2n;i )f*=i:
  C.f=l:
  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[0][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
  40.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是(  )。
  A.直接按系统设定的标准方式搜索目录
  B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
  C.仅仅搜索源程序所在目录
  D.仅仅搜索当前目录
  【答案与解析】
  1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。
  2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。
  3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。
  4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用GOT0语句。其他三项为结构化程序设计的原则。
  5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。
  6.C。【解析】面对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
  7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。
  8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。
  9.A。【解析】①对软,牛开发的进度和费用估计不准确:②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普能及深入的趋势。
  10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。
  11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统fDBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。
  12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。
  13.D。【解析】本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||” 的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x  14.C。【解析】第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。
  15.C。【解析】函数fun(int x,int y)的功能是返回x y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此,逗号表达式“a ,b ,aq 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 1,a自加等于1,因为case 1后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。
  18.D。【解析】本题考梦自增运算符“ ”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“ ”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。 j是先自加后运算,因此运算时j的值等于3,所以表达式 j=3成立,即表达式的值为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 1,因为没有遇到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一l6:当i=4时,执行default,a=a 3=19,结束循环。
  20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。
  21.A。【解析】循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0] a[1][1] a[2][0] a [2][1] a[2][2]=3 4 5 6 0=18。
  22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k 自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。
  23.A。【解析】通过地址来引用数组元素的方法有下列5种:
  (1)a[i][j];(2)*(a[i] j);(3)*(*(a j) i);(4)* (a[i][j]);(5)(&aE0][0]q-3*i j)。故A正确。
  24.C。【解析】选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。
  25.D。【解析】由题目ee线性链表的定义可知,要将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的值自加1两次,当退出内层for循环时,x=7,然后执行x ,得到x=8,所以打印输出变量x的值为8。
  27.C。【解析】子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2) 的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.O。
  28.C。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s =*(t i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t i)代表数组的第i 1个元素。所以程序运行的结果是1 3 5 7 9=25,即变量S的值等于25。
  29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为
  fun(10)=10…fun(9)=104-94-fun(8)=104-9 84- 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

网站数据信息

"计算机二级c语言题库真题,计算机等级二级C语言模拟试题1(十)"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:计算机二级c语言题库真题,计算机等级二级C语言模拟试题1(十)的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!