国家二级C++机试(操作题)-试卷22
2022年9月全国计算机等级考试二级C笔试试卷与答案

2022年9月全国计算机等级考试二级C笔试试卷与答案C++语言程序设计(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列链表种,其逻辑结构属于非线性结构的是A)循环链表B)双向链表C)带链的栈D)二叉链表(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A)16B)20C)0或35D)15(3)下列关于栈的叙述中,正确的是A)二维表B)树状结构C)属性D)网状结构A)程序流程图B)数据流图(DFD图)C)方框图D)软件结构图(8)软件需求规格说明书的作用不包括A)软件可行性研究的依据B)用户与开发人员对软件要做什么的共同理解C)软件验收的依据D)软件设计的依据(9)下面属于黑盒测试方法的是A)逻辑覆盖B)语句覆盖C)路径覆盖D)边界值分析(10)下面不属于软件设计阶段任务的是A)数据库设计B)算法设计C)软件总体设计D)制定软件确认测试计划(11)下列关于函数重载的叙述中,错误的是A)重载函数的参数个数可以不同B)重载函数的参数类型可以不同C)重载函数的返回值类型必须不同D)重载函数的参数个数或参数类型必须有所不同(12)下列关于类成员对象构造函数调用顺序的叙述中,正确的是A)与它们在初始化列表中顺序相同B)与它们在类中声明的顺序相同C)与析构函数的调用顺序相同D)顺序不确定(13)下列关于派生类的叙述中,错误的是A)派生类至少要有一个基类B)派生类中包括了从基类继承的成员C)一个派生类可以作为另一个派生类的基类D)基类成员被派生类继承以后访问权限保持不变(14)下列关于运算符重载的叙述中,正确的是A)通过运算符重载机制可以为C++语言扩充新的运算符B)运算符重载的作用是使已有的运算符作用于类的对象C)重载运算符的操作数类型可以全部为基本类型D)所有运算符都可以重载(15)下列关于模板的叙述中,错误的是A)调用模板函数时,有时可以省略模板实参B)函数模板的每个实例就是一个函数定义C)类模板的每个实例就是一个类定义D)类模板的实例是一个类对象(16)下列关于输入输出流的叙述中,正确的是(17)下列选项中可以做C++标识符的是A)_256B)fat/pigC)deleteD)5char(18)关键字unigned不能修饰的类型是A)charB)intC)floatD)longint(19)有如下程序:#includeuingnamepacetd;intmain(){chara;cin>>a;if(a='某')cout<A)某某某B)###C)某某某###D)无输出(20)下列对一维数组a 的定义中,语法正确的是A)inta(10)B)intn=7,a[n];C)intn;cin>>n;inta[n];D)contintize=10;inta[ize];(21)假设函数fun已经定义,其原型为”voidfun(inta,intb=7,char某p=”某某”);”,下列函数调用中错误的是A)fun(5)B)fun(5,8)C)fun(6,”##”)D)fun(0,0.”==”)(22)已经函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是A)voidprint()cont;B)contvoidprint();C)voidcontprint();D)voidprint(cont);(23)已知基类Employee只有一个构造函数,其定义如下:Employee::Employee(intn):id(n){}Manager是Employee的派生类,则下列对Manager的构造函数的定义中,正确的是A)Manager::Manager(intn):id(n){}B)Manager::Manager(intn){id=n;}C)Manager::Manager(intn):Employee(n){}D)Manager::Manager(intn){Employee(n);}A)c1.operator某(c2.operator+(c1))B)c1.operator+(c2.operator某(c1))C)c1.operator某(c1.operator+(c2))D)c2.operator+(c1.operator某(c1))(25)下列类模板的定义中语法格式错误的是A)templateclaBuffer{/某…某/};B)templateclaBuffer{/某…某/};C)templateclaBuffer{/某…某/};D)templateclaBuffer{/某…某/};(26)在C++中既可以用于文件输入又可以用于文件输出的流类是A)ftreamB)iftreamC)oftreamD)iotream(27)有如下类定义:claMyCla{intb;chara;doublec;public:MyCla():c(0.0),b(0),a(','){}};创建这个类的对象时,数据成员的初始化顺序是A)a,b,cB)c,b,aC)b,a,cD)c,a,b(28)有如下类定义claMyCla{int某;public:MyCla():某(0),y(0){}intGet某(){return某;}voidSet某(int某某){某==某某;}inty;};已知obj是类MyCla的对象,下列语句中违反类成员访问控制权限的是A)obj.某;B)obj.y;C)obj.Get某();D)obj.Set某(0);(29)有如下类定义claTet{chara;contcharb;public:Tet(charc){a=c;b=c;}//第1行voidf(chara)cont{thi->a=a;}//第2行voidg(charb){thi->b=b;}//第3行charh()cont{returna;}//第4行};编译时没有错误的行是A)第1行B)第2行C)第3行D)第4行(30)有如下程序:#includeuingnamepacetd;claA{public:A(){coutclaB:publicA{public:B(){cout<intmain(){Bobj;return0;}运行这个程序的输出结果是A)GATCB)AGTCC)GACTD)AGCT(31)有如下程序:#includeuingnamepacetd;claBae{public;voidfun(){cout<claDerived:publicBae{public;voidfun(){cout<intmain(){Derivedd;d.fun();return0;}若程序的输出结果是BD,则划线处缺失的部分是A)fun()B)Bae.fun()C)Bae::fun()D)Bae->fun()(32)有如下程序:#includeuingnamepacetd;claB{public;virtualvoidf(){cout<claD;publicB{public;voidf(){cout<voidh(B某p){p->f();p->g();}intmain(){Dobj;h(&obj);return0;}运行这个程序的输出结果是:A)DDB)BBC)BDD)DB(33)有如下程序:#include#includeuingnamepacetd;claMyString{public;chartr[80];MyString(contchar某){trcpy(tr,);}MyString&operator+=(MyStringa){trcat(tr,a.tr);re turn某thi;}};otream&operator<intmain(){MyString某(\,y(\;cout<运行这个程序的输出结果是A)abcB)cdeC)abcdeD)abccde(34)有如下程序:#include#includeuingnamepacetd;intmain(){cout<A)##OK123B)##OK#123C)OK##123D)OK##123#(35)有如下语句序列:iftreaminfile(\if(infile.good())cout<cout<oftreamoutfile(\if(outfile.fail())cout<若执行这个语句序列显示的是BD,则说明文件DATA.DATA)以读方式打开成功B)以读方式打开失败,但以写方式打开成功C)以读方式打开失败,以写方式打开也失败D)以读方式打开成功,以写方式打开也成功二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
国家二级C语言机试(选择题)模拟试卷229(题后含答案及解析)

