C++程序语言模拟期末考试试卷(一)附答案
- 格式:doc
- 大小:75.00 KB
- 文档页数:21
C语⾔程序设计期末考试试题(含答案)兰州城市学院2011-2012学年第⼀学期考试试卷 AC 语⾔程序设计注意事项:1. 请考⽣按要求在试卷装订线内填写姓名、学号和年级专业。
2. 请仔细阅读各种题⽬的回答要求,在规定的位置填写答案。
3. 不要在试卷上乱写乱画,不要在装订线内填写⽆关的内容。
4. 满分100分,考试时间为120分钟。
⼀、单项选择题(在每⼩题的四个备选答案中,选出⼀个正确答案,每⼩题2分,共20分)请将答案填在下⾯的表格中:1.完成C 源⽂件编辑后、到⽣成执⾏⽂件,C 语⾔处理系统必须执⾏的步骤依次为( D ) A.连接、编译B. 连接、运⾏C. 编译、运⾏D. 编译、连接2.下列说法正确的是( B )A.⼀个c 语⾔程序并⾮总是从主函数位置开始执⾏的B.⼀个c 语⾔程序有且只有⼀个主函数C.函数可以嵌套定义,不可以嵌套调⽤D.程序函数的位置不可以任意3.下⾯是合法C语⾔标识符的是( D )A. 2A_K;B. _M+N;C. –M3;D. AC_2;4.下列格式符中,可以⽤于控制字符输出的是( D )A. %dB. %fD. %c5.设x、y、z和k都是int型变量,则执⾏表达式x=(y=4,z=16,k=30)后,x的值是( C )A. 4;B. 16;C. 30;D. 50;6.执⾏语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( B )A. 10,5B. 15,6C. 15,5D. 10,67.若有定义int x,*p;,则以下正确的赋值表达式是( B )A. p=x;B. p=&x;C. *p=&xD. *p=*x;8.以下对结构体类型变量的定义中,不正确的是( C )A. typedef struct aaB. #define AA struct aa{ int n; AA { int n;float m; float m;}AA; }stud;AA stud;C. structD. struct{ int n; { int n;float m; float m;}aa; }stud;struct aa stud;9.有如下函数调⽤语句:func(rec1,rec2+rec3,(rec4+rec5));函数调⽤语句中,含有的实参个数是( A )A. 3B. 4D. 以上均不是10.对于以下宏定义:#define SQ(x) x*x#define QQ(x,y) SQ(x)- SQ(y)宏调⽤QQ(2*3,2+3)执⾏后值为( C )A.25B.11C.43D.以上均不是⼆、填空题(每空2分,共20分)1.设int a=5, c=32;float b=2.5;,表达式b+c/a的值为___ 8.5 ___。
c语言期末考试考试题及答案C语言期末考试考试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言的关键字?A. IntegerB. intC. StringD. float答案:B2. C语言中,哪个运算符用于计算两个整数的乘积?A. *B. /C. %D. +答案:A3. 在C语言中,以下哪个语句用于定义一个整型变量?A. int var;B. variable int;C. var int;D. int = var;答案:A4. 下列哪个选项是正确的C语言数组声明?A. int array[10];B. int [10] array;C. array[10] int;D. int array = 10;答案:A5. C语言中,哪个函数用于计算两个数的最大值?A. max(int a, int b)B. max(double a, double b)C. maximum(int a, int b)D. max_value(int a, int b)答案:A二、填空题(每空2分,共20分)1. C语言中,一个完整的程序由_________和_________两部分组成。
答案:预处理指令;函数2. 在C语言中,用_________关键字定义一个函数。
答案:void 或 int 或其他数据类型(根据函数返回类型而定)3. C语言中,用于输入输出的库函数是_________和_________。
答案:printf;scanf4. 一个C语言程序的执行从_________函数开始。
答案:main5. C语言中,定义一个字符常量使用的是_________括号。
答案:单引号三、简答题(每题10分,共20分)1. 简述C语言中变量的作用域和生命周期。
答案:变量的作用域指的是变量可以被访问的代码区域。
局部变量的作用域仅限于定义它的块内,而全局变量可以在整个程序中访问。
变量的生命周期指的是变量存在的时间,局部变量的生命周期从定义开始到所在代码块结束,全局变量的生命周期则从程序开始到结束。
C语言模拟考试卷一、是非题(每小题1分,共5分)(1)若有说明:int a[][4] ={0,0}; 则二维数组a的第一维大小为1 BA)对B)错(2)判断char型变量cl是否为大写字母的正确表达式是(cl>= 'A')&&(cl<= 'Z')A A)对B)错(3)已知int a=1,b=-1; 则语句printf("%d\n", (a--, ++b)); 的输出结果是-1B A)对B)错(4)strcmp函数的功能是字符串的比较AA)对B)错(5)sizeof(float)是一个不合法的表达式BA)对B)错二、单项选择题(每小题3分,共75分)(1)下列关于C语言用户标识符的叙述中正确的是(A)。
A)用户标识符中可以出现下划线和中划线(减号)B)用户标识符中不可以出现中划线,但可以出现下划线C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头(2)下列叙述中正确的是(B)。
A)C语言的函数可以嵌套调用B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言编译时不检查语法(3)以下4个选项中,不能看做一条语句的是(D)。
A); B)a=5,b=2.5,c=3.6;C)if(a<5); D)if(b!=5)x=2;y=6;(4)以下程序段的描述,正确的是(C)。
x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误(5)已知char ch=’C’;则以下表达式的值是(D)。
ch=(ch>=’A’ && ch<=’Z’)?(ch+32):ch;A)A B)a C)Z D)c(6)执行下面的程序段后,变量k中的值为(A)。
int k=3, s[2];s[0]=k; k=s[1]*10;A)不定值B)33 C)30 D)10(7)现有如下定义:int a, b, *p, *q;,则下列赋值语句错误的是(D)。
C语言期末考试题(含答案)《C语言程序设计》期末试卷一、单项选择题(10x2’=20’)1、以下叙述正确的是()A)C语言的源程序不必通过编译就可以直接运行。
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令。
C)C语言源程序经编译形成的二进制代码可以直接运行。
D)C 语言中的函数不可以单独进行编译。
2、一个C语言的源程序中()A)必须有一个主函数B)可能有多个主函数C)必须有除主函数外其它函数D)可以没有主函数3、以下不能定义为用户标识符的是()A)scanfB)VoidC)_3comD)int4、若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3;15、设有定义:floata=2,b=4,h=3;以下C语言表达式中与代数式(a b)*h的计2算结果不相符的是().C)for、while、do-whileD)if、for、continue7.在while(!x)语句中的!x与下面条件表达式等价的是()A) x!=0B) x==1C)x!=1D)x==08、有以下程序:#include <XXX>void main(){int i=1,j=1,k=2;if( (j++||k++)&&i++ )printf(“%d,%d,%d\n”,i,j,k);}执行后的输出结果是()A)1,1,2B)2,2,1C)2,2,2D)2,2,39、有以下程序:#include <XXX>void main(){int i,s=0;for(i=1;i<10;i+=2)s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是()A)自然数1~9的累加和B)自然数1~10的累加和C)自然数1~9中奇数之和D)自然数1~10中偶数之和10、有以下函数定义:void fun(int n,double x){……}若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(int y,double m);B)k=fun(10,12.5);C)fun(x,n);D)void fun(n,x);2、填空题(10x2’=20’)11、C言语描绘“x和y都大于或等于z”的表达式是:。
C++模拟试卷(一)一、单项选择题(共20题,每题1分,共20分)二、1、下列关于C++标识符的命名不合法的是C三、 A. Pad B. name_1 C. A#bc D. _a12四、2、若有以下类型标识符定义:(D)五、int x=2;char w='a';float y=;double z=;六、则表达式w*x+y-z的结果类型是七、 A. float B. char C. int D. double八、3、若有int x=10,y=20,z=30; 则执行下面语句后,x的值是B九、if(x>y)十、z=x;十一、x=y;十二、y=z;十三、 A. 10 B. 20 C. 30 D. 0十四、4、循环语句whlie(int i=0 )i--;的循环次数是A十五、 A. 0 B. 1 C. 5 D. 无限十六、5、一个函数无返回值时,应选择的说明符是C十七、 A. static B. extern C. void D. 无说明符十八、6、对重载函数形参的描述中,错误的是D十九、 A. 参数的个数可能不同二十、 B. 参数的类型可能不同二十一、C. 参数的顺序可能不同二十二、D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同二十三、7、以下能正确定义数组并正确赋初值的语句是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}};二十八、8、下列给字符数组进行的初始化中,不正确的是D二十九、A. char s1[]="abcd";三十、 B. char s2[3]={'x','y','\0'};三十一、C. char s3[]={'a','x','y','\0'};三十二、D. char s4[6]={"xyz","mnp"};三十三、9、通常的拷贝构造函数的参数是C三十四、A.某个对象名B.某个对象成员名三十五、C.某个对象的引用D.某个对象的指针名三十六、10、关于构造函数特点的描述中,错误的是A三十七、A. 定义构造函数必须指出类型三十八、B. 构造函数的名字与该类的类名相同三十九、C. 一个类中可定义0至多个构造函数四十、 D. 构造函数是一种成员函数四十一、11、下面程序的运行结果为C四十二、#include <>四十三、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.20 B.5 C.25 D.编译会提示出错信息五十六、12、关于常成员的描述中,错误的是B五十七、A. 常成员包含常数据成员和常成员函数两种五十八、B. 常数据成员必须是公有的五十九、C. 常数据成员要使用构造函数成员初始化列表进行初始化六十、 D. 常对象只能调用它的常成员函数,不能调用其它的成员函数六十一、13、关于友元函数的描述中,错误的是B六十二、A. 友元函数不是成员函数六十三、B. 友元函数只能访问类中私有成员六十四、C. 友元函数破坏隐藏性,尽量少用六十五、D. 友元函数说明在类体内,使用关键字friend六十六、14、如果有int x,*p; float y,*q;则下面操作正确的是C六十七、A.p=x B.p=q六十八、C.p=&x D.p=&y六十九、15、若有函数说明void fA(int m, int n); 和指针变量的定义void (*p)(int,int);并且有p= fA则下列操作不正确的是D七十、A.(*p)(3,4); B.p(3,4);七十一、C.fA(3,4); D.*p++;七十二、16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是D七十三、A. 数组的长度七十四、B. 数组第一个元素的值七十五、C. 数组所有元素的值七十六、D. 数组第一个元素的地址七十七、17、对于动态分配内存空间描述正确的是D七十八、A.使用new运算符分配的内存空间的长度必需是常量七十九、B.delete运算符可以释放动态的存储空间和静态的存储空间八十、C.由new分配的内存空间是不连续的八十一、D.delete运算符只能释放由new分配的动态存储空间八十二、18、能够释放对象所占资源的是(A)八十三、A.析构函数B.数据成员八十四、C.构造函数D.静态成员函数八十五、19、虚函数的定义是在基类中进行的,定义时需要冠以关键字C八十六、A.static B.frend八十七、C.virtual D.public八十八、20、在C++中串流类是在头文件中定义的,下列不属于串流类的是)C八十九、A.strstream B.ostrstream九十、C.ofstream D.istrstream九十一、二、填空题(共9题16空,每空1分,共16分)九十二、1、函数重载时,编译系统会根据_形参的类型九十三、___ 或__形参的个数__ 来区分。
C语言程序设计期末考试试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列关于C语言函数的描述中,正确的是?A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数可以没有参数D. 函数必须有参数答案:C3. 在C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. #答案:B4. 下列关于数组的描述中,错误的是?A. 数组可以是多维的B. 数组的下标从0开始C. 数组的大小在编译时确定D. 数组可以动态分配答案:D5. C语言中,以下哪个关键字用于定义一个指针?A. intB. charC. *D. void答案:C6. 在C语言中,以下哪个关键字用于定义一个静态变量?A. staticB. externC. registerD. auto答案:A7. 下列关于C语言中文件操作的描述中,正确的是?A. 文件操作只能使用标准库函数B. 文件指针必须使用FILE类型C. 文件操作必须使用fclose函数关闭文件D. 文件操作不能使用缓冲区答案:B8. 在C语言中,以下哪个关键字用于定义一个宏?A. defineB. typedefC. enumD. struct答案:A9. 下列关于C语言中位运算的描述中,错误的是?A. & 表示按位与B. | 表示按位或C. ^ 表示按位异或D. ~ 表示按位取反答案:B10. 在C语言中,以下哪个关键字用于定义一个枚举类型?A. enumB. structC. unionD. typedef答案:A二、填空题(每题2分,共20分)1. 在C语言中,一个整型变量占用的内存空间通常是______个字节。
答案:42. C语言中,使用______关键字可以定义一个无限循环。
答案:while3. C语言中,数组的元素默认初始化为______。
C语言程序设计期末考试试题含答案一、选择题(每题 3 分,共 30 分)1、以下选项中,不是 C 语言关键字的是()A intB floatC charD string答案:D解释:string 不是 C 语言的关键字,C 语言中表示字符串通常使用字符数组。
2、以下能正确表示八进制整数的是()A 018B 0x18C 0o18D 18答案:C解释:在 C 语言中,八进制整数以 0 开头,数字取值范围 0 7,所以 0o18 能正确表示八进制整数。
3、若有定义:int a = 5, b = 2; 则表达式 a / b 的值是()A 25B 2C 20D 3答案:B解释:在 C 语言中,两个整数相除,结果为整数,舍去小数部分,所以 5 / 2 的结果是 2 。
4、以下程序段的输出结果是()int x = 10;printf("%d\n",++x);A 10B 11C 9D 12答案:B解释:++x 是先将 x 的值增加 1,然后再使用 x 的值,所以输出11 。
5、若有定义:int a5 ={1, 2, 3, 4, 5};则 a2的值是()A 2B 3C 4D 5答案:B解释:数组下标从 0 开始,所以 a2的值是 3 。
6、以下函数声明中,正确的是()A void fun(int a, b);B void fun(int a, int b);C void fun(int a; int b);D void fun(int, int);答案:B解释:函数参数列表中,每个参数都需要明确指定其类型,所以 B 选项正确。
7、若有定义:char str ="hello";则 sizeof(str)的值是()A 5B 6C 20D 不确定答案:B解释:str 数组不仅包含字符'h','e','l','l','o',还包含一个字符串结束符'\0',所以 sizeof(str)的值是 6 。
C语言程序设计考试试卷(附答案)C语言程序设计考试试卷(附答案)第一部分:选择题(共40题,每题2分,总分80分)1. 下列哪个关键字用于定义常量?A. constB. intC. staticD. volatile2. 在C语言中,以下哪个运算符用于将一个整数转换为浮点数?A. *B. /C. %D. +3. 下列代码的输出结果是什么?```c#include <stdio.h>void main() {int x = 2, y = 3;printf("%d", x++ * ++y);}```A. 7B. 8C. 9D. 104. C语言中,以下哪个运算符用于从一个整数中提取指定位数的值?A. <<B. >>C. |D. &5. 下列代码的输出结果是什么?```c#include <stdio.h>void main() {int arr[] = {1, 2, 3, 4, 5};int *ptr = arr + 2;printf("%d", *ptr);}```A. 1B. 2C. 3D. 4......40. 下列关于结构体的说法中,错误的是:A. 结构体可以包含不同类型的成员变量B. 结构体可以作为函数参数和返回值C. 结构体可以使用“->”来访问成员变量D. 结构体可以使用“sizeof()”函数获取其大小第二部分:填空题(共10题,每题4分,总分40分)1. 以下是有效的C语言标识符:___hello___2. 下列代码的运行结果是:___88___```c#include <stdio.h>void main() {int x = 8;printf("%d", x++);}```3. 在C语言中,以下是有效的声明:___int i, *p;___4. 下列代码的输出结果是:___10___```c#include <stdio.h>void main() {int arr[5] = {1, 2, 3, 4, 5};int *ptr = arr + 2;printf("%d", *(ptr + 2));}```5. 在C语言中,以下是合法的函数声明:___void fun(int x, float y);___......第三部分:编程题(共3题,每题20分,总分60分)1. 编写一个函数,接受一个整型数组和数组的长度作为参数,返回数组中的最大值。
C 语言程序设计期末考试试题及其答案一、单项选择题(本大题共20 题,每题 2 分,共40分)1、以下不是C 语言的特点的是( )A、 C 语言简洁、紧凑B、能够编制出功能复杂的程序C、 C 语言可以直接对硬件进行操作D、 C 语言移植性好2、以下不正确的C 语言标识符是( )A、ABC B 、abc C、a_bc D、ab.c3、一个C 语言程序是由( )A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5 个特性,对另外4 个特性的描述中错误的是( )A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a 是整型,f 是实型,i 是双精度型,则表达式10+‘a'+i*f 值的数据类型为( )A、intB、float C 、double D、不确定6在C语言中,char型数据在内存中的存储形式是()A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678V。
只>后(<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、vB、十C、%D、!=12、设x、y和z是int型变量,且x = 3, y = 4, z= 5,则下面表达式中值为0 是( ) 。
《C语言程序设计》期末笔模拟试卷(本试卷满分60分)院系学号姓名1. 答案均写在答题纸上,写在卷面上无效;2. 答题结束后将试卷及答题纸全部交给监考教师;一、单选题 (1分×16,共16分)1. 下面 (1) 是正确的局部数组声明CA. char a[][5]={“math”,“phy”,“chemi” };B. int b[3][3]={{1,2,3},4,5,6,7,{8,9}};C. float c[sizeof(sin(1))]={1,‘\n’};D. char ch[ ][10]={“Beijing”,“Nanjing”},*p[ ]={ ch[0],ch[1] };2. 如下哪个程序语法、语义都正确,且能获得正确的运行结果(2) A3. 若有声明:enum d{ e,s,w,n}c=s;则表达式“ops”+ c值的类型是 (3) 。
B A. enum d B. char * C. int D. int *4. 下列叙述中除 (4) 之外都是正确的。
BA.引用函数说明中指定的形参名,不必与函数定义中对应的形参名相同。
B.不能用extern定义一个外部变量、数组。
C. 无论在函数外还是在函数内说明引用本程序中定义的函数,都可不写extern关键字。
D.用extern说明引用一个外部数组时,可以不给出数组大小。
5. 下列能正确执行的程序是: (5) A6. 对于二维数组定义: int a[i][j]; (i、j均为常量),且有:0≤m<i,0≤n<j , 则下列除 (6) 外,都是不等价的。
BA. a+m 与 a[0]+mB. a+m 与 *(a+m)C. *(a+m) 与 *a[m]D. *a 与 *a[0]7. 若程序中有声明:“float a,b[3][4];”与引用函数的说明:“int fun(floatk[][3]),int n);”则下列 (7) 都是常量或常量表达式。
C++模拟试卷(一)一、单项选择题(共20题,每题1分,共20分)1、下列关于C++标识符的命名不合法的是CA. PadB. name_1C. A#bcD. _a122、若有以下类型标识符定义:()int x=2; char w='a'; float y=23.45f; double z=45.6712;则表达式w*x+y-z的结果类型是 DA. floatB. charC. intD. double3、若有int x=10,y=20,z=30; 则执行下面语句后,x的值是Bif(x>y)z=x;x=y;y=z;A. 10B. 20C. 30D. 04、循环语句whlie(int i=0 )i--;的循环次数是AA. 0B. 1C. 5D. 无限5、一个函数无返回值时,应选择的说明符是CA. staticB. externC. voidD. 无说明符6、对重载函数形参的描述中,错误的是DA. 参数的个数可能不同B. 参数的类型可能不同C. 参数的顺序可能不同D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是DA. 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}};8、下列给字符数组进行的初始化中,不正确的是DA. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、通常的拷贝构造函数的参数是CA.某个对象名 B.某个对象成员名C.某个对象的引用 D.某个对象的指针名10、关于构造函数特点的描述中,错误的是AA. 定义构造函数必须指出类型B. 构造函数的名字与该类的类名相同C. 一个类中可定义0至多个构造函数D. 构造函数是一种成员函数11、下面程序的运行结果为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.20 B.5 C.25 D.编译会提示出错信息12、关于常成员的描述中,错误的是BA. 常成员包含常数据成员和常成员函数两种B. 常数据成员必须是公有的C. 常数据成员要使用构造函数成员初始化列表进行初始化D. 常对象只能调用它的常成员函数,不能调用其它的成员函数13、关于友元函数的描述中,错误的是BA. 友元函数不是成员函数B. 友元函数只能访问类中私有成员C. 友元函数破坏隐藏性,尽量少用D. 友元函数说明在类体内,使用关键字friend14、如果有int x,*p; float y,*q;则下面操作正确的是CA.p=x B.p=qC.p=&x D.p=&y15、若有函数说明void fA(int m, int n); 和指针变量的定义 void (*p)(int,int);并且有p= fA则下列操作不正确的是DA.(*p)(3,4); B.p(3,4);C.fA(3,4); D.*p++;16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是DA. 数组的长度B. 数组第一个元素的值C. 数组所有元素的值D. 数组第一个元素的地址17、对于动态分配内存空间描述正确的是DA.使用new运算符分配的内存空间的长度必需是常量B.delete运算符可以释放动态的存储空间和静态的存储空间C.由new分配的内存空间是不连续的D.delete运算符只能释放由new分配的动态存储空间18、能够释放对象所占资源的是( A)A.析构函数 B.数据成员C.构造函数 D.静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以关键字C A.static B.frendC.virtual D.public20、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是C)A.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9题16空,每空1分,共16分)1、函数重载时,编译系统会根据形参的类型或形参的个数来区分。
2、若有char a[80];则cin>>a表示从键盘上读入一个字符串到数组a中。
3、若希望用一个已有对象来构造另一个同类型的对象,可以使用拷贝构造函数来实现。
4、静态成员属于类,而不属于任何一个对象,它被同一个类的所有对象共享。
5、类的继承方式有public(或公有)继承、private(或私有)继承和protected(或保护)继承。
6、重载运算符的含义必须清楚,不能有二义性。
7、按照联编进行阶段的不同,联编方法可分为两种:动态联编和静态联编。
8、当基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型以及参数的顺序都必须与基类中的原型完全相同。
9、C++的I/O是以的形式实现的,每个C++编译系统都带有一个面向对象的输入/输出软件包,这就是字节流 I/O流类库。
三、判断题(共10题,每题1分,共10分)1、C++语言支持封装性和继承性,不支持多态性。
×2、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。
)×3、字符串"sdfgh"的长度是5。
√4、引用和指针都可作函数参数。
√5、友元函数说明在类体内,它是一种成员函数。
×6、友元类必须被说明为公有成员。
×7、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。
√8、析构函数不能被继承。
√9、运算符重载以后,其优先级和结合性都不能改变。
√10、在C++中,函数名实际上是一个指针,它指向函数的入口。
√四、分析程序,回答所提出的问题(16分)1、 #include <iostream.h>class B;class A{public:A(int i){ a=i; }friend int F(A &f1,B &f2); private:int a;};class B{public:B(int i){ b=i; }friend int F(A &f1,B &f2); private:int b;};int F(A &f1,B &f2){return (f1.a+f2.b)* (f1.a-f2.b); }void main(){A n1(10);B n2(8);cout<<F(n1,n2)<<endl;}① 写出程序的运行结果。
36② 该程序中共有几个对象,分别属于哪个类? 为什么在程序的开头处通过语句class B; 对类B进行声明?n1 和 n2 两个对象,n1属于A类,n2属于B类因为B类的定义在A类后,而A类中要引用B类③ 程序中的哪两条语句会分别调用A、B的构造函数?写出这两个构造函数语句A n1(10); 和语B n2(8);A类的构造函数:A(int i) { a=i; }B类的构造函数:B(int i) { b=i; }④ 函数F是什么函数?它的作用是什么?函数F是友元函数。
它的作用是:提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间共享数据的机制。
(关键答出共享数据、或答出通过友元可以访问到封装与类A、B中的数据)五、阅读程序,写出运行结果(共2题,第1题6分,第2题8分,共14分)1、 #include <iostream.h>int func(int a){int b=0;static int c=4;b++; c--;return(a+b+c);}void main( ){int a=2;for(int j=0;j<2;j++)cout<<func(a+j)<< " ";}输出结果为:6 62、 #include <iostream.h>class X{public:X(int i){ x=i; cout<<”int: ”<<i<<’,’<<”called\n”; }X(double i){ x=(int)i*2; cout<<” double: ”<<i<<’,’<<”called\n”; } ~X(){ cout<<” ~X(): ”<<x<<’,’<<”called\n”; }private:int x;};void main(){int a=8;double b=11.0;X x1(55), x2(a*5);X x3=X(2*a);X x4=X(b);}输出结果为:int:55,calledint:40,calledint:16,calleddouble:11,called~x<>:22,called~x<>:16,called~x<>:40,called~x<>:50,called六、编写程序(共2题,第1题10分,第2题14分,共24分)1、输入一组数据以-1作为结束标志,要求删除其它数据只保留能被2整除的数据并输出结果。
# include <iostream.h>void main(){int b[50],x,n=0;cin>>x;while(x!=-1){b[++n]=x;cin>>x;}for(int i=1,j=0;i<=n;i++)if(b[i]%2==0) b[++j]=b[i];for(i=1;i<=j;i++)cout<<b[i]<< '\t';cout<<endl;}2、定义一个日期类Date,包含年、月、日三个数据成员,以及一个求第二天日期的成员函数和输出日期的成员函数。