《C++语言基础教程》试卷B系别:________班级:________学号:_______姓名:_______题号一二三四五总分得分一.单项选择(每题仅有一个正确答案,每题1分,共20分)1.在C++中,一个函数定义由()组成。A)若干过程B)函数原型C)函数头和函数体D)若干子程序2.在C语言中,float型和char型数据分别占______个字节。A)4,2B)4,1C)4,4D)2,13.在C语言中,不正确的int类型的常数是A)32768B)0C)037D)0xAF4.假定AB为一个类,则执行“”ABa(4),b(3),*p[2];”语句时,自动调用该类构造函数的次数为_______A)3B)2C)4D)55.C语言数据类型中,数组属于类型。A)指针类型B)基本类型C)构造类型D)空类型6.______是C语言正确的语句。A)a=2,b=6B)j=j+1;C)a=b=5D)a=int(b);7.对于结构中定义的成员,其隐含访问权限为________A)protectedB)privateC)publicD)static8.假定intnnode类型为:structintnode{intdata;intnode*next;};则该类型的指针域用于存储下一结点的———A)数据B)指针域C)地址D)空的指针域9.C语言中,逻辑”真”用_______表示。A)trueB)大于0的整数C)非0整数D)非0的数10.若有以下语句,则该语句输出______。charc=’\092’;A)使c的值包含一个字符B)使c的值包含3个字符C)使c的值包含四个字符D)说明不合法,c的值不确定11.能正确表示a和b同时为正或同时为负的逻辑表达式是A)(a=0‖b=0)&&(a0‖b0)B)(a=0&&b=0)&&(a0&&b0)C)(a+b0)&&(a+b=0)D)a*b012.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是A)p+1B)a+1C)a++D)++p13.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是___。A)c=b=a;B)(a=b)‖(b=c);C)(a=c)&&(b=c);C)a=c=b;14.C语言中的if语句中,用作判断的表达式为_______。A)关系表达式B)逻辑表达式C)算术表达式D)任意表达式15.下列运算符中,优先级最高的是______。A)&&B)+=C)?::D)++16.有以下说明和语句(其中0=j10),则_____是对数组元素地址的正确表示。inta[]={1,2,3,4,5,6,7,8,9,0},*p,j;p=a;A)&(a+1)B)&pC)a++D)&p[j]17.n为int型,以下while循环执行_____次。n=10;while(n==0)n-=1;A)无限循环B)执行1次C)执行10次D)1次也不执行18.以下正确的函数定义形式是______,Fun为函数名。A)fun(intx,inty)B)fun(intx;inty)C)fun(intx,inty);D)fun(intx,y);19.在C程序中_______。A)函数的调用可以嵌套,但定义不可嵌套B)函数的定义可以嵌套,但调用不可嵌套C)函数的定义与调用都可以嵌套D)函数的定义与调用都不可以嵌套20.以下说明中,标识符p_______。A)说明不合法B)是一个指针数组名,每一元素是一个指向整型变量的指针C)是一个指针,指向具有三个元素的一维数组D)是一个指向整型变量的指针二.多项选择(每题有两个或两个以上正确答案,每题3分答对但不全得1分,答错得0分,共12分)。1.以下C语言转义字符中,非法的转义字符为_____________。A)‘\t’B)‘\018’C)‘\n’D)‘\0xaa’E)‘\b’2.下列表达式中,当x为奇数时表达式的值为‘假’,当x为偶数时表达式的值为‘真’的是________。A)!x%2!=0B)x%2==0C)(x/2*2-x)==0D)!(x%2)E)x%2!=03.有关continue与break的说法正确的是_________。A)continue是继续语句,它指出立即进行下次条件表达式的判断B)continue与break语句都只用于循环语句C)在循环中遇到break语句,将跳出该循环体D)break语句一次可以跳跃多个循环体4.下列有关变量的说法错误的是________。A)外部变量可以被一个程序中所有函数共用,因此,它是函数间传递信息的一种渠道B)外部变量只能定义在文件的开头,不能定义在文件的中间或结尾C)函数的形参不属于局部变量D)静态局部变量与自动变量的作用域相同,生存期也相同三.写出下列程序或表达式的结果(共20分,每小题4分)1.#includeiostram.hclassA{inta,b,cpublic:A(){a=b=0;}A(intaa,intbb){a=aa;b=bb;couta’‘bendl;}};voidmain(){Ax,y(2,3),z(4,5);}输出的结果是:________2.voidmain(){intm,n,k,a=3,b=2;m=(--a==b++)?--a:++b;n=a++;k=b;cout”m=”m”n=”n”k=”k;}输出的结果是________________________3.voidmain(){inta=1,s=1;while(a6){s+=a++;couts;}}输出的结果是________________________4.#inludestdio.hvoidmain(){intk=5,m=2,p1,p2;p1=fun(k,m);coutp1endl;p2=fun(k,m);coutp2endl;}fun(inta,b){staticintm,j=2;j+=m+2;m=j+a-b;return(m);}输出的结果是________________________5.#includestdio.hvoidmain(){chara[]=“language”,b[]=”programme”;char*p1,*p2;intk;p1=a;p2=b;for(k=0;k=7;k++)if(*(p1+k)==*(p2+k))cout*(p1+k);}输出的结果是________________________四、程序填空(每个题空2分,共18分)1.函数fun的功能是:使一个字符串按逆序存放。voidfun(charstr[]){charm;inti,j;for(i=0,j=strlen(str);i(1);i++,j--){m=str[i];str[i]=(2);str[j-1]=(3)_______;}coutstrendl;}2.以下程序实现将三个数中的大数输出在前,小数输出在后。#includestdio.hvoidswap(p1,p2)int*p1,*p2;{intt;t=*p1;p1=p2;*p2=t;}change(q1,q2,q3)(4)___________________;{if(*q1*q2)swap(q1,q2);if(*q1*q3)swap(q1,q3);if(*q2*q3)swap(q2,q3);}voidmain(){inta=6,b=4,c=3;change((5)_________________);coutabc;}3.有一个2X4的矩阵,要求编程求出其中最大元素的值,以及其所在行号和列号。voidmain(){inti,j,row=0,coloum=0,max;inta[2][4]={{1,3,4,5},{9,7,8,2}};max=a[0][0];for(i=0;i(6)_____;i++)for(j=0;j(7)______;j++)if(a[i][j]max){max=(8)__________;row=(9)________;coloum=(10)______;}coutmaxrowcoloum;}五、编程题(每小题10分,共30分)1.写一个函数comp(s1,s2),比较两个字符串的大小,如果s1s2,则返回--1,如果s1s2,则返回+1,如果s1=s2,则返回0。不能使用系统库函数strcmp(s)。(10分)2.编写一个函数,求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在由指针b所指向的整型数组中。(10分)voidfun4(char*a,int*b)3.计算机随机产生出8个三位正整数,按照从小到大的次序显示。(10分)《C++语言基础教程》试卷B答案一.单选题(每小题1分,共20分)1.C2B3D4B5C6B7C8C9D10A11D12D13C14D15D16C17D18C19A20B二.多项选择(每题3分,共12分)1.BD2.BCD3.AC4.BCD三.写出下列程序或表达式的结果(共20分,每小题4分)1.23452.m=1n=1k=33.24711164.7165.ga四、程序填空(每个题空2分,共18分)(1)j(2)str[j-1](3)m(4)intq1,q2,*q3(5)(&a,&b,&c)(6)2(7)4(8)a[i][j](9)i(10)j五.编程题(每小题10分,共30分)1.#includestdio.hvoidmain(){inti,result;chars1[100],s2[100];cout”inputstring1”endl;cins1;cout”inputstring2”endl;cins2;i=0;while((s1[i]==s2[i])&&(s1[i]!=’\0’))i++;if(s1[i]==’\0’&&s2[i]==’\0’)result=0;elseresult=s1[i]-s2[i];cout”result=”resultendl;}2.voidfun(char*a,int*b){inti;for(i=0;i10;i++)b[i]=0;while(*a){intj=*a-'0';if(j=0&&j=9)b[j]++;a++;}}3.#includeiostream.h#includestdlib.hvoidSelectSort(intb[],intn){inti,j,k;for(i=1;in;i++){k=i-1;for(j=i;jn;j++)if(b[j]b[k])k=j;intx=b[i-1];b[i-1]=b[k];b[k]=x;}}voidmain(){inta[8];inti;for(i=0;i8;i++)a[i]=rand()%90+100;SelectSort(a,8);for(i=0;i8;i++)couta[i]'';coutendl;}