国家二级C语言机试(选择题)模拟试卷229(题后含答案及解析) 题型有:1.1.以下选项中非法的C语言字符常量是A.’\b’B.’\007’C.’aa’D.’\xaa’正确答案:C解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。
知识模块:C语言基础知识2.在调用函数时,如果参数是简单变量,它与对应形参之间的数据传递方式是( )。
A.单向值传递B.地址传递C.由实参传给形参,再由形参传回实参D.传递方式由用户指定正确答案:A解析:C语言规定,简单变量或数组元素为实参时,是单向值传递,即实参可以改变形参的值,但形参不能改变实参的值。
知识模块:函数与数组3.数据库应用系统中的核心问题是A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训正确答案:A解析:在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。
所以数据库设计是数据库应用的核心。
知识模块:公共基础知识4.合法的C语言标识符是( )。
A._1_B.2_8C.voidD.unsigned正确答案:A解析:用户的标识符只能由字母或下划线开始,其他任何字符开始均会出错。
一般强调文见其义的命名方法。
但是C语言中的保留字不能用作用户的标识符。
而选项C和D全部为保留字,选项B中以数字开头,这些都不正确。
知识模块:C语言基础知识5.以下叙述中错误的是( )。
A.gets函数用于从终端读入字符串B.getehar函数用于从磁盘文件读入字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件正确答案:B解析:本题考查字符处理函数和文件读写函数,属于基础知识。
其中B选项的getchar函数用于从终端读入字符。
知识模块:基本语句6.有两个关系R,S如下,由关系R和S通过运算得到关系T,则所使用的操作为()。
A.并B.自然连接C.笛卡尔积D.差正确答案:D解析:由关系可以看出,关系T是由关系R中减去关系R和关系S共有的元组得到的,所以答案选择D。
3月全国计算机二级c语言考题试卷及答案

