江苏省高等学校计算机等级考试 二级Visual C++考试(样卷) (本试卷完成时间 120分钟)
本套试卷的视频讲解见:http://school.njwww.net/kecheng/detail_921575
第一部分 计算机信息技术基础知识 选择题(共20分,每题2分) 1.下列关于数字技术与微电子技术的叙述中,错误的是______ 。 A.数字技术的处理对象是"比特",一个触发器可以存储2个比特 B.在数据通信时,远距离传输或者无线传输时需要用比特对载波进行 C.现代集成电路使用的半导体材料主要是硅 D.我国第2代居民身份证中使用了非接触式IC芯片 2.下列关于台式PC芯片组的叙述中,错误的是______ 。 A.芯片组是主板上最为重要的部件之一,存储器控制、I/O控制等功能主要由芯片组实现 B.芯片组与CPU同步发展,有什么样功能和速度的CPU,就需要使用什么样的芯片组 C.芯片组决定了主板上能安装的内存最大容量及可使用的内存条类型 D.同CPU一样,用户可以很方便、很简单地更换主板上的芯片组 3.下列关于I/O设备的叙述中,错误的是______。 A.目前平板电脑、智能手机的触摸屏大多为"多点触摸屏",可同时感知屏幕上的多个触控点 B.扫描仪可分为手持式、平板式和滚筒式等类型,目前普通家用/办公用扫描仪大多为滚筒式 C.目前一些型号的数码相机已具有拍摄视频和进行录音的功能 D.为了降低成本,目前许多PC采用集成显卡,其显示控制器被集成在芯片组中 4.下列关于PC外存储器的叙述中,错误的是____。 A.目前PC采用的硬盘,其盘片的直径通常为3.5英寸、2.5英寸或1.8英寸 B.U盘和存储卡都是采用闪烁存储器制作的,目前其容量大多为几GB至几十GB C.目前固态硬盘的存储容量大多为数百GB,但其读写速度远不如传统硬盘(硬磁盘) D.蓝光光盘是目前最先进的大容量光盘,单层盘片的存储容量可达25GB 5.下列关于Windows操作系统功能的叙述中,错误的是______。 A.对于多任务处理,系统一般采用按时间片轮转的策略进行处理器调度 B.系统采用了虚拟存储技术进行存储管理,其页面调度算法为"最近最少使用"( LRU)算法 C.系统支持多种文件系统(如FAT32、NTFS、CDFS等)以管理不同的外存储器 D.系统支持任何I/O设备的"即插即用"和"热插拔" 6.下列关于程序设计语言的叙述中,错误的是____。 A.虽然机器语言不易记忆、机器语言程序难以阅读和理解,但目前还有很多人使用其编写程序 B.汇编语言与计算机的指令系统密切相关,不同类型的计算机,其汇编语言通常不同 C.VBScript语言是VB的子集,用其编写的程序可以嵌入在HTML文档中以扩充网页的功能 D.Java语言是一种适用于网络环境的程序设计语言,目前许多手机软件就是用Java编写的 7.下列关于通信技术的叙述中,错误的是______。 A.调制与解调技术主要用于模拟通信,在数字通信中不需要使用调制与解调技术 B.使用多路复用技术的主要目的是提高传输线路的利用率,降低通信成本 C.在数据通信中采用分组交换技术,可以动态分配信道资源,提高传输效率和质量 D.数据通信网络大多采用分组交换技术,但不同类型网络的数据包格式通常不同 8.Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在 Internet上的每一台主机都有一个IP地址。目前使用的是IPv4标准(32位地 址),下一代互联网将会采用IPv6标准,其IP地址为____。 A.48位 B.64位 C.96位 D.128位 9.下列关于字符编码标准的叙述中,错误的是____。 A.在ASCII标准中,每个字符采用7位二进制编码 B.在绝大多数情况下,GB2312字符集包含的1万多个汉字足够使用 C.Unicode字符集既包含简体汉字,也包含繁体汉字 D.中文版Windows XP及其后的Windows系列操作系统均支持国标GB18030 10.由于采用的压缩编码方式及数据组织方式的不同,图像文件形成了多种不同的文件格式。在下列四种图像文件中,常用于网页上发布并可具有动画 效果的是 。 A. BMP B.JPEG C.GIF D. TIF 参考答案: 1.A 3.B 2.D 4.C 5.D 6.A 7.A 8.D 9.B 10.C
第二部分 Visual C++程序设计 一、选择题(共10分,每题2分) 1.设有说明:“char s[100]="my\'s apple. \nyour=\65";”,则strlen(s) 的值是____。 A.19 B.24 C.27 D.28 2.下列有关break和continue语句的叙述中,正确的是____。 A.前者用于循环语句,后者用于switch语句 B.前者用于循环语句或switch语句,后者用于循环语句 C.前者用于switch语句,后者用于循环语句 D.前者用于循环语句,后者用于循环语句或switch语句 3.以下关于函数重载的叙述中,正确的是____。 A.函数名相同,函数的参数个数和参数类型也相同,但函数的返回值的类型不同 B.函数名相同,函数的参数个数必须不同,对参数类型和函数的返回值的类型没有限制 C.函数名相同,函数的参数类型必须不同,对参数个数和函数的返回值的类型没有限制 D.函数名相同,函数的参数个数或者参数类型不同,对函数的返回值的类型没有限制 4.以下有关类的叙述中,不正确的是____。 A.类是一组对象的模板 B.类是数据和函数(方法)的封装体 C.在类中定义数据成员时,可直接对数据成员设置初值或赋值 D.对象是类的实例,类声明在前,而对象定义在后 5.以下有关运算符重载的叙述中,正确的是____。 A.能用成员函数重载的运算符,均能用友元函数重载 B.能用友元函数重载的运算符,均能用成员函数重载 C.用成员函数或友元函数重载同一运算符时,两者的参数类型与个数相同 D.通过运算符重载,能改变运算符的优先级
二、填空题(共20分,每空2分) 1.[程序] #include int fun(int x, int &y) { int a=x; static int b =10; x=a+y; y=b+y; b=y+a; return (x++) ; } void main( void) { int x=1, y=5; for(int i=0; i<3; i++) { cout< } } 执行程序后,输出的第一行是___(1)___ ,第二行是 ___(2)___
2.[程序] #include int *p; void fun(int a, int &b) { p=&b; a+=*p; b+=a; cout<} void main( void) { int x = 20, y = 30 ; fun(x, y) ; cout<< x<<'\t'<} 执行以上程序后,输出的第一行是___(3)___,第二行是___(4)___. 3.[程序] #include int n1 =O,n2=O,n3=0 ,n4=0; class T{ public : T(int a) { ia = a; n1++ ; } void print( ) { cout< int Getia() {return ia;} private : int ia; }; class S1 : public T{ int x; public : S1(int a,int c) :T(a) { x=c; n2++ ; } void printS1( ) { cout<< Getia( )<<'\t'<}; class S2 : public T{ int y; public : S2(int a) :T(10) { y=a; n3++ ; } void printS2 ( ) { cout<}; class S : public S1, public S2 { int xx; public : S ( int a , float b,int c,int d) :S1(a,b) ,S2(c) { xx = d; n4 ++ ; } void printS( ) { cout<
}; void main( void) { T t1(2) ; S1 t2(3,4) ; S2 t3(5) ; S t4(6,7,8,9) , * p; p=&t4; p->printS( ); p->printS1( ) ; p->printS2( ) ; cout<} 执行程序后,输出的第二行是___(5)___ ,第三行是___(6)___ ,第四行是___(7)___ 。 4.[程序] #include class A{ public : int x,y; A(int a,int b) {x=a; y=b;} virtual void display( ) { cout<};
class B : public A{ public : int z; B(int a,int b,int c) :A( a,b) { z =c; } void display( ) { cout<< x<<'\t'<< y<<'\t'<< z<< endl; } }; class D: public B { public : int m; D(int a,int b,int c,int d) :B( a,b,c) { m = d; } void display( ) { cout<< x<<'\t'<< y<<'\t'<< z<<'\t'<}; class E :public A{ public : int n; E(int a,int b,int c) :A( a,b) {n =c; } void display1( ) { cout<<"E::"<}; void fun(A * p1) { p1-> display ( ) ;
} void main( void) - A b0(10,20) , *p; p = &b0; fun(p) ; B b1(30,40,50) ; D d1( 31,41, 51,61) ; p = &b1; fun( p) ; p = &d1; fun( p) ; E e1(100,200 ,300) ; p = &e1; fun(p) ; }
执行以上程序后,输出一共___(8)___行,其中第二行是___(9)___,第四行是___(10)___ 。
三、操作题(共50分) 1.以下程序首先建立一条链表,然后按照如下顺序删除链表中的结点:以 链表的第一个结点为1号结点开始依次搜索,删除所有序号为3的倍数的结 点,即删除第3、6、9、……个结点,当搜索一遍结束后再从链表头部继续此操 作,直到链表的结点个数少于3个为止。(10分) 程序输出为:
当前链表中的结点依次为:23 12 32 54 74 25 65 94 17 72 第1轮删除的结点为:32 25 17 当前链表中的结点依次为:23 12 54 74 65 94 72 第2轮删除的结点为:54 94 当前链表中的结点依次为:23 12 74 65 72 ... ... 第5轮删除的结点为:72 链表中剩余的结点为:23 12 [程序]
#include struct node { int data; node *next; }; node * insert(int x, node * head) { node *p; p = new node; p -> data = x; p-> next= head; return p; } void fun( node *head, int n) { node *p, *p1,*q; int i,num =1; if(!head) return; while(n >2){ cout<<"当前链表中的结点依次为:"; p=head; while(p){ cout<data<<" "; p=p->next; } cout< p=head; ___(1)___ ; i=2; while(q) { if(i%3==0){ cout<< q -> data<<'\t'; ___(2)___ ; delete q; q=p->next; n--; i++; } else{ p=p->next; i++; __(3)___; } } num++; cout< } cout<<"链表中剩余的结点为:"; p= head; while(p){ cout<data<<" "; ___(4)___; } cout<} void main( void) { int a[10] ={23, 12, 32, 54, 74, 25, 65, 94, 17, 72 } ; node * head =0; for(int i= 9; i >=0; i-- ) ___(5)___ ; fun(head,10); } 【要求】 ·打开T盘中MYFA. txt文件,将其复制到文件myfa.cpp中(或把上述程 序录入到文件myfa.cpp中),根据题目要求及程序中语句之间的逻辑关系对程 序进行完善。程序中的注解可以不输入。 ·完善后的源程序文件myfa. cpp必须放在T盘的根目录下,供阅卷用。 2.程序改错(20分) 【题目】以下程序的功能是:求1000000以内的所有平方回文数。平方回文 数是指该整数为某一整数的平方,且该整数的各位数字呈中心对称。
正确程序的输出结果如下: 1000000以内的平方回文数为: 121 484 676 10201 12321 14641 40804 44944 69696 94249 698896 含有错误的源程序如下: #include int pow(int m,int n) //计算m的n次方 { int t=0; for(int i=0; i t*=m; return t; } int pingfanghuiwen( int a) { int temp,k,num, sum; int count,i,n; n=a*a; count=0; while( 1){ //计算n的位数 k=n-pow(10,count); if(k<0) continue ; count ++ ; } sum =0; num = n; for(i=0; i temp = num; sum= sum+ temp*pow(10, count -i); num= num/10; } if(sum==n) return 1; else return 0; } void main() { int i; cout<<"1000000以内的平方回文数为:"< for(i=10;i<1000; i++) if( pingfanghuiwen(i)) cout< cout< } 【要求】 ·打开T盘中MYFB.txt文件,将其复制到文件myfb. cpp中(或把上述程 序录入到文件myfb. cpp中),根据题目要求及程序中语句之间的逻辑关系对程 序中的错误进行修改。程序中的注解可以不输入。 ·改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型 说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。 ·改正后的源程序文件myfb. cpp必须放在T盘的根目录下,供阅卷用。 3.程序编程题(20分) 【题目】字符串的并集定义为两个字符串中所包含的所有字符(并集中字符 的排列顺序不做要求,但不能重复)。试定义一个字符串类STR,求两个字符串 的并集。具体要求如下: (1)私有数据成员 ·char *p1,*p2;存放两个原始字符串。 ·char *p;存放两个字符串的并集。 (2)公有成员函数 ·STR( char s1[],char s2[]);初始化原始字符串并为指针p分配存储空间。 ·void del(char *p);删除p指向字符串中的重复字符。 ·void fun();求指针p1和p2所指向的两个字符串的并集,结果存人指针p所指向的存储空间,注意调用del()函数删除结果中的重复字符。 ·void print();输出两个原始字符串及它们的并集。 ·~STR();析构函数,释放动态内存。 (3)在主函数中对该类进行测试。 输出示例: 原字符串:adb12345 abcdefg23xz 它们的并集为:adb12345cefgxz 【要求】 源程序文件名必须为myfc.cpp,并放在T盘根目录下,供阅卷用。 参考答案: 一、选择题 1.A 2.B 3.D 4.C 5.B
本套试卷的视频演示见:school.njwww.net
二、填空题 1.6 15 2. 16 31 3. 50 80 80 4. 20 80 80 5. 6 7 6. 10 8 7. 5 2 2 1 8. 4 9. 30 40 50 10. 100 200 三、操作题 1 (1) q =head ->next (2) p -> next =q ->next (3) q =q ->next (4) p =p ->next (5) head =lnsert(a[i] , head) 2. (1) 第3行的int t=0修改为 int t=1; (2) 第16行的continue修改为 break (3)第23行的count-i 修改为 count-i-1 (4)第34行的cout<
3. #include #include class STR{ char *p1, *p2, *p; public : STR(char s1[ ] , char s2[ ]) { int n1 = strlen ( s1) + 1 , n2 = strlen( s2) + 1 ; strcpy( p1 = new char[n1] , s1) ; strcpy( p2 = new char[n2] , s2) ; p = new char[n1 + n2 + 1] ; } void fun( ) { char *s=p1, *p0 =p; while(*p0++=*s+); s=p2; p0--; while(*p0++=*s++); del(p); } void del( char * s) { while(*(s+1)){ //4分 for( char *s1 =s+1; *s1; s1++ ) if(*s==*s1){ *s1='\0'; strcat( s,s1 +1) ; s1--; } s++; } }
void print() { cout<<"原字符串:"; cout< cout<<"它们的并集为:"<} ~STR() { delete []p1; delete []p2; delete []p; } };
void main( ) //2分 { STR s1("adb12345", " abcdefg23xz") ; s1.fun( ); s1.print( ); }
本套试卷的视频讲解见:http://school.njwww.net/kecheng/detail_921575
|