国家二级C++机试(操作题)模拟试卷310
- 格式:doc
- 大小:8.77 KB
- 文档页数:2
国家二级C语言机试(程序设计题)模拟试卷2(题后含答案及解析) 题型有:1.1.使用VC++2010打开考生文件夹下prog1中的解决方案。
此解决方案的项目中包含一个源程序文件prog1.c。
在此程序中,函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若8所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是“BDF12345”。
注意:部分源程序在文件PROG1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:#include<stdio.h>#include<string.h>void fun(char*s,char t[]){}main( ){char s[100],t[100];void NONO( );printf(“\nPlease enter string S:”);Scanf(“%s”,s);fun(s,t);printf(“\nThe result is:%s\n”,t);NONO( );}void NONO( ){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/chars[100],t[100];FTLE*rf,*wf;int i;rf=fopen(“in.dat”,”r”);wf=fopen(“out.dat”,”w”);for(i=0;i<10;i++){fscanf(rf,”%s”,s);fun(s,t);fprintf(wf,”%s\n”,t);}fclose(rf);fclose(wf);}正确答案:void fun(char*s,char t[]){int i,j=0;for(i=0;i<strlen(s);i++)if(!((i%2)==0&&(s[i]%2)))t[j++]=s[i];t[j]=0;}解析:本题是从一个字符串按要求生成另一个新的字符串。
国家二级C语言机试(操作题)模拟试卷300(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!试题程序:1 #include<Stdio.H>2 #define N 53 typedef struct student {4 long sno;5 char name[10];6 float score[3];7 }STU;8 void fun(char*filename,STU n)9 {FILE*fp;10 /*********found*********/11 fp=fopen(【1】,”rb+”);12 /*********found*********/13 fseek(【2】,-(long)sizeof(STU),SEEK END);14 /*********found*********/15 fwrite(&n,sizeof(STU),1,【3】);16 fclose(fP);17 }18 main( )19 {STU t[N]={{10001,”MaChao”,91,92,77},{10002,”CaoKai”,75,60,88},{10003,”LiSi”,85,70,78),{10004,”FangFang”,90,82,87},{10005,”ZhangSan”,95,80,88)};20 STU n={10006,”ZhaoSi”,55,70,68},SS[N];21 int i,j;FILE*fP;22 fp=fopen(“student.dat”,”wb”);23 fwrite(t,sizeof(STU),N,fp);24 fclose(fp);25 fp=fopen(“student.da”,”rb”);26 freacl(ss,sizeof(STU),N,fp);27 fclose(fp);28 print;f(“\nThe original data:\n\n”);29 for(j=0;j<N;j++)30 {printf(“\nNo:%ld Name:%一8s Scores:”,ss[j].sno,ss[j].name);31 for(i=0;i<3;i++)32 printf(“%6.2f”,ss[j].score[i]);33 printf(“\n”);34 }35 fun(“student.dat”,n);36 printf(“\nThe data after modif-ing:\n\n”);37 fp=fopen(“student.dat”,”rb”);38 fread(ss,Sizeof(STU),N,fp);39 fclose(fp);40 for(j=0;j<N;j++)41 {printf(“\nNo:%ld Name:%-8s Scores:”,ss[j].sno,ss[j].name);42 for(i=0;i<3;i++)43 printf(“%6.2f”,ss[j].score[i]);44 printf(“\n”);45 }46 }正确答案:(1)filename(2)fp(3)fp解析:填空1:本空是对文本文件的打开,filename所指的文件中的最后数据要进行重写,因此首先是要打开,因而本空填写filename。
国家二级C语言机试(操作题)模拟试卷710(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。
为便于统计,规定各单词之间用空格隔开。
例如,形参s所指的字符串为:This is a C language program,函数的返回值为6。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 int fun(char *s)3 { int n=0,flag=0;4 while( *s!=‘\0’)5 { if( *s!=‘‘&& flag==0) {6 /**********found**********/7 __1___;flag=1;}8 /**********found**********/9 if(*s==‘‘)flag=__2__;10 /**********found**********/11 __3__;12 }13 return n;14 }15 main( )16 { char str[81];int n;17 printf(‘‘\nEnter a lihe text:\n’’);gets(str);18 n=fun(str);19 printf(‘‘\nThere are%d words in this text.\n\n’’,n);20 }正确答案:(1)n++(2)0(3)s++解析:函数fun的功能是计算出形参s所指字符串中包含的单词个数。
第一空:“if(*s!=¨&&flag==0)”说明找到空格了,单词的数量应加1,故第一空处应为“n++”。
第二空:“if(*s!=¨&&flag==0)”和“if(*s==‘‘)flag=__2__:”在flag为0的情况下,n才加1,因此,第二空处是将flag置0,即第二空处应为“0”。
国家二级C++机试(操作题)模拟试卷304(题后含答案及解析) 全部题型 2. 基本操作题 3. 简单应用题 4. 综合应用题基本操作题1.使用VC6打开考生文件夹proj1下的工程proj1,其中定义了一个CD 类。
程序中位于每个//ERROR **********found**********下的语句行有错误,请加以更正,不得修改程序的其他部分。
更正后程序的输出应该是:歌唱祖国30 义勇军进行曲95 注意:只能修改每个//ERROR **********found**********下的那一行,不要改动程序中的其他内容。
#include <iostream>#include<cstring>using namespace std;C1ass CD{ char name[20];int number;public:void init(char * aa,intbb) { //ERROR ****found**** name=aa;number=bb;} char水getName( ){ //ERROR ****found**** return * name;} int getNumber( ){return number;} void output( ){ //ERROR ****found**** cout<<name[20]<<’’<<number<<end1;}};void main( ){ CD dx,dy;dx.init(“歌唱祖国”,30);dy.init(“义勇军进行曲”,3*dx.getNumber( )+5);dx.output( );dy.output( );}正确答案:(1)strcpy(name,aa);(2)return name;(3)cout<<name <<’’<<number<<end1;解析:程序定义CD类,它包含两个数据成员:字符数组name和整型变量number;还包含四个公有成员函数,init( )函数接收两个参数,用参数对数据成员进行赋值;getName( )函数返回数据成员name;getNumber( )函数返回数据成员number;output( )函数将数据成员name和number输出。
国家二级C语言机试(操作题)模拟试卷359(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。
这样会得到一个序列:2,3,5,7,11,13,17,19,23,……函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C 中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 int fun(int n)3 { int a[10000],i,j,count=0;4 for(i:2;i<=n; i++)a[i]=i;5 i=2;6 while(i<n) {7 /**********found**********/8 for(j=a[i]*2;j<=n;j+=__1__)9 a[j]=0;10 i++;11 /**********found**********/12 while(__2__==0)13 i++;14 }15 printf(‘‘\nThe prime number between 2 to %d\n’’,n);16 for(i=2; i<=n;i++)17 /**********found**********/18 if(a[i]!=__3__ )19 {count++; printf(count%157’’%5d’’:’’\n%5d’’,a[i]);}20 return count;21 }22 main( )23 { int n=20,r;24 r=fun(n);25 printf(‘‘\nThe number of prime is:%d\n’’,r);}正确答案:(1)a[i] (2)a[i] (3)0解析:fun函数的功能是用筛选法可得到2~n(n<10000)之间的所有素数。
国家二级C语言(数据结构与算法)机试模拟试卷1(题后含答案及解析)题型有:1. 选择题选择题1.算法具有五个特性,以下选项中不属于算法特性的是A.有穷性B.简洁性C.可行性D.确定性正确答案:B解析:算法的五个特性分别是:有穷性、可行性、确定性、输入和输出。
知识模块:数据结构与算法2.算法的有穷性是指A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用正确答案:A解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
知识模块:数据结构与算法3.算法的时间复杂度是指A.算法的执行时间B.算法所处理的数据最C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数正确答案:D解析:算法的时间复杂度,是指执行算法所需要的计算工作量。
算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度量。
知识模块:数据结构与算法4.对存储器按字节进行编址,若某存储器芯片共有10根地址线,则该仔储器芯片的存储容量为A.1kbB.2kbC.4kbD.8kb正确答案:A解析:10根地址线,每根地址线有0和1两种情况,地址范围就是2的10次方=1024=1K。
知识模块:数据结构与算法5.磁盘处于写保护状态时其中的数据A.不能读出,不能删改B.可以读出,不能删改C.不能读出,可以删改D.可以读出,可以删改正确答案:B解析:磁盘处于写保护状态时其中的数据可以读出来,但是不能修改和删除。
知识模块:数据结构与算法6.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.讲当前应用程序转为后台运行B.退Windows后再关机C.终止当前应用程序的运行D.退出Windows后重新启动计算机正确答案:C解析:在Windows中,单击窗口中的按钮“”表示关闭当前运行的程序。
知识模块:数据结构与算法7.下列描述中正确的是A.数据的逻辑结构与存储结构必定是一一对应的B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对正确答案:D解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。
国家二级C语言(数据结构与算法)机试模拟试卷2(题后含答案及解析)题型有:1. 选择题选择题1.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。
这属于算法的A.正当性B.可行性C.确定性D.有穷性正确答案:C解析:本题考查算法的基本特征。
算法的可行性表示算法中执行的任何步骤都是可以被分解为基本的可执行的操作步:确定性是指算法的每一步骤必须有确切的含义;有穷性是指算法必须能在执行有限个步骤之后终止。
知识模块:数据结构与算法2.下列叙述中正确的是A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对正确答案:D解析:所谓算法是指解题方案的准确而完整的描述。
是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
算法不等于程序,也不等于计算方法。
设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
知识模块:数据结构与算法3.下列叙述中正确的是A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关正确答案:B解析:算法的时间复杂度是指执行算法所需要的计算工作量。
算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
算法的时间复杂度与空间复杂度并不相关。
数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之问的关系如何在计算机中表示,它们并非一一对应。
算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。
知识模块:数据结构与算法4.在DOS环境F,代表键盘和显示器的设备文件名为A.PRNB.CONC.NULD.LPT正确答案:B解析:本题考查DOS下面的虚拟设备文件,选项A)的PRN表示打印机,选项B)中的CON表示键盘或屏幕,选项C)的NUL表示虚拟空设备,选项D)的LPT表示并口。
国家二级C语言(C语言基础知识)机试模拟试卷9(题后含答案及解析)题型有:1. 选择题选择题1.下列叙述中错误的是A.C程序可以由多个程序文件组成B.一个C语言程序只能实现一种算法C.C程序可以由一个或多个函数组成D.一个C函数可以单独作为一个C程序文件存在正确答案:B解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。
在C语言中一个算法是用函数来实现的。
一个C语言源程序由许多函数组成,这些函数都是根据实际任务,确定具体的算法,由用户自己编写。
C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个C 语言程序可以实现多种算法。
知识模块:C语言基础知识2.关于算法,以下叙述中错误的是A.同一个算法对于相同的输入必能得出相同的结果B.一个算法对于某个输入的循环次数是可以事先估计出来的C.某个算法可能会没有输入D.任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕正确答案:D解析:算法和程序不同,算法满足以下特性:算法有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。
算法的确定性是指算法中的每一个步骤都必须有明确定义,不允许有模棱两可的解释,也不允许有多义性,因此对于相同的输入必有相同的输出,同时可以事先估计算法的时间复杂度,对于有循环的算法,以循环体内的循环次数来估测时间复杂度。
知识模块:C语言基础知识3.有以下程序,在VC6平台上编译运行,程序运行后的输出结果是#include <stdio.h>main( ){int s,t,A=10;double B=6:s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}A.4,4B.2,4C.4,8D.10,6正确答案:C解析:关键字sizeof用于测试不同类型变量所占的内存空间,返回所占的字节数。
在VC编译系统中,整型燹量占用4个字节的内存空间,而双精度型变量占用8个字节的内存空间。
国家二级C++机试(操作题)模拟试卷230(题后含答案及解析) 全部题型 2. 基本操作题 3. 简单应用题 4. 综合应用题基本操作题1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。
可以在修改处增加或者删除一条语句。
本程序完成以下功能:(1)获得输入的两个数字x1,x2(例如x1=4,x2=2);(2)输出两个中较小的一个(例如输出2);(3)计算x1/x2如果x2等于0,返回-1(输出结果2);(4)输出x1+x2的结果(输出结果6);(5)输出x1+1的结果(输出结果5);(6)输出x2-1的结果(输出结果1)。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
#include<iostream.h>void main( ){int x1;int x2;int x3;cout<<”pl ease input.two number:”(<endl;cin>>x1>>x2;//********error********x3=(x1>x2)?x1:x2;cout<<”Min number is:”<<x3<<endl;//计算x1/x2如果x2等于0,返回-1//********error********x3=(x2)?x1\x2:-1;cout;<<”x1/x2=“<<x3<<endl;//********error********x3=(--x1)+(x2++);cout <<”x1+x2=“<<x3<<endl;cout<<”x1+1=“<<x1<<endl;cout<<”x2-1=“<<x2<<endl;return;}正确答案:(1)x3=(x1<x2)?x1:x2;(2)x3=(x2)?x1/x2:-1;(3)x3=(x1++)+(x2--);解析:(1)第1个标识下“x3=(x1>x2)?x1:x2;”语句是判断x1与x2其中哪个相对较小,并将其赋值给x3。
国家二级ACCESS机试(选择题)模拟试卷310(题后含答案及解析) 题型有:1.1.在调试VBA程序时,能自动被检查出来的错误是( )。
A.语法错误B.逻辑错误C.运行错误D.语法错误和逻辑错误正确答案:A解析:语法错误指程序的某一语句的语法出现错误,如左右引号或括号不匹配等。
当程序设计人员输入完一行语句时,Visual Baisc编辑器会自动检测语法错误,并提醒程序员错误所在,但无法检测逻辑错误。
2.下列叙述中正确的是A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D.以上都不正确正确答案:C解析:线性表的存储分为顺序存储和链式存储。
在顺序存储中,所有元素所占的存储空间是连续的。
而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。
所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
知识模块:数据结构与算法3.Sub过程和Function过程最根本的不同是( )。
A.Sub过程的过程名不能返回值,而Function过程能通过过程名返回值B.Function过程可以有参数,Sub过程不能有参数C.两种过程参数的传递方式不同D.Sub过程可以使用Call语句或直接使用过程名,而Function过程不能正确答案:A解析:Sub过程又称为子过程,执行一系列操作,无返回值。
Function过程又称为函数过程,执行一系列操作,有返回值。
4.统计学生成绩最高分,应在创建总计查询时,分组字段的总计项应选择( )。
A.最大值B.计数D.总计正确答案:A解析:要统计最高分,分组字段的总计项要选择最大值。
5.在SQL的SELECT语句中,用于实现选择运算的是A.FORB.WHILEC.IFD.WHERE正确答案:D解析:本题考查sQL中查询语句的知识。
国家二级C++机试(操作题)模拟试卷310
(总分:6.00,做题时间:90分钟)
一、基本操作题(总题数:1,分数:2.00)
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正错误,使得程序正常运行。
并使程序输出结果为: ABCDEF ABCDEF ABCDEF 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
#include<iostream.h>Void main(){ //********error******** char s1[]="ABC "DEF";//********error******** char
s2[]="ABCDEF";//********error******** char s3[]="ABC"+ "DEF"; cout<<s1<<endl; cout <<s2<<endl; tout<<s3<<endl; return;}
(分数:2.00)
__________________________________________________________________________________________ 正确答案:(正确答案:(1)char s1[]="ABC" (2)char s2[]="ABC\ (3)char s3[]="ABC")
解析:解析:(1)字符串数组以“;”结束赋值语句,所以“ABC“DEF”应该是字符串数组sl的赋值语句,它的错误提示“modi1.cpp(5):error C2001:newline in constant”,说明“DEF”被认为是新的值,根据题目要求它其实应该是与ABC是一个数组串的,所以应该在”ABC后面添加“*”,即第1个标识下修改为“char s1[]="ABC"”。
(2)根据题目中给出的输出结果,知道s2的输出也是ABCDEF,那么说明第2个标识下的s2值应该是ABCDEF,第一行与第二行是一个字符串。
在C++中,在一个字符串中最后一个字符为“\n”,则标识它是续行符,下一行的字符是该字符串的一部分,所以在第一行的ABC后面添加“\”,即“char s2[]="ABC\”。
(3)字符串数组s3的赋值语句,错误提示“modi1.cpp(12):error C2110:cannot a dd two pointers”不能添加两个指针,不是用“+”来连接的,两个字符串变量之间不可以用“+”连接,所以这里删除“+”,即第3个标识下修改为“char s3[]="ABC"”。
二、简单应用题(总题数: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[],im e[],int a[],int m,int n),使之实现上述要求。
注意:请勿改动主函数。
#include 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<<a[i]<<',';cout<<<"b[]=";for(i=0;i<<b[i]<<','; cout<<<"s[]="; for(i=0;i<<data[i]<<','; cout<
(分数: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[k++]=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)完成类MyArrayClass的构造函数,申请数组的大小,请在注释//********1********后添加适当的语句。
(2)完成类MyArrayClass的析构函数,释放数组,请在注释
//********2********后添加适当的语句。
(3)完成重载运算符“[]”,用来获得指定下标的数据,请在注释//********3********后添加适当的语句。
(4)完成函数SetElement(),用来设置指定下标的数据。
如果数据没有超出范围,则设置数据,并返回1,否则返回0,请在注释//********4********后添加适当的语句。
注意:除在指定的位置添加语句外,并不要更改程序中的其他语句。
#include<i0stream.h >template<class T>class MyArrayClass{private:T* data;int length;public:MyArrayClass(int fen) { length=len;//********1******** ) ~MyArrayClass() ( //********2******** } T&operator[](int i) { //********3******** } bool SetElement(int i,T t) { //********4******** if() { data[i]=t;return true;} return false;} };int main() { MyArrayclass<int>obj(5);obj[3]=1;cout<<obj.SetElement(5,2)<<endl;cout<<obj.SetElement(4,2)<<endl;return 0;}
(分数:2.00)
__________________________________________________________________________________________
正确答案:(正确答案:(1)添加语句:data=new T[len]; (2)添加语句:delete[]data; (3)添加语句:return data[i]; (4)将“if()”补充完整为:if(i<length))
解析:解析:(1)构造函数完成成员变量的初始化,在MyArrayClass(int len)函数中申请数组的大小的内存空间,应该用new申请动态存储空间,new返回一个指向其操作数类型变量的指针,第1个标识下即将new返回的指针赋值给data指针,因此第1个标识下应添加“data=new T[len];”。
(2)析构函数完成资源的释放,删除由new申请的内存资源,因此第2个标识下应添加“delete[]data;”。
(3)T&operator[](int i)函数重载运算符“[]”,返回指定下标的数据,因此第3个标识下应添加
“returndata[i];”。
(4)SetElement(int i,T t)是设置指定下标的数据,数组下标不能超限,函数体中的if()用来判断下标位置是否超限,因此第4个标识下应添加“if(i<length)”。