3月全国计算机二级C语言考题试卷及答案一、选择题(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.2C)E9 D)9.12E(15)若有定义语句:int a=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)LiliB)name=LiliC)Lili num=D)name=Lili num=1001(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值 B)必须是整数值C)必须是正数 D)可以是任意合法的数值(18)有以下程序#includemain(){ int x=011;printf("%d\n",++x);}程序运行后的输出结果是A)12 B)11 C)10 D)9(19)有以下程序#includemain(){ 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)有以下程序#includemain(){ 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)有以下程序#includemain(){ 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)设有定义:double x[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)#includevoid 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)有以下程序段#includemain(){ …while( getchar()!='\n');…}以下叙述中正确的是A)此while语句将无限循环B) getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行(27)有以下程序#includemain(){ 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)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是A)p=s; B)p=k; C)p=s[0]; D)k=s;(29)有以下程序#includevoid 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)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
国家二级C语言机试(操作题)模拟试卷721(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷721(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。
例如,N=3,m=2,有下列矩阵 1 2 3 4 5 6 7 8 9 程序执行结果为0 0 1 0 0 4 0 0 7 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N],int m)4 { int i,j;5 /**********found**********/6 for(i=0;i<N;__1__)7 { for(j=N-1-m;j >=0;j--)8 /**********found**********/9 t[i][j+__2__]=t[i][j];10 /**********found**********/11 for(j=0;j<__3__;j++)12 t[i][j]=0;13 }14 }15 main( )16 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j,m;17 printf(‘‘\nThe original array:\n’’);18 for(i=0;i<N;i++)19 { for(j=0;j<N;j++)20 printf(‘‘%2d’’,t[i][j]);21 printf(‘‘\n’’);22 }23 printf(‘‘Input m(m<=%d):’’,N);scanf(‘‘%d’’,&m);24 fun(t,m);25 printf(‘‘\nThe result is:\n’’);26 for(i=0;i<N;i++)27 { for(j=0;j<N;j++).28 printf(‘‘%2d’’,t[i][j]);29 printf(‘‘\n’’);30 }31 }正确答案:(1)i++(2)m(3)m解析:函数fun的功能是将每行元素中的值均右移m个位置。
全国计算机二级《C语言》考试题库与答案

全国计算机二级《C语言》考试题库与答案全国计算机二级《C语言》考试题库与答案在学习、工作中,我们都离不开试题,借助试题可以检验考试者是否已经具备获得某种资格的基本能力。
什么样的试题才能有效帮助到我们呢?以下是店铺为大家收集的全国计算机二级《C语言》考试题库与答案,欢迎大家分享。
全国计算机二级《C语言》考试题库与答案篇1(1)下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除(2)下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法都不正确某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。
A.3B.4C.6D.7软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( ):A.学生成绩管理系统B.c语言编译程序C.UNIX操作系统D.数据库管理系统(5)结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构(6)下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是( )。
A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言一个教师可讲授多门课程,一门课程可由多个教师讲授。
则实体教师和课程间的联系是( )。
A.1:1联系B.1:m联系C.m:1联系D.m:n联系(9)已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。
以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。
国家二级ACCESS机试(操作题)模拟试卷234(题后含答案及解析)

