1、江苏省计算机二级c+考试试题集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构造函数
2、可以重载,析构函数不能重载 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、ext
3、ern和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)的值相等 二、填空题(请将答案填写在答题纸的相应答题号内)基本概念题(共5分)1.当一个类的非静态成员函数被
4、调用时,该成员函数的 (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) 。阅读程序题(共13分)6. 【程序】(3分)#include #include int isvowel(char c) retur
5、n (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 ( is
6、vowel (*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
7、 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
8、 ( ) 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) ,第
9、三行是 (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
10、( 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) 。完善程序题(共12分)11. 下面程序的功能是:先输入一行字符串,并从输入的字符串中找到最小的字符(其ASCII值最小),用min保存该字符。然后将该字符前的所有字符顺序往后移动一
11、个字符位置。最后,将保存的字符放在该字符串的第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.ge
12、tline( 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 (“Intrge
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1