河北工业大学C++终极题库(共54页).docx
精选优质文档-倾情为你奉上单选程序设计概述1.一个C+ +程序的执行是从: A A. main函数开始,直到main函数结束B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D. main函数开始,直到最后一 个函数结束2. 在一个C/C+ +程序中: B A.main函数出现在所有函数之前 B.main函数可以在任何地方出现 C.main函数出现在所有函数之后 D.main函数出现在固定位置3. C+ +源程序的基本单位是: BA.过程 B.函数C.子程序 D.标识符4. 以下叙述中正确的是: C A.一个控制台类型的工程只能有-个源文件 B .一个控制台类型的工程只能有一个头文件 C.一个控制台类型的工程只能有一个main函数 D .一个控制台类型的工程只能有一个函数基本数据类型及表达式1. 設ch = 'A',則下面的表迭式値勺: Ach=!(ch>='A'&&ch<='Z')?ch(ch+32)A. a B.AC.Z D.Z2. 下列条件语句中,功能与其他语句不同的是: D A. if (a) cout< <x<<endl; else cout<<y< <endl; B. if (a=0) cout< <y<<endl; else cout< <X< <endl; C. if (a!=0) cout< <X< <endl; else cout< <y< <endl; D. if (a=0) cout< <X< <endl; else cout< <y< <endl;3. 以下可作为变量的C+ +标识符是: BA. $123 B ._ 314C. a>b D . switch4. 逗号表达式( a=3*5 , a*4 )的值为: BA.15 B.60 C. 30 D.不确定 5. 若有以下定义: Dchar a;int b;float c double d 则表达式a*b + d- c的值的类型为:A.floatB.intC.charD.double 6. 若有定乂: inta=3, b=2; C刔表込式a*=b+8;的値是:A.14B.10C.30D.137. 阅读以下程序: A #include <iostream.h>void main( int a=5,b=0,c=O;if(b+c = a) cout< <"*n" else cout<<" #n" 则: A.有语法错,不能通过编译 B.可以通过编译但不能通过连接C.输出* D.输出#8. 判断char型变量ch为大写字母的正确表达式为: CA. 'A'<=ch<='Z'B. (ch>='A')&(ch<='Z')C. (ch>='A')&&(ch<='Z')D. (ch>=' A')AND(ch<='Z')9. 以下合法的C+ +語言棕枳符是:CA.5 B.321_GoC.Double D.a*b10. 以下正确的C+ +语识符是:BA. VC+B._1C.321_GoD .*p11. 表达式3.6-5/2+ 1.2+ 5%2的值是: DA.4.3B.4.8C.33D.3.812. 設c是字符変量,以下語句中錯俣的是: CA. c='Y”B.c=''C. c="y"D.c='t'13. 判断char型变量ch不是小写字母的正确表达式为: CA.'a'<ch<'z'B. (ch>='a')OR(ch<='z')C. (ch<'a')(ch> 'z')D. (ch>='a')&& (ch<='z)14. 已知ch为char型変量,以下判断ch是数字字符的表迭式是: C A. '0'<=ch<='9' B.(ch>='0') & (ch<='9) C. (ch>='0) && (ch<='9) D.(ch>='0) AND (ch<='9)15. 若有定乂: int a=5,b=3; ,則表迭式(a >b)?a+b:a-b的値勺: CA.1B. 0C.8D.-216. 判断char型变量c的值不是数字字符的正确表达式是 : C A'0'<=c<='9' B. (c>='0') && (c<='9') C. (c<'0')ll(c>'9) D. (c<0) lI (c>9)17. 以下結果为整数的表达式(設有int i;charc;float f)是: BA. i+fB. i*cC. c+fD. i+c+f .18. 以下合法的C+ +标识符是 C A.%x B. a+b C. a123 D.test !选择结构程序设计 1. 下列叙述中正确的是: D A. break語句只能用于switch語句B .在switch語句中必須使用defaultC . break語句必須与switch語句中的case配対使用D .在switch語句中,不-定使用break語句 2. 已有如下定义语句: int a=1,b=2,c=3,x; ,则以下选项中各程序段执行后, x的值不为3的是:C A. if(c<a) x=1; B. if(a<3) x=3; else if (b<a) x=1; else if (a<2) x=2; else x=3; else X=1; C. if(a<3) x=3; D. if (a<b) x=b; if (a<2) x=2; if (b<c) x=c;if(a<1) x=1; if (c<a) x=a;3. 下列咲于switch語句的描述中,正磆的是: A A. switch語句中defaul可有可无 B. switch語句中毎个語句序列中必須有break語句 C. switch語句中default只能放到最后 D. switch語句中case后的表迭式可内任意表迭式4. 在嵌套使用if语句时, C+ +语言规定else总是: CA.和之前与其具有相同缩进位置的if配对B.和之前与其最近的if对C.和之前与其最近的且不带else的if配对D.和之前的第一个if配对5. 下列选项中与以下程序段功能不同的是: Dif(x=1) a-; else a+;A . switch(x) case 1: a-; break; default: a+ +;B . switch(x) default: a+ +; break ;case 1: a-;C . switch(x=1)case 1:a-; break;case O:a+;D . switch(x=1)case 0: a-;break;case 1:a+;循环结构程序设计1. 若有以下程序代码段:int t=0;while (t=1)t-;则以下叙述正确的是:BA.循环控制表达式不合法B.该循环为无限次循环C.该循环仅循环1次D.该循环-次也不循环2. 以下叙述中正确的是: AA. break语句可以结束当前的循环B. break语句与continue语句的作用相同C. continue语句可以结束当前的循环D. break语句与return语句的作用相同3. 以下描述中正确的是:BA. continue语句的作用是结束整个循环的执行B .只能在循环体内和switch语句体中使用break语句C .在循环体内使用break语句或continue语句的作用相同D .在内层循环体中的break语句,执行后可跳出外层循环4. 以下描述中正确的是: CA .由于do-while循环中循环体语句只能是一 条可执行语句,所以循环体内不能使用复合语句B . do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C .在do-while循环中,若while后面表达式为非0的常量值,则循环体中应有break语句D . do-while循环中,可以根据情况省略while5. 下列程序目的是求1到100的累加和,其中只有一个不能鯵完成規定的功能,它是: CA.ints = O,i= O;while (i <= 100)s += i+;B.ints=O,i=0;while (i<100)s+= +i;C.int s=O, i=1;while (i+100)s+=i;D.int s=0, i=0;vhile (+ +i<=100)6. 设变量已正确定义,则以下能正确计算f= n!的程序段是: DA. f=0;for(i=1;i<=n;i+)f*=i;B . f=1;for(i=2;i<=n;-)f*=i;C . f=1;for(i=n;i>0;i+)f*=i;D . f=1;for(i=n;i>=2;-)f*=i;7. C+ +中while与do-while语句的主要区别是: AA . do-while循环体至少无条件执行次B . do-while允许从外部转到循环体内C . do-while的循环体不能是复合语句D . while的循环控制条件比do-while严格8. 以下程序代码段的运行结果是: Cfor(int i=0; i<10; i+=3) ;cout<< i;A.0369B.9C. 12D.9. 下面程序的运行结果是: D#include <iostream.h>void main()int i=0,s=0;for (;;)if(i=3i=5) continue;if (i=6) break;i+;s+=i;cout<<S< <endl;A.10B.13C.21D.程序进入死循环10. 设有程序段:int k= 100;while(k=0) k-;则以下描述中正确的是: CA . while循环执行100次B .该循环是无限循环C .循环体语句-次也不执行D .循环体语句执行次11. 下面关于for循环的正确描述是: D A. for循环只能用于循环次数已经确定的情况B . for循环是先执行循环体语句,后判断表达式C .在for循环中,不能用break语句跳出循环体D . for循环的循环体语句中,可以包含多条语句但必须用花括号括起来一维数组的定义和使用 1. 已知int a5; ,若要使得其中每个数组元素的值依次为:2、4、 6、 8、 10 ,以下错误的是: DA. for(inti= 0;i <5; i+) ai = 2*(i+1);B. for(int i = 2;i <=10;1+=2) a(i-1)/2= i;C. a0=2; for(int i= 1;i <5;i+) ai = ai-1+2;D. for(int i= 2;i <=10;i+=2) ai= i;2. 以下正确的语句为: DA. int n = 3, an=1,2,3;B. int a3=1,2,3,4,5;C . int a3.6=1,2,3,4;D. int a=1,2,3,4 ;3. 若要定义整型数组a ,使得其中每个数组元素的值依次为:1、3、5、8、0、0、0,则下列定义语句中错误的是: CA. int a=1,3,5,8,0,0,0;B . int a7=1,3,5,8,0,0,0;C . int a=1,3,5,8;D . int a7=1,3,5,8 ;4. 以下描述中正确的是:D A.定义数组时,长度可为常量或变量。 B .同一个数组中的各个数组元素的数据类型可不相同。 C .数组在定义时不能进行初始化。 D .数组必须先定义后使用,数组元素的使用与变量相同。二维数组的定义和使用1. 下列选项中不能对二维数组a初始化的语句是: CA . int a23=1,2,3,4,5,6;B . int a23=1,2;C . int a23=12,3;D. int a23=0;2. 以下二维数组的定义中,正确的是: CA. int a3,4;B . int n= 3,m=4,anm;C . int a34;D . int a4;字符串数组及字符串操作1. 要比较两个字符数组a、b中的字符串是否相等,下面表达式正确的是: BA. a=bB . strcmp(a,b) = 0C . strcpy(a,b)D. a=b2. 已有如下定义char s120=" aLeap", s2="Year", s330; ,则执行strcpy(s3, strcat(s1 + 1,s2) ); cout< <s3;后的输出结果是: D A . YearaLeap B . aYear C . aLeapYear D . LeapYear3. 以下关于字符数组定义的语句中,错误的是: DA. char s10= "abcde"B. char s=" abcde"C. char s='a','b','c', 'd', 'e'D. char s3='a','b','c','d;4. 若有以下程序 #include <iostream.h> void main() char s= "abcde" s +=2; cout< <s0< <endl; 则下列叙述中正确的: DA .程序输出字符aB .程序输出字符c C .程序输出字符串cdeD .程序出错5. 有如下代码char s255; int a; cin>>s>>a; cout<<s<<a;若用户输入"test,1" (不包括双引号)并回车,则运行窗让: BA.显示test1B.继续闪动光标等待用户录入C.显示test,1D.程序编译出错6. 以下程序段中,不能正确为字符串赋值的是:CA. char s10 = "abcdefg"B. char t= "abcdefg"C. char s10, s = "abcdefg"D. char s10; strcpy(s," abcdefg");7. 要连接两个字符数组a、b中的字符串,下面表达式正确的是: DA. a+bB . strcmp(a,b)C. strcpy(a, b)D. strcat(a, b)指针的定义和使用1. 以下选项中正确的是:DA. int *p = 100;B. double *p; int*q; p=q;C. int *p; doublex; p = &x;D. intx, *p = &x;2. 若有定义语句: int a=3,b,*p=&a; ,要将变量a的值赋给变量b ,下列语句中不正确的赋值方式是: DA . b=*&a;B . b=*p;C . b=a;D . b=*a;3. 若有以下语句:int a10=1,3,5,7,9,11,13,15,17,19,*p=a+2, b=p3;则b的值是:BA.7B.11C.13D.174. 有以下程序段 char a ="12345" ;char *p ; for(p = a+4;p >= a;p- ) cout<<*p;输出结果是:B A. 12345 B. 54321 C. 543 D.115. int *p= &a;中&的作用是: BA.取值B.取地址C.逻辑与运算D.按位与运算6. 类型相同的两个指针变之间,不能进行的运算是: CA. <B.=C.+D.-7. 若有以下语句: int *p,a= 4; p=&a; 下面均代表地址的一组选项是:DA. a, p, *&aB.&*a,&a,*pC.*&p,*p,&aD.&a,&*p,p8. 若有以下程序段: int *p, a=10, b=1; p=&a;*p+=b; 则执行该程序段后, a的值为: B A.12 B.11 C.10 D .编译出错9. 若有inta=5, *p= &a; *p=6; ,则下面描述正确的是: CA.两个*均表示取指针指向的内容B. *p=6;等同于p*=6;C. a的值最后会是6D.指针p指向变量a并且不能再更改指向10. 在int a, *p=&a;语句中, &的作用是 BA.取值B.取地址C .逻辑与运算D.按位与运算11. 以下选项中正确的是: BA . int x, double y ;B . char *t="bingo"C. int *p=5;D . int a3=1,2,3,4,5;12. 已有定义: int a10,*p=a; ,则下列选项中能表示数组元素a3的是 B A. *p3B . *(p+3)C. *p+3D . (*p)313. 已知: char a5, *p=a; ,下面选项中正确的赋值语句是: AA.p= "abcd"B.a="abcd"C *p="abcd"D . *a="abcd"14. 若有以下语句: char *p3="Monica", "Rebecca", "Rachel;则正确的叙述是: C A . p数组的三个数组元素的值分别是"Monica". "Rebecca"和"Rachel" B . p数组的三个数组元素指向的三个字符串的长度相同C . p数组的三个数组元素的值分别是字符 串"Monica"、” Rebecca"和" Rachel"的首地址D .以上叙述均不正确15. 若有char *p = "test" ,则下面不能正确输出该字符串的选项是: C A. cout<<p; B. for(int i=0; i<strlen(p); i+) cout< <pi; C. cout<<*p; D. while(*p!= "0') cout< <*p; p+;16. 若有以下定义:int a23;则对a数组的第i行第j列元素地址的正确表示为:DA. *(*(a+i)+j)B . (a+i)jC. *(a+j)D . ai+j17. 若有以下说明语句:char a="It is mine"char *p= "It is mine"则下面叙述不正确的是: DA. a+ 1表示的是字符的地址B . p指向另外的字符串时,字符串的长度不受限制C . p变量中存放的地址值可以改变D . a中只能存放10个字符18. 指针变量中保存的是变量的 BA.值B.地址C.名D.一个标志19. 设有以下语句: char s= "China",*p=s;则下面叙述正确的是: DA . s和p的含义完全相同 B .数组s中的内容和指针变量p中的内容相等C .数组s的长度和p所指向的字符串长度相等D . *p和s0相等20. 若有以下语句:int a10=1,2,3,4,5,6,7,8,9,10,*p=a, b=p3;则b的值是: AA.4B.6C.7D.921. 针对数组定义: int a10; ,下列叙述中错误的是:BA .用a9可以访问数组的末元素 B. a共有10个元素,其首元素是a1C .用*a可以访问数组的首元素D .用a10访问数组元素会超出数组边界22. 若有定义: int *p4; ,则标识符p : AA.是一个指针数组名 B .是一个指向整型变量的指针C .定义不合法 D. 是一个指针,它指向一个含有四个整型元素的一维数组23. 以下语句中,不能正确赋值的是: DA. char *s = "English"B . char s28 = "English" C . chars37= 'E','n','g', I', ', 's', 'h'D . char s18; s1 = "English"函数的定义和使用1. 在值调用中,要求: B A.实参和形参的类型可任意,个数相等 B .实参和对应形参的类型应完全一 致,个数相等C .实参和形参对应的类型任意,个数任意D .实参和形参的类型一致,个数任意2. 下面对数组做形参描述错误的是: AA.数组做形参, 实参数组会拷贝一份所有元素的值给形参数组。B.形参既可以指明数组大小,也可以不指明。C.形参为数组,调用时仅仅是传递实参数组的首地址给形参,而不是传递数组的值,D.函数中对形参数组做的操作,实际上就是在操作实参数组。3在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是: BA .地址传递B .单向值传递C .由实参传给形参,再由形参传回实参D .传递方式由用户指定4. 下面关于函数的描述错误的是: CA.使用函数可以简化程序逻辑B.函数是功能的封装,可以被反复调用C. main函数同样也可以被其他函数调用D.函数既可以返回值也可以不返回值5. 关于return语句描述错误的是: DA.函数中可以不使用return语句B.函数中可以出现多个return语句C.函数有返回值一定用return语句D.一个return语句可以返回多个值6. 关于函数的形参,下面描述错误的是: DA.函数的形参在函数调用时才会被分配内存B.形参在原型声明中可以不写名字仅指明类型C.实参必须在个数、类型、排列顺序上和形参一 致D.形参也是变量,故可以被其他函数访问7. 若在程序中定义了以下函数double sum(double a, double b, double c)returna+b+C;则以下选项中错误的原型声明语句是: AA. double sum(double a, b, c);B . double sum(double, double, double);C . double sum(double c, double a, double b);D . double sum(double x, double y, double z);8. 若某函数的形参为一维数组,则以下叙述中正确的是: DA.形参数组必须指定长度B .调用该函数时,系统会为形参数组重新分配存储空间C .在该函数中对形参数组的修改对实参数组无影响D .调用该函数时,对应的实参可为数组名9. 有如下函数调用语句int s=0; s = fun(&s); ,则该函数的原型声明语句正确的是: AA. int fun(int *p);B. void fun(int &p);C. int fun(int p); D. int fun(&fun);10. 下面关于形参描述错误的是: C A.如果形参为数组,则形参声明肿0内可不指明数组大小 B.形参为数组,本质上传递的是数组的首地址,即等同于参数为指针类型 C.形参不可以与实参酩,否则会造成代码运行出错 D.函数未被调用时,形参不占内存空间,当函数调用结束后,形参占用的内存空间被释放11. 当一个函数无返回值时,则该函数的类型应是: AA . voidB. intC.任意D.无12. 下面关于函数的返回值描述错误的是: AA.函数名前没有任何标识表明函数没有返回值B. return只能返回一个值C. void表示函数没有返回值D.函数名前没有任何标识表明函数的返回值为int类型13. 已知定义: int a34; 当数组名a作函数实参时,形参得到的是: DA.数组的全部12个元素的值B.数组元素的个数C.数组第一个元素a00的值D.数组第0行的起始地址14. 已知fun函数的定义为: void fun(double d) cout<<d+d;则该函数的原型声明语句为:BA. void fun(d);B. void fun(double);C. double fun(double d);D. fun(double);15. 函数调用时,被调用函数的原型声明语句可省略的情况是: CA .被调用函数是无参函数B .被调用函数无返回值 C .函数的定义出现在其调用之前D .函数的定义在其他程序文件中16. 若有以下调用语句,则以下选项中不正确的fun函数头是 Dvoid main(int a50, n;fun(n, &a9); A . void fun(int m, int xB. void fun(int s, int h40)C . void fun(int p, int *s)D. void fun(int n, int a)17. 下面正确的选项是: B A .函数的定义可以嵌套,但函数的调用不可以嵌套B .函数的定义不可以嵌套,但函数的调用可以嵌套C .函数的定义和函数的调用均不可以嵌套D .函数的定义和函数的调用均可以嵌套结构体的定义和使用1. 若有以下说明语句: struct int a; double b; stu; 则下面的叙述不正确的是: B A. struct堤定义结构体类型的关键字B.struct stu是用户定义的结构体类型C . stu是用户定义的结构体变量D . a和b都是结构体成员名2. 若有以下说明语句:struct complex int r, i;a=1,2, b;则下列语句中不正确的是: BA . b=a;B . b=2,3;C. b.r= a.r;D .b.i = a.r;3. 当说明一个结构体变量时系统分配给它的内存是: AA .各成员所需内存空间的总和B .结构中第一个成员所需内存空间C .成员中占内存空间最大者所需的内容空间D .结构中最后一个成员所需内存空间4. 以下关于结构体的描述错误的是: CA.结构体可以将不同类型的数据封装在一起,而数组描述的是具有相同类型的数据B.使用结构体可以简化大批量数据的描述和使用方式C.可以在定义结构体的同时给其成员设定默认值D.结构体只用来描述数据的结构, 要想实际存储和操作数据必须定义结构体变量才可以程序填空循环结构程序设计1. 下面程序的功能是依次显示100 , 80 , 60 , 40 , 20这5个数,请填空。#include <iostream.h>void main(int i;for(i=100;_)cout<<i<<"t"cout< <endl;i>0或i>=20 i-=20或i = i - 202. 下面程序的功能是计算1*2*3*4*.*10的积。#include <iostream.h>void main(double f;(1)_for (inti=1;i<=10; i+ )(2).cout<<f< <endl;f=1 f*=i或f=i*f或f=f*i3. 下面程序的功能是求下面表达式的值。1+1/3+1/5+1/99#include <iostream.h>void main(double sum;(1),for (int i=1;i<=99;(2)sum+=(3)_cout< <sum< <endl;sum=0 i+=2或i=i+2或i=2+i 1.0/i或1/(double)i或(double)1/i4. 统计整数1 50 (包括50 )中能被3和5同时整除的数个数。#include <iostream.h>void main()int(1)_for(int i=1;_(2)_ ;i+)if(i%3=0(3)_(4)_ ;cout<<n;n=0 i<51或i<=50 &&i%5=0 n+或+n或n=n+1或n+=1或n=1+n5. 下面程序的功能是计算xn ,请填空。#include <iostream.h>void main( int n,X; cout< <"Please input x,n=" cin>>X>> n; double y=1; for(int i=0;_ (1)_ ;i+ +) (2) cout< <y< <endl; i<n或i<=n-1 y=y*x或y*=x或y=x*y6. 下面程序的功能是 输出符合条件的三位整数:它是完全平方数 ,又有两位数字相同,并且统计个数,请填空。#include <iostream.h>void main( int i,j,num; /num表示统计的个数int n1,n2,n3; for (i= 100,num=0;i<=999;i+ +) j=10; while(j*j<=i) if (i=j*j) n1=i / 100; n2=_(1)_n3=¡ % 10;if (n1=n2n1=n3n2=n3)cout<<i<<'t'(2)_(3)cout< <endl<<"count of numbers is" < <num< <endl; i/10%10或i%100/10或(i/10)%10或(i%100)/10或(i-n1*100)/10或(i-100*n1)/10 num+或+num或num=num+1或num+=1 j+或j+=1或+j或j=j+17. 下面程序的功能是输出以下形式的金字塔图案:#include <iostream.h>void main(for(int i=1;i<=4;i+)for(intj=1;j<=_ (1)_ :j+ +)cout<<' 'forj=1;j<=_ (2)_ j+ +)cout<<'*'cout< <endIl; *.4-i 2*i-18. 下面程序的功能是输出裴波那契数列1 , 1, 2 ,3, 5, 8, .前20项。已知裴波那契数列具有如下规律:F1=1 (n=1)F2=1(n=2)Fn=Fn-1+Fn-2 ( n3 )#include <iostream.h>void main()int f1=1,f2=1,f;cout<<f1<<"t'<<f2;for (inti=3;i<=20;i+)f=f1+f2;f1= (1)_f2=_(2)_ cout<<'t'<<f;cout<<endl;f2或f-f1 f9. 下面程序的功能是计算2+4+6+. + 100的和。#include <iostream.h>void main(int sum;(1)_for (int i=1;(2)_ ; i+ )sum+=(3)_cout< <sum< <endl;sum = 0 i<51或i<=50 2*i或i*210. 下面程序的功能是求10以内的素数的积。#include <iostream.h>void main( double mul=1; for (int i=2; i<10; i+ ) for (int j=2;j<ij+) if (i%j=0) (1).if(j=i) (2) cout< <mul< <endl; break mul*=i或mul=mul*i或mul*=j或mul=mul*j或mul=i*mul或mul=j*mul11. 以下程序的功能是计算: s=1+12+123+ 1234+12345。请填空。#include <iostream.h>void main()int t=0,s=O,i;for( i=1; i<=5; i+)t=(1)_S=_(2)_cout<<"s="<<S< <endl;t*10+i或i+t*10或i+10*t或10*t+i s+t或t+s12. 下面程序的功能是计算1-3+5-7+.99+101的值,请填空。#include <iostream.h>void main()int i,t,s=0,sign=1; for(i=1;i<=101;i+=2) (1)s+=t;(2)cout<<"s=" <<S< <endl; t=sign*i或t=i*sign si