国家二级ACCESS机试(操作题)模拟试卷234(题后含答案及解析) 全部题型 2. 基本操作题 3. 简单应用题 4. 综合应用题基本操作题1.有一个名为samp1.accdb数据库。
修改职工表“employee”,增加“姓名”字段。
其数据类型为文本型,长度为6,并对应职工号添加其姓名,见下表:正确答案:步骤1:打开“samp1.accdb”数据库窗口,右键单击“employee”表,选择“设计视图”快捷菜单命令,打开表设计视图。
步骤2:在最后一个字段的下一行的“字段名称”列输入:姓名,在“数据类型”列选择“文本”,在“字段大小”行输入:6。
单击快速访问工具栏中的“保存”按钮并关闭设计视图。
步骤3:双击“employee”表打开数据表视图,在数据表视图下按题目中表所示的内容输入数据。
步骤4:单击快速访问工具栏中的“保存”按钮,关闭表。
2.判断并设置表“employee”的主键,同时将上面增加的“姓名”字段隐藏起来。
正确答案:步骤1:右键单击“employee”表,选择“设计视图”快捷菜单命令,打开表设计视图。
步骤2:单击“职工号”所在行,右键单击鼠标,在快捷菜单中选择“主键”命令。
单击快速访问工具栏中的“保存”按钮并关闭设计视图。
步骤3:双击“employee”表打开数据表视图,右击“姓名”列,选择“隐藏字段”快捷菜单命令。
步骤4:单击快速访问工具栏中的“保存”按钮。
3.设置表“employee”的“基本工资”字段的默认值为:1000。
正确答案:步骤l:右键单击“employee”表,选择“设计视图”快捷菜单命令,打开表设计视图。
选中“基本工资”字段,在“字段属性”的“默认值”行中输入:1000。
步骤2:单击快速访问工具栏中的“保存”按钮进行保存。
4.在当前数据库中,对表“employee”做一个备份,命名为表“tEmp”。
正确答案:步骤1:打开“表”面板,右键单击“employee”,选择“复制”命令,在面板空白处右键单击选择“粘贴”命令,在【粘贴表达式】对话框中的“表名称”输入“temp”,在“粘贴选项”中选择“结构和数据”。
国家二级C++机试(操作题)模拟试卷299(题后含答案及解析)

国家二级C++机试(操作题)模拟试卷299(题后含答案及解析) 全部题型 2. 基本操作题 3. 简单应用题 4. 综合应用题基本操作题1.请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,其中在编辑窗口内显示的主程序文件中定义有类ABC和主函数main。
程序文本中位于每行“//ERROR ****found****”之后的一行语句有错误,请加以改正。
改正后程序的输出结果应该是:21 23 注意:只修改每个“//ERROR ****found****”下面的一行,不要改动程序中的其他任何内容。
#include<iostream>using namespace std;class ABC(public://ERROR *******found******* ABC( ){a=0;b=0;c=0;} ABC(int aa,int bb,int cc);void Setab( ){++a,++b;} int Sum( ){return a+b+c;}private:int a,b;const int c;};ABC∷ABC(int aa,int bb,intcc):c(cc){a=aa;b=bb;}int main( ){ ABC x(1,2,3),y(4,5,6);ABC z,*w=&z;w->Setab( );//ERROR*******found******* int s1=x.Sum( )+y->Sum( );cout:<<s1<<”;//ERROR *******found******* int s2=s1+w.Sum( );cout<<s2<<end1;return 0;}正确答案:(1)ABC( ):a(0),b(0),c(0){} (2)int s1=x.Sum( )+y.Sum( );(3)int s2=s1+w->Sum( ):解析:(1)主要考查考生对构造函数的掌握情况,根据私有成员的定义:const int c;可知,c为常变量,因此构造函数必须使用成员列表初始化来给c赋初始值。
国家二级C语言机试(选择题)模拟试卷118(题后含答案及解析)

