C++试题(附答案)
- 格式:doc
- 大小:62.50 KB
- 文档页数:15
选择题1.1.一个C程序的执行是从()A.本程序的main函数开始,到main函数结束。
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束1.2.以下叙述正确的是()A.在C语言中,main函数必须位于程序的最前面。
B.C语言的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C语言进行编译的过程中,可发现注释中的拼写错误1.3.C语言规定:在一个源程序中,main函数的位置()A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后2.2.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()A.7 B.8 C.6 D.22.3.若有说明语句:char c=‟\66‟ ; 则说明c ()A.包括1个字符B.包括2字符C.包括3字符D.一个不合法的表达式,c的值不确定2.4.设变量a 是int,f是float, i是double,则表达式10+‟a‟+i*f值的数据类型为()A.int B.float C.double D.不确定3.1.已知ch是字符变量,下面不正确的赋值语句是()A.ch=‟a+b‟B.ch=‟\0‟C.ch=‟7‟+‟8‟D.ch=5+93.2.设x、y均为float型变量,则以下不合法的赋值语句是()A.++x B.y=(x%2)/10 C.x*=y+8 D.x=y=04.1.逻辑运算符两侧运算对象的数据类型()A.只能是0或1 B.只能是0或非0整数C.只能是整型或字符型数据D.可以是任何类型数据4.2.判断char型变量ch是否为大写字母的正确表达式是()A.‟A‟<=ch<=‟Z‟B.(ch>=‟A‟)&(ch<=‟Z‟)C.(ch>=‟A‟)&&(ch<=‟Z‟) D.(…A‟<=ch)AND(…Z‟>=ch)4.3.已知x=43,ch=‟A‟,y=0;则表达式(x>=y&&ch<‟B‟&&!y)的值是()A.0 B.语法错C.1 D.‟假‟4.4.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是()If(x>y)z=x;x=y;y=zA.x=10,y=20,z=30 B.x=20,y=30,z=30C.x=20,y=30,z=10 D.x=20,y=30,z=204.5.以下程序的运行结果是()main(){int m=5;if (m++>5) printf(“%d”,m);else printf(“%d”,m--);}A.4 B.5 C.6 D.74.6.以下程序的运行结果是()main(){ int k=4,a=3,b=2,c=1;printf(“%d”,k<a?k:c<b?c:a);}A.4 B.3 C.2 D.15.1.设有程序段int k=10;while (k=0) k=k-1;则下面描述中正确的是A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.2.语句while(! E);中的表达式!E等价于()A.E= =0 B.E ! = 1 C.E ! = 0 D.E= =15.3.下面程序段的运行结果是()int n=0;while(n++<=2); printf(“%d”,n);A.2 B.3 C.4 D.有语法错5.4.以下程序段()x=-1;do{x=x*x}while(! x)A.死循环B.循环执行二次C.循环执行一次D.有语法错误5.5.以下不是无限循环的语句是()A.for(y=0,x=1;x>y++y;x=i++) i=x; B. for( ; ; x++=i );C.while(1){x++;} D.for(i=10; ;i--)sum+=i5.6.执行语句for(i=1;i++<4; );后变量i的值是()A.3 B.4 C.5 D.不确定6.1.在C语言中,引用数组元素时,其下标的数据类型允许是()A.整型常量B.整型表达式C.A或B D.任何类型6.2.若有说明:int a[][4]={0,0};则下面不正确的叙述是()A. 数组a的每个元素都可得到初值0B. 二维数组a的第一维大小为1C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D. 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值06.3.若二维数组a有m列,则在a[i][j]前的元素个数为()A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+16.4.下面程序的运行结果是()main(){ int a[6], i ;For (i=1; i<6; i++){ a[i] = 9 * (I – 2 + 4 * ( i > 3)) % 5;Printf( “%2d”, a[i] );}}A. -4 0 4 0 4B. -4 0 4 0 3C. -4 0 4 4 3D. -4 0 4 4 06.5 下面程序段的运行结果是()char c[5] = {…a‟, …b‟, …\0‟, …c‟, …\0‟};printf(“%s”, c);A. …a‟‟ b‟B. abC. ab cD. ab6.6 下面程序段的运行结果是()char a[7] = “abcdef”;char b[4] = “ABC”;strcpy(a, b);printf(“%c”, a[5]);A. 空格B. \0C. eD. f6.7 有下面程度段char a[3], b[]= “China”;a = b;printf(“%s”, a);则()A.运行后将输出China B.运行后将输出ChC.运行后将输出Chi D.编译出错6.8 下面程序的功能是将字符串s中所有的字符c删除。
C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是( )A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是()A、ABCB、abcC、a_bcD、ab。
c3、一个C语言程序是由( )A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a'+i*f值的数据类型为( )A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是()A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR〉表示回车),x的值是( ) 。
#include〈stdio。
h>main(){int x;float y;scanf("%3d%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b;float x,则正确的赋值语句是( )A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是( )#include<stdio。
h>{int i=10,j=10;printf("%d,%d\n”,++i,j——);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是( )#include<stdio.h〉main(){char c1=’A',c2=’Y’;printf(”%d,%d\n”,c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是( )A、<B、十C、%D、!=12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( )。
一、选择题1. 以下叙述正确的是(A)。
A.C语言允许直接访问物理地址,可以直接对硬件进行操作B.C语言程序不必编译,即可在计算机上运行C.C语言不允许直接访问物理地址,不可直接对硬件进行操作D.C语言程序只需编译,不需要连接即可在计算机上运行2. 在一个C程序中(B)。
A.main函数出现在所有函数之前。
C程序不必都有main函数B.main函数可以在任何地方出现。
一个C程序必须有且仅有一个main函数C.main函数必须出现在所有函数之后。
一个C程序只能有一个main函数D.main函数出现在固定位置。
一个C程序可以有多个main函数3. 下列叙述正确的是(B)。
A.C语言中既有逻辑类型也有构造类型数据B.C语言中没有逻辑类型,但有构造类型C.C语言中有逻辑类型,但没有构造类型E.C语言中既没有逻辑类型也没有构造类型4. 下列关于C语言用户标识符的叙述中正确的是(B)。
A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线C.用户标识符中可以出现下划线,但不可以放在标识符开头D.用户标识符中可以出现下划线和数字,他们都可以放在标识符开头5. 下列转义字符中,错误的是(A)。
A.‘\0xa5’ B. ‘\031’ C. ‘\b’ D.‘ \”’6. 字符串“\\\\1234\\\\\n”在内存中占用的字节数是(C)。
A.14B. 9C. 10D. 117. 已知梯形的上底为a, 下底为b,高为h,用C语言写的正确的面积公式是(B)。
A. 1/2*(a+b)*hB. 2*(a+b)*hC. (a+b)hD. 2*a+b*h8. 与k=n++完全等价的表达式是(D)。
A. n=n+1, k=nB. k+=n+1C. K=++nD. k=n, n=n+19. 已定义char s1, s2;, 下面正确的语句是(C)。
A. scanf(“%s%c”, s1,s2);B. scanf(“%s%c”, s1, &s2);C. scanf(“%c%c”, &s1,&s2);D. scanf(“%c%c”, s1,s2);10. 为下面的程序输入数据,使得i=10, k=’a’, j=15, 正确的键盘输入方法是(D)。
c语言试卷集(10套)-试题及答案C语言试卷集(10套)-试题及答案试卷一一、选择题(每题2分,共20分)1. C语言中,用于表示逻辑“真”的值是()。
A. 0B. 1C. -1D. 任意非零值答案:B2. 下列哪个选项是C语言中的合法变量名?()A. 2variableB. variable2C. variable_2D. variable!答案:C3. C语言中,用于定义一个整型数组的语句是()。
A. int array[10];B. int [10] array;C. int 10 array;D. int array=10;答案:A4. 下列哪个选项是C语言中的合法字符串常量?()A. "Hello"B. 'Hello'C. "HelloD. Hello答案:A5. C语言中,用于表示逻辑“假”的值是()。
A. 0B. 1C. -1D. 任意非零值答案:A6. 下列哪个选项是C语言中的合法浮点数常量?()A. 3.14B. 314.C. .314D. 3.14E答案:A7. C语言中,用于定义一个整型变量的语句是()。
A. int x;B. var x;C. x int;D. int = x;答案:A8. 下列哪个选项是C语言中的合法字符常量?()A. 'A'B. "A"C. 'AB'D. "AB"答案:A9. C语言中,用于定义一个字符数组的语句是()。
A. char array[10];B. char [10] array;C. char 10 array;D. char array=10;答案:A10. C语言中,用于表示字符常量的是()。
A. 'A'B. "A"C. AD. "A"答案:A二、填空题(每题3分,共15分)1. C语言中,用于定义一个整型变量并初始化为0的语句是()。
C语言程序设计习题及答案C语言基础一:1.下列四组选项中,均不是C语言关健字的选项是( A )。
A)define B)gect C)include D) whileIF char scanf gotype printf case pow2.下面四个选项中,均是合法整型常量的选项是( A )。
A)160 B)—0xcdf C) -01 D)-0x48a-0xffff 01a 986,012 2e5011 0xe 0668 0x〈〈02>〉B>>23。
下面四个选项中,均是不合法的转义符的选项是( B )。
A) '\"’ B)'\1011’ C)'\011’ D)'\abc’’\\’ '\’ ’\f’ ’\101’'xf’ ’\A' '\}' 'x1f’4.下面不正确的字符串常量是(A )。
A)'abc’ B)”12’12" C)”0" D)” "5.以下选项中不合法的用户标识符是( A )。
A)abc。
c B)file C)Main D)PRINT6。
C语言提供的合法关键字是( D )。
A) swithB)cherC)Case).Default7.下列标识符组中,合法的用户标识符为 AA)_0123与ssipedB)del—word与signedC)list与*jerD) keep%与wind8.在C语言中,逻辑值"真”的表示是用( C )。
A)true B) 整型值0 C)非另整型值D) T9若有以下定义char s='\092’;则该语句( B )A)使s的值包含一个字符B)定义不合法,s的值不确定C)使s的值包含4个字符D)使s的值包含3个字符10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。
A)1 B)2 C)8 D)411已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’+'6’-’3’后,c2中的值为( A )。
C语言试卷(含答案)一、单项选择题(每小题2分,共40分)1、sizeof(float)是()A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式2、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f);为了把100和分别赋给i和f,则正确的输入为()。
A. 100B. i=100,f=765.12C. 100<回车>D. x=100y=3、#include<>voidmain(){inta=3,b=2,c=1;intx=10,y=20;if(a<b)< p="">if(b!=0)if(!x)y=1;elseif(x)y=0;y=-1;printf("%d",y);}上面的C程序的输出结果是()。
A. 20B. 1C. 0D. -14、C语言中,while和do…while循环的主要区别是()。
A. do…while的循环体至少无条件执行一次B. while的循环控制条件比do…while的循环控制条件严格C. do…while允许从外部转到循环体内D. do…while的循环体不能是复合语句5、执行下面的C程序段后,输出结果是()。
inta=5; while(a--);printf("%d",a);A. 54321B. 4321C. 0D. -16、在C语言中,()是在所有函数外部声明的。
A. 全局变量B. 局部变量C. 形参D.实参7、分析下面的C程序:#include<>voidmain(){intnum=0;while(num<=2){num++;printf("%d",num);}}输出结果是()。
A. 123B. 012C. 23D. 128、下面的C语言代码段的输出结果是()。
小学c编程竞赛试题及答案小学C编程竞赛试题及答案1. 题目:编写一个C程序,计算并输出1到100之间所有奇数的和。
答案:以下是一个简单的C程序,用于计算1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 != 0) {sum += i;}}printf("The sum of odd numbers from 1 to 100 is %d\n", sum);return 0;}```2. 题目:编写一个C程序,实现两个整数的加法,并输出结果。
答案:以下是一个简单的C程序,用于实现两个整数的加法。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two numbers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("The sum of %d and %d is %d\n", num1, num2, sum); return 0;}```3. 题目:编写一个C程序,找出并输出一个数组中的最大值。
答案:以下是一个C程序,用于找出并输出一个数组中的最大值。
```c#include <stdio.h>int main() {int arr[] = {10, 20, 30, 40, 50};int max = arr[0];for (int i = 1; i < 5; i++) {if (arr[i] > max) {max = arr[i];}}printf("The maximum value in the array is %d\n", max); return 0;}```4. 题目:编写一个C程序,实现字符串的反转。
一、选择题1. 以下非法的赋值语句是A: n=(i=2,++i);B: j++;C: ++(i+1);D: x=j>0;2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6B: 0C: 2D: 13. 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else printf(“%d”,x++); } 程序运行后,如果从键盘上输人5,则输出结果是()。
A: 3B: 4C: 5D: 64. 有如下程序main0{ int a=2,b=-1,c=2;if(a<b)if(b<0) c=0;else c++printf("%d\n",c);}该程序的输出结果是A: 0B: 1C: 2D: 35. 有以下程序#include <stdio.h>main(){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是( )。
A: 2,1B: 3,2C: 4,3D: 2,-16.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( ){ int x;scanf("%d",&x);if(x + + >5) printf("%d",x);else printf("%d\n",x - -); }A: 7 和5B: 6 和3C: 7 和4D: 6 和47. 能表示x 为偶数的表达式是A: x%2==0B: x%2==1C: x%2D: x%2!=08. 下面的程序段中共出现了几处语法错误?int a,b;scanf("%d",a);b=2a;if(b>0) printf("%b",b);A: 1B: 2C: 3D: 49. C 语言中,逻辑“真”等价于A: 大于零的数B: 大于零的整数C: 非零的数D: 非零的整数10. C 语言的switch 语句中,case 后A: 只能为常量B: 只能为常量或常量表达式C: 可为常量及表达式或有确定值的变量及表达式D: 可为任何量或表达式11. 已知int i=10;表达式"20-0<=i<=9"的值是A: 0B: 1C: 19D: 2012. 设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&&k 的值为A: 1B: 2C: 3D: 013. 逻辑运算符两侧运算对象的数据类型A: 只能是0 或1B: 只能是0 或非0 正数C: 只能是整型或字符型数据D: 可以是任何类型的数据14. 能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()A: (x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B: (x>=1)||(x<=10)||(x>=200)||(x<=210)C: (x>=1)&&(x<=10)||(x>=200)&&(x<=210)D: (x>=1)||(x<=10)&&(x>=200)||(x<=210)15. 已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值是()A: 0B: 1C: 语法错误D: 假16. 执行下列语句后a 的值为int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A: 5B: 0C: 2D: 117. 以下程序的输出结果是()main(){ int a=5,b=0,c=0;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}A: 有语法错误不能通过编译B: 可以通过编译但不能通过连接C: ***D: $$$18. 以下程序的输出结果是()main(){ int m=5;if(m++>5) printf(“%d\n”,m);else printf(“%d\n”,m--);}A: 4B: 5C: 6D: 719. 若运行时给变量x 输入12,则以下程序的运行结果是()main(){ int x,y;scanf(“%d”,&x);y=x>12?x+10:x-12;printf(“%d\n”,y);}A: 0B: 22C: 12D: 1020. 若w=1,x=2,y=3,z=4,则表达式w<x?w:y<z?y:z 的值是A: 4B: 3C: 2D: 121. 设有int a=2,b;则执行b=a&&1;语句后,b 的结果是A: 0B: 1C: 2D: 322. 设有int m=1,n=2;则++m==n 的结果是A: 0B: 1C: 2D: 323. 设有int n=2;则++n+1==4 的结果是A: true B: false C: 1D: 024. 设有int n=2;则++n+1==4,n 的结果是A: 1B: 2C: 3D: 425. 以下使i 的运算结果为4 的表达式是A: int i=0,j=0; (i=3,(j++)+i);B: int i=1,j=0; j=i=((i=3)*2);C: int i=0,j=1; (j==1)?(i=1):(i=3);D: int i=1,j=1; i+=j+=2;26. 当a=5,b=2 时,表达式a= =b 的值为A: 2B: 1C: 0D: 527. 若执行以下程序时从键盘上输入9,_______则输出结果是main(){ int n;scanf("%d",&n);if(n++<10) printf("%d\n",n);else printf("%d\n",n--);}A: 11B: 10C: 9D: 828. main(){ int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A: 6,1B: 2,1C: 6,0D: 2,029. 若有int x=10,y=20,z=30;以下语句执行后x,y,z 的值是()if (x>y)z=x;x=y;y=z;A: x=10,y=20,z=30B: x=20,y=30,z=30C: x=20,y=30,z=10D: x=20,y=30,z=2030. 下列表达式中能表示a 在0 到100 之间的是A: a>0&a<100B: !(a<0||a>100)C: 0<a<100D: !(a>0&&a<100)31. 为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与()组成配对关系。
一、选择题1.在下列有关析构函数的描述中,错误的是(B)A.一个类中只能定义一个析构函数 B.析构函数名与类名完全相同C.析构函数不能指定返回类型 D.析构函数不能带有参数2.面向对象的软件工程不包括以下哪个部分(D)A.面向对象程序设计 B.面向对象编程C.面向对象维护 D.面向对象封装3.假设定义了函数模版:Template <class T>T max(Tx,Ty) {return (x>y)? x:y;}并定义了:int i;char c;那么下列错误的调用该模版的事(C)A.max (i,i) B.max(c,c) C.max(int(c),i) D.max(c,i)4.模版的主要作用是为了(C)A.提高代码的运行效率 B.实现多态性C.提高代码的重要性 D.加强类的封装性5.#include <iostream>#include <iomanip>using namespace std;{double x=111.222222222222222;cout<<setiosflags(ios::scientific)<<setprecision(5)<<x<<endl;return 0;}以上程序的运行结果是(C)A.111.22 B.111.22222 C.1.11222e+002 D.1.11222E+002 6.下列特性中不是面向对象程序设计语言所特有的是(D)。
(A)数据封装(B)继承(C)多态性(D)模板7.类成员的访问权限中,(C)只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected8.派生类可以访问其基类的(D)(A)公有成员(B)保护成员(C)私有派生(D)共有和保护成员9.c++中声明常量的关键字是(A)。
(A)const (B)extern (C)public(D)enum10.应在下列程序划线处填入的正确语句是(C)#include<iostream.h>{public:void fun (){cout<<”Base::fun”<<ENDL;}};Class Derived:public Base{void fun (){__________________________ //显示调用基类的函数fun()Cout<<”Derived::fun”<<ENDL;}};(A)fun(); (B)Base.fun(); (C)Base::fun();(D)Base->fun();11.下面有关类的叙述中,不正确的是(C)。
A.类是一种自定义的数据类型B.在类中,缺省的访问权限是私有的C.只有类的成员函数才能访问类中的私有成员D.任何结构体都可改写为类12.下面关于成员函数的叙述中,(A)是不正确的。
A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的13.以下有关析够函数的叙述不正确的是(B)。
A.一个类只能定义一个析构函数B.析构函数和构造函数一样可以有形参C.析构函数不允许有返回值D.析构函数名前必须冠有符号“~”14.以下运算符不能进行重载的是(A)。
A.?:B.&&C.)^D.[ ]15.当使用ifstreaml流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式是(A)。
A.ios::inB.ios::outC.ios::trunkD.ios::binary16.下列关于C++标识符的命名不合法的是(C )A.PadB. nameC. A#beD. _a1217.对重载函数行参的描述类型是(D )A.参数的个数可能不同B.参数的类型可能不同C.参数的顺序可能不同D.参数的个数,类型,顺序都相同,只是函数的返回值不同18.以下能正确定义数组并正确赋初值的语句是(D )A.int N=5,b[N] [N];B.int a[2]={ {1}, {3}, {4}, {5} };C.int c[2] []={ {1,2}, {3,4} };D.int d[3] [2]={ {1,2},{3,4} };19.下面程序的运行结果为(C)#include <iostream.h>int add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;}int x=20,y=5;int add(int a,int b){int s=a+b;return s;}A.20B.5C.25D.编译会提示出错信息20.虚函数的定义是在基类中进行的,定义时需要冠以关键字(C)A.strstreamB. ostrstreamC. ofstreamD.istrstream二、填空题1.在C++中,变量的引用就是变量的别名,因此引用又称为___别名________2.在C++语言中,二维数组元素在内存中的存放顺序是__________(按行存储)3.格式输出有两种方法:_使用控制符__使用流对象的有关成员函数4.函数重载是指_两个或两个以上的函数取相同的函数名,但形参的个数或类型不同____5.挪用数组名作为函数调用的实参,传递给形参的是___ 数组的首地址6.如果一个类中至少有一个纯虚函数,则称该类为抽象类。
7.在c++类中可以包含公有,私有和保护三种具有不同访问控制权的成员。
8.c++类的组成包括数据成员和成员函数,友元不是(是,不是)该类的成员函数。
9.new的功能是动态申请内存空间,delete的功能是释放由new申请的空间。
10.若有:int i;int &j=i;i=10;j=i+1;则i=11,j=11。
11.执行语句cout<<“x86\082\n”;后,输出结果为______。
(x86)12.用new运算符申请动态对象时,系统将自动调用该对象的_______。
(构造函数)13.定义内联函数的方法是在函数的返回值类型之前增加关键字_______。
(inline)14.对象的_____成员不带有this指针。
(静态)15.在C++编译系统的I/O流类库中,预定义了四个标准流,即________________。
(cin,cout,cerr和clog)16.函数重载时,编译系统会根据_行参的类型_或_形参的个数数来区分。
17.若有char a[80];则cin>>a表示从键盘上读入一个_字符串到数组a中。
18.类的继承方式有_public继承,_private和_protected. 。
19.重载运算符的含义必须清楚,不能有_二义性。
20.C++的I/O是以_字节流的形式实现的,每个C++编译系统都带有一个面向对象的输入/输出软件包,这就是_I/O流类库。
三、程序阅读题1.#include<iostream>using namespce std;class A{public:int fun (int ,int);};int A::fun(int i,int j){public:int fun(int,int);} ;int B::fun(int i,int j){return i-j;}int main(){A *p;A a;B b;p=&a;cout<<p->fun(1,2)<<endl; p=&b;cout<<p->fun(1,2)<<endl; return 0;}执行结果是:332.#include<iostream.h> Int add(int x, int y){Return x+y+1;}double add(double x,double y){Return x+y-1;}void main(){int a=2,b=4;double c=2.6,d=7.4;cout<<add(a,b)<<”,”<<add(c,d)<<endl;}执行结果是:7 93.#include<iostream.h>int f(char *s){ char *p=s;while(*p)p++;return p-s;}void main(void){cout<<f(“ABCDEF”);}程序的输出结果是_______,函数f的功能是______________。
(答案分别为:6,求字符串的长度)4.#include<iostream.h>void f(int *s){ static int j;do{s[j]+=s[j+1];}while(++j<2);}void main(void){int k,a[10]={1,2,3,4,5};for(f(a),k=0;k<5;k++) cout<<a[k]; cout<<endl;for(f(a),k=0;k<5;k++) cout<<a[k]; cout<<endl;}程序输出的第一行是______,程序输出的第二行是________。
(答案为:35345,35745)5.写出下列程序的运行结果。
#include<iostream.h>class count{ static int n;public:count(){n++;}static int test(){ n+=4;return n;}};int count::n=0;void main(){ cout<<count::test()<<endl;count c1,c2;count<<count::test()<<endl;}(结果为:4,10)四、程序设计题1.针对一个字符串类string,采用成员函数的方法重载“<”,采用友元函数的方法重载“==”运算符,实现字符串的比较。
解:#include<iostream.h>#include<string.h>class string{char str[50];public:string(){*str='\0';}string(char *pstr){strcpy(str,pstr);}const char * getstr(){return str;}int operator<(string s){return strcmp(str,s.str)<0;}friend int operator==(string s1,string s2){return strcmp(s1.getstr(),s2.getstr())==0;}};void main(){string s1("hello"),s2("halt"),s3("halt");if(s1<s2)cout<<"s1不小于s2"<<endl;else cout<<"s1不小于s2"<<endl;if(s3==s2)cout<<"s1等于s2"<<endl;else cout<<"s1不等于s2"<<endl;}2.设计一个程序,实现直角坐标类与极坐标类,并实现以下功能:(1)通过重载运算符,实现两个直角坐标类对象间的加、减运算。