1、C+语言程序设计练习题C+语言程序设计练习题一、填空题1、C+预言中的每条基本语句以_作为结束符,每条复合语句以_作为结束符。2、用于输出表达式值的标准输出流对象是_,用于从键盘上为变量输入值的标准输入流对象_。3、当不需要函数返回值时,则应把该函数类型定义为_。4、执行”cout143+18=143+18endl;”语句后得到的输出结果为 。5、执行”coun”ning”chen”38endl;”语句后得到的输出结果为 。6、在每个C+程序中都必须包含有这样一个函数,该函数的函数名为 。7、C+源程序文件的缺省扩展名为 ,由C+源程序文件编译而成的目标文件的缺省扩展名为 由C+目标文件连接而
2、成的可执行文件的缺省扩展名为 。8、程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用 或 符号作为分隔符。9、十进制数25表示成符合C+八进制和十六进制数分别为 和 。10、在C+语言中,用转义字符序列 或操纵符 表示输出一个换行符。11、执行”coutchar(b+2)endl;”语句后得到的输出结果为 。12、执行”coutchar(K-3)endl;”语句后得到的输出结果为 。13、已知AZ的ASCII码为6590,当执行”int x=H+5;”语句后x的值为 。14、已知AZ的ASCII码为6590,当执行”char ch=16*5+2;coutchendl;”语句序列后,得
3、到的输出结果为 。15、假定一个枚举型的定义为”enum RAxa,xb,xc,xd;”,则执行”cout”xc=”xcendl;”语句得到的输出结果为 。16、假定一个枚举型的定义为”enum RBab,ac=3,ad,aex=ad;”,则x的值为 。17、char、short和int类型的大小分别为 、 和 。18、float和double类型的大小分别为 和 。19、十进制数128和-3.26的类型分别为 和 。20、若需要定义一个标识符常量,并且使C+能够进行类型检查,则应在定义语句的开始使用保留字 。21、使用const语句定义一个标识符常量时,则必须对它同时进行 。22、执行”in
4、t x=45,y=16;contx/y x%yz的相反表达式为 。33、逻辑表达式x5 & xb | b= =5的相反表达式为 。35、若x=15,y=40,则xy和x0 的值 。 A) 为true B) 为false C) 与x的值相同 D) 与x的值相反 (3)执行语句序列 int n; cinn; switch(n) case 1: case 2: coutX; case 3: case 4: coutY; break; default:coutx; if(x250) coutX; if(x250) coutY; else coutX; 时,不可能出现的情况是 。 A) 显示:X B)
5、显示:Y C) 显示:XY D) 显示:XX(5)要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是 。 A) int vect=30,50,-88; B) int vect=30,50,-88,0,0; C) int vect5=30,50,-88; D) int vect5=30,50,-88,0,0; (6)已知某应用系统中已经定义了函数fun,其原形是 int fun(char =A); 则下列函数中,可以在同一系统中加以重载的是 。 A) int fun(); B) int fun(char); C) int fun(ch
6、ar,int); D) int fun(char,double=0.0); (7)若指针p定义为 const char *p=Luchy!; 则 。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (8)已知数组A和指针p定义为:int A2010,*p;,要使p指向A的首元素,正确的赋值表达式是 。 A) p=&A 或 p=A00 B) p=A 或 p=&A00 C) p=&A0 或 p=A00 D) p=A0 或 p=&A00 (9)已
7、知函数func的原形是 double func(double *pd,int &ri); 变量x和y的定义是 double x; int y; 把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是 。 A) func(x,&y); B) func(&x,y); C) func(&x,&y); D) func(x,y); (11)要使字符串变量str具有初值Lucky,正确的定义语句是 。 A) char str=L,u,c,k,y; B) char str5=L,u,c,k,y; C) char str =Lucky; D) char str 5=Lucky; (12)已知某
8、函数的一个形式参数被说明为MAT310,在下列说明中,与此等效的形参说明是 。 A) int MAT10 B) int MAT3 C) int MAT103 D) int MAT (13)若指针p定义为 char * const p=Luchy!; 则 。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (14)在下列表达式中,与下标引用Aij不等效的是 。 A) *(A+i+j) B) *(Ai+j) C) *(*(A+i)+j) D)
9、(*(A+i)j (15)要使语句p=new double20;能够正常执行,变量p应定义为 。 A) double p20; B) double p; C) double (*p)20; D) double *p; (16)执行下列语句序列 struct AA int ival; char cval; struct BB int ival; AA ra; struct CC int ival; AA ra; BB rb; CC rc=66,rc.ival+1,rc.ra.ival+1,69,70,71; coutrc.ival,rc.ra.ival,ival=rc.ival+1; rc.ra
10、-cval=rc.ra-ival+1; coutrc.ival,ival,rc.rb.ra.ival; 后,显示在屏幕上的是 。 A) 67,69,70 B) 66,67,70 C) 67,68,69 D) 66,67,68 (20) 类的默认的拷贝构造函数 。 A) 在任何情况下都存在 B) 仅当未定义拷贝构造函数时存在 C) 仅当未定义有参构造函数时存在 D) 仅当未定义任何构造函数时存在 (21)语句ofstream f(SALARY.DAT,ios:nocreate | ios:trunc); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且 。 A) 若文件存
11、在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。 B) 若文件存在,将其截为空文件;若文件不存在,打开失败。 C) 若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。 D) 若文件存在,打开失败;若文件不存在,建立一个新文件。22. 由C+目标文件连接而成的可执行文件的缺省扩展名为_。 A cpp B exe C obj D lik23. 在下面的一维数组定义中,哪一个有语法错误。_ A int a=1,2,3; B int a10=0; C int a; D int a5;24. 在下面的函数声明中,存在着语法错误的是_D_。 A void BC(int a, in
12、t); B void BD(int, int); C void BE(int, int=5); D int BF(int x; int y);25. 假定AB为一个类,则该类的拷贝构造函数的声明语句为_。 A AB&(AB x); B AB(AB x) C AB(AB&); D AB(AB* x)26. 对于结构中定义的成员,其隐含访问权限为_。 A public B protected C private D static27当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为_。 A ios:in B ios:out C ios:in | ios:out D 没
13、有28、设a和b均为bool型变量,则a|b为假的条件是( )A)它们均为真 B)其中一个为真 C)其中一个为假 D)它们均为假29、声明或定义一个内联函数时,必须在函数开始使用保留字( )A)static B) const C) inline D) extern30、当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( )A) n-2 B) n-1 C) n D) n+131、对于类中定义的成员,其隐含访问权限为( )A) static B) public C) protected D) private32、当使用ofstream流类定义一个流对象并打开一个磁盘
14、文件时,文件的隐含打开方式为( )A) ios:in B) ios:out C) ios:in|ios:out D) ios:binary33、下面的函数声明中,哪一个”void BC(int a,int b);”是的重载函数?A)int BC(int a,int b) B)void BC(int a,char b)C)float BC(int a,int b,int c=0) D)void BC(int a,int b=0)34、假定a为一个数组名,则下列的哪一种表示有错误( )A)ai B)*a+ C)*a D)*(a+1)35、假定AB为一个类,px为指向该类动态对象数组的指针,该数组的
15、长度为n,则执行”delete px;”语句时,自动调用该类的析构函数的次数为( )A)0 B) 1 C) n D) n+1三、写出下列程序运后的输出结果1#includevoid SB(char ch) switch(ch) case A:case a: coutwell!;break; case B:case b: coutgood!;break; case C:case c: coutpass!;break; default: coutbad!;break; void main() char a1=b,a2=C,a3=f; SB(a1);SB(a2);SB(A); coutendl;2.
16、#include#includedouble SD(int a,int b,char op) double x; switch(op) case +:x=double(a)+b;break; case -:x=double(a)-b;break; case *:x=double(a)*b;break; case /: if (b) x=double(a)/b; else exit(1); break; default:exit(1); return x;void main() int x=20,y=12; coutSD(x,y,-) ; coutSD(x,y,*) ; coutSD(x+y,y-2,/)endl;3. #includevoid main() int s=0; for(int i=1;i6;i+) s+=i*i; couts=sendl;4. #include void main() int s=0; for( int i=1;i+) if(s50)break; if(i%3=0)s+=i; couti,s=i,sendl;5.#include void main() int s1=