国家二级C语言机试(选择题)模拟试卷118(题后含答案及解析) 题型有:1.1.下列叙述中正确的是( )。
A.二分查找法只适用于顺序存储的有序线性表B.二分查找法适用于任何存储结构的有序线性表C.二分查找法适用于有序循环链表D.二分查找法适用于有序双向链表正确答案:A解析:二分查找法(又称对分查找法)只适用于顺序存储的有序表。
在此所说的有序表是指线性表的中元素按值非递减排列(即从小到大,但允许相邻元素值相等)。
知识模块:公共基础知识2.下列不属于软件设计阶段任务的是( )。
A.软件总体设计B.算法设计C.制定软件确认测试计划D.数据库设计正确答案:C解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计,所以A、B、D选项正确,C选项为软件测试阶段的任务。
知识模块:公共基础知识3.以下选项中合法的实型常量是A..914B.3.13e-2.1C.0D.2.0”10正确答案:A解析:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。
实型常量分为以下两种形式:①小数形式:小数形式是山数字和小数点组成的一种实数农示形式。
例如0.345、.123、0.0等是合法的实数。
这种表示形式必须要有小数点。
②指数形式:在C语言中,用“e”或“E”后跟一个整数来表示以10为底的幂数。
注意:字母“e”或“E”之前必须要有数字,后面的指数必须为整数。
选项B)中e后必须为整数,选项C)没有小数点,向选项D)则出现非法字符*。
知识模块:C语言基础知识4.以下叙述中正确的是A.整型常量和实型常量都是数值型常量B.常量的类型不能从字面形式上区分,需要根据类型名来决定C.预定义的标识符是C语言关键字的一种,不能另作它用D.只能在函数体内定义变量,其他地方不允许定义变量正确答案:A解析:整型常量和实型常量都是数值型常量,选项A正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B错误:预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C错误;变量可以定义住程序中任何的地方,属于不同的变量,选项D错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家二级C++机试(操作题)-试卷22(总分:6.00,做题时间:90分钟)一、基本操作题(总题数:1,分数:2.00)1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:Hello Visual C++!Hello Visual C++!!注意:错误的语句在//******error******的下面,修改该语句即可。
#include<iostream.h>class CMyObjett{public:CMyObject(){//******error******cout<<"Hello,"VisualC++!"<<endl;}CMyObject(int n){//******error******cout<<"Hello,\nVisual C++'!"<<endl;}//******error******^CMyObject(){}};void main(){CMyObject obj1;CMyObject obj2(0);}(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:(1)cout<<"Hello," (2)cout<<"Helio,\ (3)~CMyObject())解析:解析:(1)由程序的运行结果可知,语句CMyObject obj1;定义obj1对象调用默认的构造函数,此时屏幕上输出“Hello Visual C++!”cout流中的数据是用流插入运算符“<<”顺序加入的,第1个标识下“Hello,”字符串插在输出流中,因此必须加双引号引用起来,即第1个标识下应该为“cout<<”"Hello,"”。
(2)第2个标识下“\n”表示换行,与要求的输出结果不同,因此第2个标识下应改为“cout<<"Hello,\”。
(3)析构函数是一个特殊的函数,其函数名与类名相同,并在其名加“~”,用来与构造函数加以区别,因此第3个标识下应改为“~CMyObject()”。
二、简单应用题(总题数:1,分数:2.00)2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。
阅读下列函数说明和代码。
函数MergeAndSort(int s[],int e[],int a[],int m,int n)实现将两个数组合并。
这两个数组已经有序,按照由小到大的顺序排列。
例如:e[]={1,3,5,6},m是数组e的长度,即为4。
a[]={2,4,5,7,11,13},n是数组a的长度,即为6。
则执行的结果为:s[]={1,2,3,4,5,6,7,11,13}补充函数fun(int s[],int e[],int a[],int m,int n),使之实现上述要求。
注意:请勿改动主函数。
#include<iostream.h>void MergeAndSort(int s[],int e[],int a[],int m,int n){}int main(){int data[20],i;int a[]=(1,3,5,6);int b[]={2,4,5,7,11,13};cout<<"a[]=";for(i=0;i<4;i++)cout<<a[i]<<',';cout<<endl;cout<<"b[]=";for(i=0;i<6;i++)cout<<b[i]<<',';cout<<endl;MergeAndSort(data,a,b,4,6);cout<<"s[]=";for(i=0;i<9;i++)cout<<data[i]<<',';cout<<endl;return0;}(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:int i,j,k;i=0;j=0;k=0;while(i<m && j<n) { if(e[i]<a[j]) { S[k++]=e[i++];//取小的,因为从小到大排序 } else if(e[i]==a[j])//相等,取e[i]或a[j]都可 { s[i++]=e[i];i++; j++; } else//e[i]>a[j],取小的a[j] { s[k++]=a[j++]; } } while(i<m)s[k++]=e[i++];//如果数组e后面还有没有加进来的元素,则加进去while(j<n)s[k++]=a[j++];//如果数组a后面还有没有加进来的元素,则加进去)解析:解析:(1)由审题分析可知,可设置循环来逐个读取e数组和a数组的元素值,然后选择小的元素放在数组s中,如果相等则取a数组元素或e数组元素均可,可以利用if else语句来进行判断。
(2)由于数组e和数组a长度可能不一定相同,因此在循环结束之后,还需要把长度长的数组的剩余的元素添加到s数字中,即循环结束后如果e数组内还有字符的话把e数组内剩下的字符添加到s数组内,同样如果a数组内还有字符的话把a数组内剩下的字符添加到S数组内。
三、综合应用题(总题数:1,分数:2.00)3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
完成以下功能:(1)定义CMyTime的私有成员函数m year、m month类型为int,请在注释//********1********后添加适当的语句。
(2)补充完成CMyTime的构造函数,完成对m year、m month的赋值,请在注释//********2********后添加适当的语句。
(3)完成print()的输出,请在注释//********3********后添加适当的语句。
输出格式如下:Current Time year:xx month:xx注意:xx表示两位0~9的数字,如Current Time year:08month:04。
(4)完成对month的增加函数AddMonth(int m),请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include<iostream.h>class CMyTime{private://********1********public:CMyTime(int year,int month){//********2********}void display(){char yearChar[3];char monthChar[3];yearChar[0]=(m_year%100)/i0+'0';yearChar[1]=(m_year%10)+'0';monthChar[0]=(m_month%100)/10+'0';monthChar[1]=(m_month%10)+'0';//********3********cout <<"Current Time"<<"year:"<<yearChar<<"month:"<<monthChar<<endl;}void AddMonth(int m){m_month=m_month-1+m;//********4********m_month=m_month%12+1;}void AddYear(intn){m_year=m_year+n;}};int main(){CMyTime myTime(2006,11);myTime.AddMonth(5);myTime.display();myTime.AddYear(1);myTime.display();return0;}(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:(1)添加语句:int m_year,m_month;(2)添加语句:m_year=year;m_month=month;(3)添加语句:yearChar[2]=0;monthChar[2]=0; (4)添加语句:m_year+=m_month/12;或m_year=m_year+m_month/12;)解析:解析:(1)第1个标识下添加CMyTime的私有成员变量m_year、m_month的声明,因此第1个标识下应添加“int m_ye ar,m_month;”。
(2)第2个标识下完成类成员构造函数变量的初始化,即将参数分别赋值给m_year和m_month,因此第2个标识下应添加“m_year=year;m_month=month;”。
(3)第3个标识下准备输出yearChar数组和monthChar数组,字符数组的最后一个字符应该为NULL(0),因此第3个标识下应添加“yearChar[2]=0;monthChar[2]=0;”。
(4)m_month和参数之和赋值给m_month,其和可能超过12,如果超过12表示下一一年了,因此m_year应该加1,故先判断m_month是否比12大,可取m_month /12和m_year相加,如果m_month没有超过12则m_month/12=0,反之则为1,第4标识下应舔加“m_year+=m_month/12;或m_year=m_year+m_month/12;”。