江苏省计算机二级c++考试试题集.doc_第1页
江苏省计算机二级c++考试试题集.doc_第2页
江苏省计算机二级c++考试试题集.doc_第3页
江苏省计算机二级c++考试试题集.doc_第4页
江苏省计算机二级c++考试试题集.doc_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2006年(秋)笔试试卷第二部分 Visual C+程序设计一、选择题(用答题卡答题,答案依次填在(21)(30)答题号内)21.下列叙述中,不正确的是 (21) 。A一个函数中可以有多个return语句 B函数可通过return语句返回数据C必须用一个独立的语句来调用函数 D函数main也可以带有参数22.下列定义变量和常量的语句中语法正确的是(22) 。Afloat i, j, int k; Bconst int i;Cint const k=1; D#define PI=3.1415923.下列对于构造函数和析构函数的叙述中正确的是 (23) 。 A构造函数可以重载,析构函数不能重载 B构造函数不能重载,析构函数可以重载 C构造函数可以重载,析构函数也可以重载 D构造函数不能重载,析构函数也不能重载24. 执行以下程序时,循环的次数是 (24) 。 for ( int x = 0, y = 0; !x& yp; Bcoutq; Dcoutq;28. 下列关于赋值兼容规则的描述中不正确的是(28) 。A派生类的对象可以赋值给基类的对象B基类的对象可以赋值给派生类的对象C派生类的对象可以初始化其基类的引用D可以将派生类对象的地址赋值给其基类的指针变量29. 下列关于变量的叙述中不正确的是(29) 。AC+语言中将变量分为auto、static、extern和register四种存储类型B自动变量和外部变量的作用域为整个程序文件 C函数内定义的静态变量的作用域为定义它的函数体 D外部静态变量的作用域为定义它的文件内30. 设有说明语句:char a =”string!”, *p = a;以下选项中正确的是(30) 。Asizeof (a)的值与strlen (a)的值相等 Bstrlen (a)的值与strlen (p)的值相等Csizeof (a)的值与sizeof (p)的值相等 Dsizeof (a)的值与sizeof (*p)的值相等 二、填空题(请将答案填写在答题纸的相应答题号内)l 基本概念题(共5分)1. 当一个类的非静态成员函数被调用时,该成员函数的 (1) 指向调用它的对象。2. C+语言中的友元函数提供了在类外访问类中私有成员和保护成员的功能,但破坏了类的 (2) 。3. 使用成员函数对双目运算符进行重载时,其左操作数是 (3) 。4. 设有宏定义和变量说明:#define T(x,y) x+yint a= T( 3, 4 )*T( 3, 5 )则变量a的初值为 (4) 。5. 设有说明语句:int a 4=1,2, 2,3,4,5, *p=(int *)a;则*( p+5 )的值为 (5) 。l 阅读程序题(共13分)6. 【程序】(3分)#include #include int isvowel(char c) return (c=a| c=e| c=i| c=o| c=u); void pluralize(char* s) int len=strlen(s); char *p = s+len-1; char *q = s+len-2; if ( *p=h &(*q =c|*q =s) strcat ( p, “es” ); else if ( *p =s ) strcat( p, “es” ); else if ( *p=y ) if ( isvowel (*q ) ) strcat ( p, “s” ); else strcpy ( p, “ies” ); else if ( *p =z ) if ( isvowel (*q ) ) strcat( p, “zes” ); else strcat ( p, “es” ); else strcat ( p, “s” );void main(void) char word620=“wish”, “bus”, “toy”, “navy” ,“quiz”, “computer” ; for( int i=0; i6; i+) pluralize( word i ); coutword i t; if( ( i+1 )%2 = 0) cout n; 程序输出的第一行是 (6) ,第二行是 (7) ,第三行是 (8) 。7. 【程序】(3分)#include void f ( int j ) if ( !j ) coutj; return ; if ( j%2 ) f ( j/10 ); cout j%10; else cout j%10; f ( j/10 ); void main(void) f ( 0 ); coutn; f ( 1357 ); coutn; f ( 2468 ); coutn;程序输出的第一行是 (9) ,第二行是 (10) ,第三行是 (11) 。8. 【程序】(3分)#include int x =2, y = x+30;class A int y; static int x; public: operator int ( ) return x+y; A operator + ( int ) return A ( x+, y+ ); A ( int x =2, int y =3 ) A:x =:x + x; A:y =:y + y; void print( ) cout ”x=” x ”,t” ”y=” y endl; ;int A:x =23;void main(void) A a (54, 3 ), b ( 65 ), c;a.print( );int i =a+b; cout ”i = ” i endl; c + + ; c.print ( );程序输出的第一行是 (12) ,第二行是 (13) ,第三行是 (14) 。9. 【程序】(2分)#include char* f( char* s, char ch ) char* p = s, *q = s; while (*q =*p+ ) if ( *q!= ch ) q+; return s;void main(void) char s1 =”Hello How are you”, s2 =”1100101 11”; coutf ( s1,e ) n; cout f ( s2, 0 ) n;程序输出的第一行是 (15) ,第二行是 (16) 。10. 【程序】(2分)#include class A int x, y; public: A( int i , int j ) x = i; y = j; operator + ( int ) cout + x + y ”重载1” n; friend A opertor + (A);A opertor + (A op ) cout + op.x + op.y ”重载2” n; void main(void ) A a ( 1, 2 ); +a; a+; 程序输出的第一行是 (17) ,第二行是 (18) 。l 完善程序题(共12分)11. 下面程序的功能是:先输入一行字符串,并从输入的字符串中找到最小的字符(其ASCII值最小),用min保存该字符。然后将该字符前的所有字符顺序往后移动一个字符位置。最后,将保存的字符放在该字符串的第0个位置上。例如,设输入的字符串为“bcdfae”,其中字母a为最小字符,经移动处理后,输出的字符串为“abcdfe”。【程序】(4分)#include void fun( char* str ) char min , *q , *p ; (19) ; min = *p+ ; while ( *p !=0 ) if ( (20) ) min =*p; q = p ; p+; p = q; while( (21) ) *p = *( p-1 ); (22) ; *p = min;void main(void) char str 80 ; cin.getline( str , 80 ); fun ( str ); cout str n;12. 用程序模拟两个大整数(为简化程序,设整数为正数)的加法运算。假定一个整数最多N位,用一个一维数组存放其各位数字。在数组下标为0的元素中存放该整数的个位数字,在下标为1的元素中存放该整数的十位数字,依此类推。例如,大整数a的值为88099005798957,大整数b的值为776988213577,则两个整数相加的结果为88875994012534。以下是程序输出的结果:Integer a: 88099005798957Integer b: 776988213577 Sum: 88875994012534【程序】(4分)#include #define N 20 /整数的位数void add( int sum , int a , int b ); /sum = a + bvoid wrt ( (23) );void main(void) int a N = 7,5,9,8,9,7,5,0,0,9,9,0,8,8; int b N = 7,7,5,3,1,2,8,8,9,6,7,7; int sum N ; add (sum , a , b); wrt (“Intrger a:”, a); wrt( “Intrger b:”, b); wrt (“ Sum:”, sum);void add ( int sum , int a , int b ) int carry = 0, i; /carry表示进位 for ( i = 0; iN; + i ) sum i = (24) ; if ( sum i 10 ) carry = 0 ; else carry = sum i /10; sum i = (25) ; void wrt ( const char* s, int a ) int i; cout 0 &a i =0 ; -i ) /输出前导空格 cout=0 ; -i ) cout a i ; cout n ;13. 下面程序先建立一条单向链表,其中每个结点包含产品名称和产品类别。然后对链表中的结点按产品类别进行分类,将同类别产品的结点放在一起。具体实现过程为:依次从已建立的链表上取下一个结点,根据该结点的产品类别值插入到新的链表中。插入过程为:若新链表上已有该产品类别的结点,则将结点插入到同类别结点的最后一个结点的后面;否则,将该结点插入到新链表的最后一个结点的后面。最后,输出分类后链表上各个结点的信息。【程序】(4分)#include #include struct node char product20; /产品名称 char category10; /产品类别 node * next;node * create( void ) /创建链表 node temp, *p2=&temp; char product20, category10; while( 1 ) coutproductcategory; if( strcmp(product, “end” ) =0 ) break ; p2-next = new node; p2=p2-next; strcpy( p2-product, product ); strcpy( p2-category, category ); (27) ; return temp. next;void print( node* h ) /输出链表h while(h) coutproduct t category next; coutnext; delete p; node* insertascategory( node * h , node * p ) /按类别插入结点 node * p2 =0 , *p1 = h; if ( h=0 ) p-next = 0; return p; while ( p1&strcmp( p1-category, p-category ) ) p2 = p1; p1 =p1-next; /找同类结点 while ( p1&strcmp( p1-category, p-category ) =0 ) p2 = p1; p1 =p1-next; /定位在同类结点后 p-next = p1; (29) ; /插入在p1、p2结点之间 return h;node* classify( node* h ) /按类别分类 node* h2 = 0, *p; while( h ) p=h; (30) ; h2= insertascategory( h2, p ); return h2;void main(void) node* h; h= create( ); print( h ); h= classify( h ); print( h ); deletechain ( h );2007年(春)笔试试卷第二部分 Visual C+程序设计一、选择题(用答题卡答题,答案依次填在(21)(30)答题号内)21.设有变量说明:“short int a=0,b=0;”,则表达式sizeof(a+b)的值为 (21) 。A1 B2 C4 D822.下列关于while与dowhile循环语句的叙述中正确的是(22) 。Adowhile的循环体至少执行一次Bwhile的循环体至少执行一次Cdowhile的循环体不能是复合语句Ddowhile允许从循环体外跳转到循环体内23. 设有函数原型说明: void test(int a, int b=7, char * c=”# ” ); 下面的函数调用中存在语法错误的是 (23) 。 Atest ( 3 ) Btest( 3, 8.2) Ctest(6, ”*” ) Dtest(0, 0, ”*”)24. 执行以下程序时,输入一行字符串为Thank you very much!程序的输出结果为 (24) 。 #include void main(void) char line100; cinline; coutlinen; AT BThankCThank you very much! DThank you25. 下列关于运算符重载的叙述中正确的是(25) 。A运算符重载可以改变操作数的个数B运算符重载可以改变运算符的优先级C运算符重载可以改变运算符的结合性D运算符重载不能改变操作数的个数,也不能改变运算符的优先级和结合性26. 定义以下的类:class X int a; public: X( int x=0) a=x; ;class Y: public X int b; public: Y(int x=0,int y=0): X(y) b=x; ; 在以下选项的说明语句中,存在语法错误的是(26) 。 AX * pa= new Y(1,2); BX a1=Y(1,3); CX b2(2,3); Y & a2=b2; DY b3(10); X a3(b3);27. 设有以下语句:int a=5; int arra; /第1行const int b=5; int xb; /第2行int c=5; int * p=new intc; /第3行const int d=5; int * p1=new intd; /第4行其中存在语法错误的是(27) 。A第1行 B第2行 C第3行 D第4行28. 设有说明语句:float a33=1,2,3,4,5, *b3=0, (*c)3=a, *d=0;以下选项中语法正确的语句是(28) 。 Aa0=b0; Bb0=c0; Cc0=d0; Dd0=a00;29. 下列关于虚函数的描述中正确的是(29) 。A虚函数可以是一个static类型的成员函数B虚函数可以是一个非成员函数C虚函数可以实现静态多态性D基类中采用virtual说明一个虚函数后,派生类中定义相同原型的虚函数时,可不必加virtual说明30. 设变量a、b是整型变量,下列switch语句中语法正确的是(30) 。Aswitch(a) Bswitch(a+b)case a: a+; break; case 1: b=a+; break;case b: b+; break; case 1: a=+b; Cswitch(a*a) Dswitch(a/10+b) case 10,12:+a; case 3: b=a/10;break; case 14,16:+b; default: a+=b; 二、填空题l 基本概念题(共5分)6. 对于switch( e ),表达式e只能是整型、 (1) 或枚举型表达式。7. 面向对象程序设计的三大特性是封装性、继承性和 (2) 。8. 执行以下语句后,a的值为 (3) 。 int a=0,m=3,n=10; a=(m+,m+n);9. 在C+中,标识符是以字母或 (4) 开头的,由字母、数字和 (4) 组成的字符序列。10. 在C+中,类的每一个非静态成员函数都有一个 (5) 指针,该指针指向正在调用成员函数的对象。l 阅读程序题(共13分)6. 【程序】(2分)#include int fun(int x, int y) x=x+y; y=x+y; cout”x=”x”,y=”yendl; return x+y;void main(void) int x=5, y=8, z=fun(x,y); cout” x=”x”,y=”yendl; cout”z=”zendl;程序输出的第二行是 (6) ,第三行是 (7) 。7. 【程序】(3分)#include int f(int m,int &n) static int a=1; int c=2; m+=+a; n+=+c; return m+n;void main(void) int a=1, b=2; coutf(a,b)n; coutatbn; coutf(f(a,b),b)n;程序输出的第一行是 (8) ,第二行是 (9) ,第三行是 (10) 。8. 【程序】(2分)#include void findmax(int* a, int n, int i, int * pk) if(ia*pk ) *pk=i; findmax ( a,n,i+1,pk); void main(void) int a10=34,32,23,12,67,54,44,60,33,24, index=0; findmax( a,10,0,&index); coutaindexn; cout”Its index is:”indexn;程序输出的第一行是 (11) ,第二行是 (12) 。9. 【程序】(3分)#include int a=100;int fun( int* a, int& b,int c) static int e; *a+=e+; b+; c+=:a+; e=*a+b+c; return e;void main(void) int a=10, b=1, c=1; coutfun(&a,b,c)n; cout fun(&a,b,c)n; cout:a+a+b+cn;程序输出的第一行是 (13) ,第二行是 (14) ,第三行是 (15) 。10. 【程序】(3分)#include #include class Base char str20; public: Base( char * s=”Base default”) strcpy( str,s); coutstrendl; ;class Inh1: public virtual Base char str120; public: Inh1( char * s1, char * s2): Base(s1) strcpy( str1, s2); coutstr1endl; ;class Inh2: public virtual Base char str220; public: Inh2( char * s1, char * s2): Base(s1) strcpy( str2, s2); couts2endl; ;class Inh3:public Inh1, public Inh2 char str320; public: Inh3(char * s1, char * s2, char * s3, char * s4 ): Inh1( s1,s2 ),Inh2( s1,s3) strcpy( str3, s4 ); coutstr3endl; ;void main(void) Inh3 a( “class Base”, “class Inh1”, “class Inh2”, “class Inh3”); 程序输出的第二行是 (16) ,第三行是 (17) ,第四行是 (18) 。l 完善程序题(共12分)11. 下面程序的功能是:将二维数组a中的每个元素向右移一列,最后一列移到最左面,并按矩阵形式输出数组a。例如:数组a移动前为 移动后为 1 2 3 3 1 2 4 5 6 6 4 5 7 8 9 9 7 8【程序】(4分)#include #define ROW 3#define COL 3void fun( (19) ) int i, j, t; for( i=0; i0;j-) *(*(p+i)+j)= (20) ; (21) =t;void main(void) int aROWCOL=1,2,3,4,5,6,7,8,9; int i, j; fun(a); for( (22) ) for( j=0;jCOL;j+) coutaij” “; coutn; 12. 以下程序的功能是:从一个字符串str中删除或添加一个指定的字符,若指定的字符c出现在字符串str中,则从str中删除第1个值为c的字符;否则把字符c添加到str的尾部。在程序中,函数dele()从字符串中删除一个字符;函数add()添加一个字符到字符串尾部;函数search()用于查找指定的字符是否在字符串中,若在,则返回所在位置,否则返回0。【程序】(4分)#include char * search(char * s, char ch) while(*s) if(*s+=ch) return (23) ; return 0;void dele(char * s, char ch) char * p1=search(s,ch), *p2=p1+1; while(*p2) *p1+=*p2+; *p1=0; void add(char * s, char ch) while(*s)s+; (24) =ch; *s=0;void main(void) char str80=”abc12123”, c; coutstrn; coutc; void (25) ; if(search(str,c)fp=dele; else fp=add; fp( (26) ); coutstrn;13. 下面程序中,主函数建立一条单向链表,链表上的一个结点为一个学生的记录(由学号和成绩组成)。在主函数中产生若干名学生的记录,并存放在链表中。函数fun()的功能是:先求出链表上所有学生的平均成绩,并通过形参aver带回;然后将高于或等于平均成绩的学生记录放在h指向的新链表中;最后返回新链表的头结点指针h。【程序】(4分)#include #include struct student char no10; float grade; /学号、成绩 student * next;student * fun( student * head, float &aver) student * h, *p, * p1; float sum=0; int n=0; aver=0; h=NULL; p=head; while( p!=NULL) /求成绩之和 (27) ; n+; p=p-next;aver=sum/n; p=head; /求平均成绩while(p!=NULL) if( p-grade=aver) p1=new student; (28) ; p1-grade=p-grade; p1-next=h; h=p1; (29) ; return h; void main(void) student * head, *p, *h; char no10; float aver; head=NULL; coutno; while(*no!=#) /建立一条链表p=new student; strcpy(p-no, no); coutp-grade; (30) ; head=p; coutno; p=head; while(p!=NULL) coutnotgradetnext; h=fun(head, aver); coutavern; p=h; while(p!=NULL) coutnotgradetnext; p=head; while(p!=NULL) head=head-next; delete p; p=head; p=h; while(p!=NULL) h=h-next; delete p; p=h; 2009年秋江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试二级 Visual C+(基础知识分为 I 和 II 两类,考生选做其中的一类,且不需要在答题卡上标注类别) 第一部分 计算机基础知识1.下列关于个人移动通信的叙述中,错误的是_ A.第1代个人移动通信(简称1G)采用的通信技术是数字通信技术B.目前广泛使用的GSM手机采用的通信技术属于第2代移动通信技术(简称2G) C.第3代移动通信技术(简称3G)将无线通信与互联网、多媒体通信相结合 D.3G有多个国际技术标准,其中也有我国自主制定的3G技术标准。 2.在下列有关集成电路的叙述中,正确的是2。 A.现代集成电路所使用的半导体材料都是硅 B.所有的集成电路都是数字集成电路 C.Moore定律认为单块集成电路的集成度平均每年翻一番 D.Intel公司微处理器产品Core 2 Duo,其集成度已高达数千万个电子元件 3.与十六进制数AB等值的八进制数是3 。 A. 253 B.254 C.171 D.172 4.在下列有关PC机CPU的叙述中,错误的是4。 A.CPU中包含几十个甚至上百个寄存器,用来临时存放数据、指令和控制信息 B.所有PC机的CPU都具有相同的指令系统,因而PC机可使用相同的软件 C.一台计算机至少包含1个CPU,也可以包含2个、4个、8个甚至更多个CPU D.Intel公司是国际上研制和生产CPU的主要公司,我国也能生产CPU 5.在下列有关PC机主板上部件的叙述中,错误的是5 。 A.BIOS保存在主板上的一个闪存中,其内容在关机后通常不会改变 B.CMOS中保存有用户设置的开机口令,关机后主板上的电池继续给CMOS供电 C.启动CMOS设置程序可以重新设置CMOS中的数据,该程序是BIOS的组成部分 D.网卡通常集成在主板上,由主板上独立的IC实现其功能,与芯片组无关 6.从PC机存储器的层次结构来看,下列存储器中存取速度最快的是6 。 A.Cache存储器 B.RAM和ROM C.寄存器 D.硬盘和优盘 7.在下列4种PC机常用I/O接口中,数据传输速率最高的是7。 A.PS/2 B.SATA C.IEEE-1394b D.USB 2.0 8.在下列有关I/O操作、I/O总线和I/O接口的叙述中,错误的是8。 A.I/O操作的任务是在I/O设备与内存的指定区域之间传送信息 B.I/O总线传送的只能是数据信号,它不能传送控制信号和地址信号 C.不同类型的I/O接口,其插头/插座以及相应的通信规程和电气特性通常各不相同 D.并行总线的数据传输速率不一定比串行总线高 9.在下列有关PC机I/0设备的叙述中,错误的是9。 A.数码相机的成像芯片可以为CCD器件或CMOS芯片,目前大多数用CCD器件 B.平板式扫描仪的分辨率通常远远高于胶片扫描仪和滚筒式扫描仪 C.常见的宽屏液晶显示器的宽度与高度之比为16:9(或16:10) D.目前在银行、超市等商业部门一般采用针式打印机来打印存折和票据 10.在下列有关计算机软件的叙述中,错误的是10 。 A.程序设计语言处理系统和数据库管理系统被归类为系统软件 B.共享软件是一种具有版权的软件,它允许用户买前免费试用 C.机器语言和汇编语言与特定的计算机类型有关,取决于CPU D.目前PC机只能使用Windows系列操作系统,均不能使用UNIX和Linux操作系统 11.在下列常用的PC机软件中,编辑的文档(内容)能直接保存为图片类型(例如JPEG文件类型)的是11 。 A.Microsoft Word B.Microsoft Excel C.Microsoft PowerPoint D.Microsoft FrontPage 12.在下列关于以太网(局域网)的叙述中,错误的是12。 A.在共享式以太网中,任何时间只允许一对计算机进行通信 B.在交换式以太网中,每台计算机均独享相同的带宽,其带宽仅由交换机决定 c.无论是共享式以太网还是交换式以太网,网络中的所有计算机都要安装以太网网卡 D.无论是共享式以太网还是交换式以太网,它们的数据帧和MAC地址格式均相同 13.连接在因特网上的每一台主机都有一个IP地址。下面不能作为IP地址的是13 。 A.211.256.49.68 B.8 C.8 D. 14.为了将异构的计算机网络互相连接起来,必须使用的网络设备是14 。 A.调制解调器 B.以太网集线器 c.以太网交换机 D.路由器 15.下列网络协议中,与发送电子邮件有关的是15 。 A.Http B.FTP C.SMTP D.TELNET 16.在下列有关字符集及其编码的叙述中,错误的是16 。 A.基本的ASCII字符集共有128个字符,每个字符使用7个二进位进行编码 B.GB2312字符集中收录了6千多个汉字,每个字符在机内通常使用双字节编码 C.GBK字符集中的字符也采用双字节编码,且该字符集

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论