2006秋江苏c++等级考试试题 |
2006秋试题 (1)以下关于指令系统的叙述中,正确的是( ) (A)用于解决某一问题的一个指令序列称为指令系统 (B)指令系统中的每条指令都是CPU可执行的 (C)不同类型的CPU,其指令系统是完全一样的 (D)不同类型的CPU,其指令系统完全不一样 (2)现在计算机上都有高速缓冲存储器Cache,Cache是( ) (A)硬盘和主存之间的缓存 (B)软盘和主存之间的缓存 (C)CPU和视频设备之间的缓存 (D)CPU和主存储器之间的缓存 (3)若计算机中连续2个字节内容的十六进制形式为34和51,则他们不可能是( ) (A)两个西文字符的Ascii字符 (B)1个汉字的机内码 (C)1个16位整数 (D)一条指令 (4)下列关于操作系统任务管理的说法,错误的是( ) (A)Windows操作系统支持多任务处理 (B)分时是指将CPU时间划分成时间片,轮流为多个程序服务 (C)并行处理可以让多个处理器同时工作,提高计算机系统的效率 (D)分时处理要求计算机必须配有多个CPU (5)IP地址是因特网中使用的重要标识信息,如果IP地址的主机号部分每一位均为0,是指( ) (A)因特网的主服务器 (B)因特网某一子网的服务器地址 (C)该主机所在物理网络本身 (D)备用的主机地址 (6)下列关于USB接口的说法错误的是( ) (A)一般来说,1394接口的传输速度低于USB接口 (B)一个USB接口通过USB集线器可以连接多个设备 (C)USB的中文含义是通用串性总线 (D)USB接口连接的设备可以热插拔,即不需要关机就可以插拔设备 (7)在PC机中负责各类I/O设备控制器与CPU、存储器之间相互交换信息,传输数据的一组公用信号线称为( ) A.I/O总线 B.CPU总线 C.存储器总线 D.前端总线 (8)具有信号放大功能,可以用来增大信号传输距离的物理层网络设备是( ) A.中继器 B.网桥 C.网关 D.路由器 (9)在TCP/IP协议中,远程登陆使用的是( )协议 (A)Telnet (B)FTP (C)HTTP (D)UDP (10)关于计算机上使用的光盘存储器,以下说法错误的是( ) (A)CD-R是一种只能读不能写的光盘存储器 (B)CD-RW是一种既能读又能写的光盘存储器 (C)使用光盘时必须配有光盘驱动器 (D)DVD光驱也能读取CD光盘上的数据 (11)计算机只能处理数字声音,在数字音频信息获取过程中,下列顺序正确的是( ) (A)模数转换、采样、编码 (B)采样、编码、模数转换 (C)采样、模数转换、编码 (D)采样、模数转换、编码 (12)下列关于虚拟存储器的说明中,正确的是( ) (A)是提高计算机运算速度的设备 (B)由RAM加上高速缓存组成 (C)其容量等于主存加上Cache的存储器 (D)由物理内存和硬盘上的虚拟内存组成 (13)下列关于CPU结构的说法错误的是( ) (A)控制器是用来解释指令含义、控制运算器操作、记录内部状态的部件 (B)运算器用来对数据进行各种算术运算和逻辑运算 (C)CPU中仅仅包含运算器和控制器两部分 (D)运算器由多个部件组成,如整数ALU和浮点运算器等 (14)pc机器中有一种类型为MID的文件,下列关于此类文件的叙述中,错误的是( ) (A)它是一种使用MIDI规范表示的音乐,可以由媒体播放器之类的软件进行播放 (B)播放MIDI文件时,音乐是由PC机中的声卡合成出来的 (C)同一MID文件,使用不同的声卡播放时,音乐的质量完全相同 (D)PC机中的音乐除了使用MID文件表示之外,也可以使用WAV文件表示 (15)下列关于有线载波通信的描述中错误的是( ) (A)同轴电缆的信道容量比光纤通信高的多 (B)同轴电缆具有良好的传输特性以及屏蔽特性 (C)传统有线通信系统使用的是电载波通信 (D)有线载波通信系统的信源和信宿之间有物理的线路连接 (16)下面的叙述中错误的是( ) (A)现代信息技术的主要特征是采用电子技术进行信息的收集、传递、加工、存储、显示与控制 (B)现代集成电路使用的半导体材料主要是硅 (C)集成电路的工作速度主要取决于组成逻辑门电路的晶体管的数量 (D)当集成电路的基本线宽小到纳米级时,将出现一些新的现象与效应 (17)关于基本输入输出系统(BIOS)及CMOS存储器,下列说法错误的是( ) (A)BIOS存放在ROM中,是非易失性的 (B)CMOS中存放着基本输入输出设备的驱动程序以及设置参数 (C)BIOS是PC机软件最基础的部分,包含CMOS设置程序等 (D)CMOS存储器是易失性的 (18)目前市场上有一种称为”手写笔”的设备,用户使用笔在基板上书写或绘画,计算机就可获得相应的信息,“手写笔”是一种( ) (A)随机存储器 (B)输入设备 (C)输出设备 (D)通信设备 (19)路由器用于连接异构的网络,它收到一个IP数据报后要进行许多操作,这些操作不包含( ) A.地址转换 B.路由选择 C.帧格式转换 D.IP数据报的转发 (20)在下列存储设备中,容量最大的存储设备一般是( ) A.硬盘 B.优盘 C.移动硬盘 D.软盘 第二部分 Visual C++程序设计 一. 选择题: 21.下列叙述中,不正确的是( ) A.一个函数中可以有多个return语句 B.函数可通过return语句返回数据 B.必须用一个独立的语句来调用函数 D.函数main也可以带有参数 22.下列定义变量和常量的语句中语法正确的是( ) A.float i, j, int k; B.const int i; C.int const k=1; D.#define PI=3.14159 23.下列关于构造函数和析构函数的叙述中正确的是( ) A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载, 析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 24.执行以下语句后,循环的次数为 ( ) for(int x=0,y=0; !x&&y<=5;y++); A.无数次 B 25.已定义类A,该类构造函数的参数都没有缺省值,执行语句 A a1(2),a2(1,2), *p=new A[3]; 则自动调用该类的缺省构造函数的次数为( ) A.1 B 26.下列关于派生类的叙述中不正确的是( ) A. 派生类可以作为基类派生出新的派生类 B.一个派生类可以有多个基类 C.派生类继承了基类的所有成员 D.派生类只能继承基类中的非私有成员 27.设有说明语句: int i=2, *p=&i;char s[20]=”Hello”, *q=s; 以下选项中存在语法错误的是( ) A.cin>>p; B. cout<<p; C. cin>>q; D.cout<<q; 28.下列关于赋值兼容规则的叙述中不正确的是( ) A. 派生类的对象可以赋值给基类的对象 B.基类的对象可以赋值给派生类的对象 C.派生类的对象可以初始化其基类的引用 D.可以将派生类对象的地址赋值给其基类的指针变量 29.下列关于变量的叙述中不正确的是( ) A.C++语言中将变量分为auto,static,extern和register四种存储类型 B.自动变量和外部变量的作用域为整个程序文件 C.函数内定义的静态变量的作用域为定义它的函数体 D.外部静态变量的作用域为定义它的文件内 30.设有说明语句: char a[ ] =”string!”, *p= a ; 以下选项中正确的是( ) A. sizeof(a)的值与sizelen(a)的值相等 B. strlen(a)的值与strlen(p)的值相等 C. sizeof(a)的值与sizeof(p)的值相等 D. sizeof(a)的值与sizeof(*p)的值相等 二.填空题: 1.当一个类的非静态成员函数被调用时,该成员函数的( )指向调用它的对象 2.c++语言中的友元函数提供了在类外访问类中的私有成员和保护成员的功能,但破坏了类的( ) 3.使用成员函数对双目运算符进行重载时,其左操作数是( ) 4.设有宏定义和变量说明: #define T(x,y) x+y int a=T(3,4)*T( 5); 则变量a 的初值是( ) 5.设有说明语句: int a[ ][4]={{1,2},{2,3,4,5}}, *p=(int *)a; 则*(p+5)的值为 ( ) 阅读程序题: 6.[程序] #include <iostream.h> #include <string.h> 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(*q==’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 word[6][20]={“wish”,”bus”,”toy”,”navy”,”quiz”,”computer”}; for(int i=0;i<6;i++) { pluralize(word[i]); cout<<word[i]<<’\t’; if((i+1)%2==0) cout<<’\n’; } } 7.[程序] # include <iostream.h> void f(int j) { if(!j) cout<<j; return ;} if(j%2) {f(j/10);cout<<j%10;} else{ cout<<j%10; f(j/10);} } void main(void) { f(0); cout<<’\n’; f(1357); cout<<’\n’; f(2468);cout<<’\n’; } 程序输出的第一行是( ),第二行是( ), 第三行是( ) 8.[程序] #include <iostream.h> 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(); } 程序输出的第一行是( ),第二行是( ),第三行是( ) 9.[程序] #include <iostream.h> 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 cout<<f(s1,’e’)<<’\n’; cout<<f(s2,’ } 程序输出的第一行是 ( ),第二行是( ) 10.[程序] #include <iostream.h> class A{ int x,y; public: A(int i, int j) {x=i; y=j;} operator ++(int) { cout<<++x<<’ ‘<<++y<<’ ‘<<”重载 friend A operator ++(A); }; A operator ++(A op) { cout<<++op.x<<’ ‘ <<++op.y<<’ ‘<<”重载 return op; } void main(void) { A a(1,2); ++a; a++; } 程序输出的第一行是( ),第二行是( ) 11.下面程序的功能是:先输入一行字符串,并从输入的字符串中找到最小的字符(其Ascii值最小),用min保存该字符,然后将该字符前的所有字符顺序往后移动一个字符位置,最后,将保存的字符放在该字符串的第0个位置,例如:设输入的字符串为”bcdfae”,其中字母a为最小字符,经移动处理后,输出的字符串为”abcdfe” [程序] # include <iostream.h> void fun(char *str) { char min, *q, *p; ( ); min=*p++; while(*p!=’\ { if( ) {min=*p; q=p;} p++; } p=q; while( ){*p=*(p-1);( );} *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: 88099005798957 Integer b: 776988213577 Sum: 88875994012534 [程序] # include <iostream.h> # define N 20 void add(int sum[ ], int a[ ], int b[ ]); void wrt( ); void main(void) { int a[N] ={7,5,9,8,9,7,5,0,0,9,9,0,8,8}; init b[N]={7,7,5,3,1,2,8,8,9,6,7,7}; int sum[N]; add(sum,a,b); wrt(“Integer a:”,a); wrt(“Integer b:”,b); wrt(“ Sum:”, sum); } void add(int sum[ ], int a[ ], int b[ ]) { int carry=0; for(i=0; i<N; ++i) { sum[i]=( ); if(sum[i]<10) carry=0; else{ carry=sum[i]/10; sum[i]=( ); } } } void wrt(const char *s, int a[ ]) { int i; cout<<s; for( ;i>0 && a[i]==0; --i) cout<<(‘ ‘); for(;i>=0;--i) cout<<a[i]; cout<<’\n’; } 13.下面程序先建立 |