哈工大秋《C 程序设计》考试题A
- 格式:doc
- 大小:76.50 KB
- 文档页数:7
若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组中下标最小的元素名字是【1】.答案:1. a[0]〖第2题〗『填空』(1分字符串的结束标志是【1】.答案:1. \0 或 '\0' 或 0〖第3题〗『填空』(1分设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b+c-1&&b+c/2后,t的值是【1】.答案:1. 1〖第4题〗『填空』(1分在面向对象程序设计中,基类的构造函数和【1】函数不能被继承.答案:1. 析构〖第5题〗『填空』(1分写出表达式 1.234&&5.982 的值是【1】.答案:1. 1〖第6题〗『填空』(1分【1】称为文件包含命令,其意义是把指定的文件包含到本程序中,成为程序的一部分. 答案:1. #include〖第7题〗『填空』(1分C++中,流对象【1】称为标准输出设备.答案:1. coutC++程序在执行中,不检查数组下标是否【1】.答案:1. 越界〖第9题〗『填空』(1分C++语言中,数组名是一个不可变的【1】常量,不能对它进行自加自减和赋值运算. 答案:1. 地址〖第10题〗『填空』(1分若所用变量均已正确定义,则执行下面程序段后的值是【1】.for(i=0 ; i<2 ; i++ cout<<"YES";cout<答案:1. YESYES〖第11题〗『填空』(1分已知 i=5,写出语句 i-=18; 执行后整型变量 i 的值是【1】.答案:1. -13〖第12题〗『填空』(1分#define A(n 2*n+1,则表达式A(2+3的值是【1】答案:1. 8〖第13题〗『填空』(1分关键字【1】用于进行动态内存分配,关键字delete用于释放所分配的内存.答案:1. new〖第14题〗『填空』(1分C++语言表达式!(3<6||(4<9的值是【1】.答案:1. 1〖第15题〗『填空』(1分设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:a*=16+(b++-(++c;后,a的值是【1】.答案:1. 28〖第16题〗『填空』(1分若输入字符串:abcde<回车>,则以下while循环体将执行【1】次.while((ch=cin.get(=='e' cout<<"*"<答案:1. 0〖第17题〗『填空』(1分在C++中,类及由类所定义的对象二者中,【1】占内存空间.答案:1. 对象〖第18题〗『填空』(1分有下列程序段,执行后的输出结果是【1】.int a=3, b=5;int max(int a, int b{ int c;c=a>b? a:b;return c;}void main({ int a=8;cout<}答案:1. 8〖第19题〗『填空』(1分一个C源程序中至少应包括一个【1】函数,它是C程序中唯一可以直接执行的函数,其他函数都是直... 答案:1. main 或 main( 或主〖第20题〗『填空』(1分已知a=13,b=6, a&&b的十进制数值为【1】.答案:1. 1〖第1题〗『判断』(1分单重继承是指派生类只有一个基类的情况.答案:Y〖第2题〗『判断』(1分break语句只能用在循环语句中.答案:N〖第3题〗『判断』(1分定义在类体内的成员函数是内联函数,定义在类体外的成员函数不能是内联函数. 答案:N〖第4题〗『判断』(1分x*=y+8 等价于 x=x*(y+8.答案:Y〖第5题〗『判断』(1分指针函数是指函数的返回值为指针的函数.答案:Y〖第6题〗『判断』(1分类型标识符函数名(参数表列{函数体}此函数是内联函数.答案:N〖第7题〗『判断』(1分char *p ="PCGAME";是定义初始化指针变量,指针变量的值是一个字符串.答案:N〖第8题〗『判断』(1分int i=20;switch(i/10{case 2:cout<<"A";case 1:cout<<"B";}的输出结果为A.答案:N〖第9题〗『判断』(1分数组只有一个下标,称为一维数组.答案:Y〖第10题〗『判断』(1分char ch[8]= "student";cout << strlen (ch; 结果为8.答案:N〖第11题〗『判断』(1分若有宏定义:#define S(a,b a+b 此宏定义是错误的.答案:N〖第12题〗『判断』(1分int *p=null;是正确的定义.答案:N〖第13题〗『判断』(1分一维字符数组的输入:char str[22] ;cin>> str;答案:Y〖第14题〗『判断』(1分char ch1[ ]={"student"}; 字符数组ch1长度为8,存储的是字符串答案:Y〖第15题〗『判断』(1分int i表示取变量i的整数部分.答案:N〖第16题〗『判断』(1分不能对字符数组整体进行赋值,只能给各个元素赋值,而字符指针变量可以直接赋值.答案:Y〖第17题〗『判断』(1分struct是声明结构体类型时所必须使用的关键字,可以省略;答案:N〖第18题〗『判断』(1分char ch2[ ]={'s ', 't ' , 'u ', 'd ', 'e ', 'n ', ' t' }; 字符数组ch2长度为7,存储... 答案:Y〖第19题〗『判断』(1分对二维数组正确定义的形式是:int a(2(3;答案:N求字符串长度函数strlen (答案:Y〖第1题〗『单项选择』(1分两个指针变量不可以(.A:相加B:比较C:相减D:指向同一地址答案:A〖第2题〗『单项选择』(1分C++语言中,char类型数据占(.A:1个字节B:2个字节C:4个字节D:8个字节答案:A〖第3题〗『单项选择』(1分以下能正确定义数组并正确赋初值的语句是(. A:int N=5,b[N][N];B:int a[1][2]={{1},{3}};C:int c[2][]={{1,2},{3,4}};D:int d[3][2]={{1,2},{3,4}};答案:D〖第4题〗『单项选择』(1分求平方根函数的函数名为(.A:cosB:absC:powD:sqrt答案:D下列程序段的输出结果为(.#include void main({ int x=3,y=2; cout<<(x-=y,x*=y+8/5;}A:1B:7C:3D:5答案:C〖第6题〗『单项选择』(1分以下不是无限循环的语句为(.A:for(y=0,x=1;x>++y;x=i++ i=x;B:for(;;x++=i;C:while(1{x++;}D:for(i=10;;i-- sum+=i;答案:A〖第7题〗『单项选择』(1分若以下变量均是整型,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为(. A:7B:8C:9D:10答案:B〖第8题〗『单项选择』(1分以下语句中,循环次数不为10次的语句是(.A:for(i=1;i<10;i++;B:i=1;do{i++;}while(i<=10;C:i=10;while(i>0{--i;}D:for(i=10;i>0;i--;答案:A〖第9题〗『单项选择』(1分函数返回值的类型是由(决定的.A:return语句中表达式的类型B:函数定义时的类型C:调用函数时的调用语句D:系统根据结果答案:B〖第10题〗『单项选择』(1分下面说明不正确的是(.A:char a[10]="china";B:char a[10],*p=a;p="china"C:char *a;a="china";D:char a[10],*p;p=a="china"答案:D〖第11题〗『单项选择』(1分下列字符序列中,是C++语言关键字的是(.A:sizeofB:printfC:cinD:sqrt答案:A〖第12题〗『单项选择』(1分double x;cin>>x;不可以赋值给x变量的常量是(.A:123B:100000C:3.14D:"abc"答案:D〖第13题〗『单项选择』(1分int a[10];给数组a的所有元素分别赋值为1、2、3、……的语句是(. A:for(i=1;i<11;i++a[i]=i;B:for(i=1;i<11;i++a[i-1]=i;C:for(i=1;i<11;i++a[i+1]=i;D:for(i=1;i<11;i++a[0]=1;答案:B〖第14题〗『单项选择』(1分设char ch1='A',ch2='a'; 表达式ch2==ch1+32?ch1:ch1+32的值是(. A:0B:1C:a'D:A'答案:D〖第15题〗『单项选择』(1分具有相同类型的指针变量p与数组a,不能进行的操作是(.A:p=a;B:*p=a[0];C:p=&a[0];D:p=&a;答案:D〖第16题〗『单项选择』(1分在以下给出的表达式中,与 do--while(E语句中的(E不等价的表达式是(.A:(!E==0B:(E>0||E<0C:(E==0D:(E!=0答案:C〖第17题〗『单项选择』(1分以下程序的输出结果是(.#include void main({ char s[]="123",*p; p=s; cout<<*p++<A:123B:1C:3D:321答案:B〖第18题〗『单项选择』(1分下列字符序列中,不可用作C++语言标识符的是(.A:b70B:#abC:symbolD:a_1答案:B〖第19题〗『单项选择』(1分下列的调用方式(是引用调用.A:形参和对应的实参都是变量名B:形参是指针,对应的实参是地址值C:形参是引用,对应的实参是变量名D:形参是变量名,对应的实参是地址值答案:C〖第20题〗『单项选择』(1分以下标识符中,不能作为合法的C用户定义标识符的是(. A:a3_b3B:voidC:_123D:IF答案:B〖第21题〗『单项选择』(1分系统的标准输入文件是指(.A:键盘B:显示器C:软盘D:硬盘答案:A〖第22题〗『单项选择』(1分设有定义: char str[100]; 当执行 cin>>str; 后,从键盘输入:″C++ programming windows″... A:C++B:C++ programmingC:windowsD:C++ programming windows答案:A〖第23题〗『单项选择』(1分下列表达式中,可作为C++合法表达式的是(.A:[3,2,1,0]B:(3,2,1,0C:3=2=1=0D:3/2/1/0答案:B〖第24题〗『单项选择』(1分若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(.A:p=q;B:*p=*q;C:n=*q;D:p=n;答案:D〖第25题〗『单项选择』(1分对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是(.A:将5个初值依次赋给a[1]至a[5]B:将5个初值依次赋给a[0]至a[4]C:将5个初值依次赋给a[6]至a[10]D:因为数组长度与初值的个数不相同,所以此语句不正确答案:B〖第26题〗『单项选择』(1分以下正确的说法是(.A:用户若需调用标准库函数,调用前必须重新定义B:用户可以重新定义标准库函数,若如此,该函数将失去原有含义C:系统根本不允许用户重新定义标准库函数D:用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系.. 答案:B〖第27题〗『单项选择』(1分以下描述中正确的是(.A:由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B:do-while 循环由do开始,用while结束,在 while(表达式后面不能写分号C:在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假"的操作D:do-while 循环中,根据情况可以省略 while答案:C〖第28题〗『单项选择』(1分以下对C++语言函数的描述中,正确的是(.A:C++程序必须由一个或一个以上的函数组成B:C函数既可以嵌套定义又可以递归调用C:函数必须有返回值,否则不能使用函数D:C++程序中有调用关系的所有函数必须放在同一个程序文件中答案:A〖第29题〗『单项选择』(1分下列语句的结果是(.#include void main({ int j; j=3; cout<<++j; cout<<","<A:3,3B:3,4C:4,3D:4,4答案:D〖第30题〗『单项选择』(1分关于return语句,下列正确的说法是(.A:在主函数和其他函数中均可出现B:必须在每个函数中出现C:可以在同一个函数中出现多次D:只能在除主函数之外的函数中出现一次答案:C〖第1题〗『程序填空』(8分/*------------------------------------------------------- 【程序填空】--------------------------------------------------------- 题目:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
专升本c语言程序设计试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列关于C语言函数的描述,哪个是正确的?A. 函数可以没有返回值B. 函数不能有多个返回值C. 函数必须有返回值D. 函数不能有参数答案:A3. 在C语言中,以下哪个运算符用于计算两个整数的和?A. %B. +C. ==D. &&答案:B4. C语言中,以下哪个关键字用于定义一个指针?A. intB. floatC. charD. *答案:D5. 在C语言中,以下哪个选项是正确的注释方式?A. // 这是注释B. /* 这是注释 */C. // 这是注释/* 这是注释 */D. // 这是注释/* 这是注释 */答案:B6. 下列关于C语言数组的描述,哪个是错误的?A. 数组可以是多维的B. 数组下标从0开始C. 数组的大小在编译时确定D. 数组可以动态分配答案:D7. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopenB. fcloseC. fprintfD. All of the above答案:D8. C语言中,以下哪个选项是正确的字符串定义方式?A. char str[] = "Hello";B. char str[5] = "Hello";C. char str[] = {'H', 'e', 'l', 'l', 'o'};D. All of the above答案:D9. 在C语言中,以下哪个选项是正确的条件语句?A. if (condition)B. switch (condition)C. case (condition)D. All of the above答案:A10. 下列关于C语言循环的描述,哪个是正确的?A. for循环可以嵌套B. while循环不能嵌套C. do-while循环至少执行一次D. All of the above答案:C二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型变量的正确语法是:___________。
哈工大 2003 年 秋 季学期《C++程序设计》试题(A一、 选择填空题(共16分,每空一分)。
1. 面向对象的程序设计方法(可用各种语言实现,如C++、Java 等)具有三大特性,他们分别是 , , 。
2. 已知m = 3, 执行m++;后,表达式的值是 ,m 的值是 ,执行++m ;后,表达式的值是 ,m 的值是 。
3. 已知m = 4, n = 5,则执行语句m > n ? m++ : n++;后,表达式的值是 。
4. 循环语句while(int i = 0) { i--; } 执行的循环次数是 次;语句for(int i(0), j(10); i = j = 10; i++, j--) { ; } 执行的循环次数是 次。
5. 外部静态类变量的作用域是 级的,定义时必须 加说明符。
6. 请阅读下面这段描述,并回答后面的问题:(4分)All nonstatic member functions can use the this keyword, which is a const (nonmodifiable)pointer to the object for which the function was called. Member data is addressed by evaluating the expression this –>member-name (although this technique is seldom used). In member functions, using a member name in an expression implicitly uses this –>member-name to select the correct function or data member. 问题:(1)在静态成员函数中是否可以使用this 关键字?为什么?(2)是否可以将某个对象的地址值赋给this 关键字?为什么呢?二、 请分析下列程序,并回答问题(共40分)。
C语言复习资料5元必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。
哈尔滨工业大学(威海)2011/2012学年春季学期C 语言程序设计 笔试试题(A 卷)题号 一二三四五六笔试(70%) 综合 (30%) 总分分数1. 笔试卷面总分100分,取卷面成绩的70%计入总分;2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸;4. 答题时间105分钟。
一、单项选择题。
请把答案填入下面框中,不允许出框线。
(本题16分,每小题1分)题号 1 2 3 4 5 6 7 8 答案 题号 9 10 11 12 13 14 15 16 答案1. 下面程序的输出是______。
main(){ int x=10,y=3;printf("%d\n",y=x/y); }A) 0 B) 1 C) 3 D) 不确定的值 2. 下列函数的功能是______。
int fun1(char *x) { char *y = x; while(*y++); return(y-x-1); }A) 求字符串的长度 B) 将字符串X 连接到字符串Y 后面 C) 将字符串X 复制到字符串Y D) 比较两个字符串的大小号学名姓注意行为规范 遵守考试纪律3.以下对C语言函数的有关描述中,正确的是______。
A) C程序中有调用关系的所有函数必须放在同一个源程序文件中B) C函数既可以嵌套定义又可以递归调用C) 调用函数时,实参的值传送给形参D) 函数必须有返回值4.若用数组名作为函数调用的实参,传递给形参的是______。
A) 数组的首地址B) 数组第一个元素的值C) 数组中全部元素的值D) 数组元素的个数5.若有以下定义,则p+5表示_______.int a[10],*p=a;A) 元素a[5]的地址B) 元素a[5]的值C) 元素a[6]的地址D) 元素a[6]的值6.以下选项中,与k=n++完全等价的表达式是_______。
哈工大 2005 年 秋 季学期《C++程序设计》试题(A 卷)考试时间 120 分钟 满分 70题号 一 二 三 四 五 总分 实验(20)平时(10)总成绩 分数一、 填空题。
(共20分,每空1分)1. 面向对象的程序设计方法(可用各种语言实现,如C++、Java 、C#等)具有三大特性,它们分别是 , , 。
2. 已知m = 4, 执行m++;后,表达式的值是 ,m 的值是 ,执行++m ;后,表达式的值是 ,m 的值是 。
3. 已知m = 3, n = 2,则执行语句m > n ? m++ : ++n ,m++,m+n ;后,表达式的值是 。
4. 循环语句while(int i = 0) { i--; } 执行的循环次数是 次;语句for(int i(0), j(0); i = j = 1; i++, j--) { ; } 执行的循环次数是 次。
5. 为了使函数能够返回两个或者更多的值,可将形参设置为下列两种方式,它们分别 是 或 ,如果希望实参不被修改,那么需要对形参使用关键字 限制。
6.定义在类体外的函数,如果希望成为内联函数,则必须在类体内的声明中用关键 字 标识;运算符的重载必须用关键字 标识。
7.在C++中,类的继承方式有三种,需要用关键字 、 和 来定义。
默认继承方式为 。
8.在C++中,定义友元类或者友元函数必须使用关键字 。
二、 判断题,正确的请打√,错误的请打×。
(共10分,每题1分)1. 编译C++源程序的过程中,出现了警告错误,也可以生成可执行文件。
( )2. C++中,使用#define 定义的常量必须给出类型说明,而使用const 给出的常量不用给出类型说明。
( )3. 表达式的值的类型只取决于运算符,与操作数无关。
( )4. break 语句可以出现在各种不同循环语句的循环体中,continue 语句只能出现在循环体中。
( )班号 学号 姓名5. 函数没有返回值时,可以不加任何类型的说明符;任何一个函数都可以设置默认参数,但是不允许将一个函数的所有参数设置为默认参数。
程序设计试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. returnD. function答案:A2. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable-nameC. variable#nameD. variable_name答案:D3. 在C语言中,以下哪个语句用于结束一个循环?A. continueB. breakC. exitD. return答案:B4. 以下哪个选项是C语言中的条件语句?A. ifB. switchC. forD. while答案:A5. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 随机数答案:A6. 以下哪个是C语言中的标准输入输出库?A. <iostream>B. <stdio.h>C. <iostream.h>D. <stdio>答案:B7. 在C语言中,以下哪个函数用于计算两个数的和?A. pow()B. sqrt()C. abs()D. sum()答案:D(注意:sum()不是C语言标准库函数,这里假设为自定义函数)8. 以下哪个选项是C语言中的循环结构?A. if-elseB. switch-caseC. for, while, do-whileD. try-catch答案:C9. 在C语言中,以下哪个关键字用于定义一个结构体?A. classB. structC. unionD. enum答案:B10. 下列哪个选项是C语言中的位操作符?A. &&B. ||C. &D. ++答案:C二、填空题(每题2分,共20分)11. 在C语言中,使用________关键字可以定义一个指针。
答案:int* 或者 *(具体类型根据上下文)12. 一个C语言程序的执行从________函数开始。
哈尔滨理工大学Array 2007-2008学年第一学期考试试题A卷考试科目:结构化程序设计C 考试时间:120分钟试卷总分100分一、选择题1. 2. 3. 4. 5.6. 7. 8. 9. 10.11. 12. 13. 14. 15.16. 17. 18. 19. 20.二、填空题1.2.3.4.5.6.7.8.三、阅读程序,写出运行结果1. 2.3. 4.5. 6.四、程序设计1.2.3.哈尔滨理工大学2007-2008学年第一学期考试试题A 卷答案填在答题卡上一、选择题(在每个小题四个备选答案中选出一个正确答案)(本大题共20小题,每小题1分,总计20分)1.若有程序段:int i=2,j;j=i++;printf(“%d,%d”,++i,j);该程序段的输出结果是______[A] 3,2 [B] 4,3 [C] 3,3 [D] 4,22.double x,y;表达式x=1,y=x+3/2的值是______[A] 1 [B] 2 [C] 2.0 [D] 2.53.若变量已正确定义并赋值,表达式______不符合C语言语法。
[A] a*b/c;[B] 3.14%2[C] 2, b [D] a/b/c4.对于以下的变量定义,表达式_____不符合C语言语法。
struct node { int len;char *pk;} x = {2, "right"}, *p = &x;[A] p->pk[B] *p.pk [C] *p->pk [D] *x.pk5.有如下程序int func(int a,int b){ return(a+b);}main(){ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%\d\n”,r);}该程序的输出的结果是_____[A] 12 [B] 13 [C] 14 [D] 156.若在定义语句int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是______[A]scanf(“%d”,a,b,c) [B]scanf(“%d%d%d”,a,b,c) [C] scanf(“%d”,p) [D] scanf(“%d”,&p) 7.若变量已正确定义,有以下程序段i=0;do printf(“%d”,i); while(i++);printf(“%d\n”,i);[A]0,0 [B]0,1 [C]1,1 [D]程序进入无限循环8.若有定义语句:int a[2][3],*p[3];则以下语句中正确的是________[A]p=a [B]p[0]=a [C]p[0]=&a[1][2] [D]p[1]=&a系:软件学院软件工程出题教师郭红、张淑丽、王春英系主任:9.有以下程序段int k=0while(k=1)k++;while 循环执行的次数是______[A]无限次[B]有语法错,不能执行[C]一次也不执行[D]执行1次10.在C语言中,共用体类型变量在程序运行期间_______[A] 所有成员一直驻留在内存中[B] 只有一个成员驻留在内存中[C] 部分成员驻留在内存中[D] 没有成员驻留在内存中11.下面程序段的运行结果是:long fun( int n){ long s;if(n= =1 || n= =2) s=2;else s=n-fun(n-1);return s;}main(){ printf(“%ld\n”, fun(3)); }[A]1 [B]2 [C] 3 [D] 412.设有定义:int a=1,b=2,c=4;则以下选项中值为0的表达式是_____[A] (!a= =1)&&(!b= =0) [B] (a<b)&&!c||1 [C] a&&b [D] a|| (b+b)&&(c-a) 13.若t为double类型,则表达式:t=1,t+5,t++的值是______[A]1 [B]6.0 [C] 2.0 [D] 1.014.设变量定义为“int x, *p=&x;”,则&*p相当于_____。
一、填空题。
(共20分,每空1分)1. 面向对象的程序设计方法(可用各种语言实现,如C++、Java、C#等)具有三大特性,它们分别是,,。
2. 已知m = 4, 执行m++;后,表达式的值是,m的值是,执行++m;后,表达式的值是,m的值是。
3. 已知m = 3, n = 2,则执行语句m > n ? m++ : ++n,m++,m+n;后,表达式的值是。
4. 循环语句while(int i = 0) { i--; } 执行的循环次数是次;语句for(int i(0), j(0); i = j = 1; i++, j--) { ;} 执行的循环次数是次。
5. 为了使函数能够返回两个或者更多的值,可将形参设置为下列两种方式,它们分别是或,如果希望实参不被修改,那么需要对形参使用关键字限制。
6.定义在类体外的函数,如果希望成为内联函数,则必须在类体内的声明中用关键字标识;运算符的重载必须用关键字标识。
7.在C++中,类的继承方式有三种,需要用关键字、和来定义。
默认继承方式为。
8.在C++中,定义友元类或者友元函数必须使用关键字。
二、判断题,正确的请打√,错误的请打×。
(共10分,每题1分)1. 编译C++源程序的过程中,出现了警告错误,也可以生成可执行文件。
()2. C++中,使用#define定义的常量必须给出类型说明,而使用const给出的常量不用给出类型说明。
()3. 表达式的值的类型只取决于运算符,与操作数无关。
()4. break语句可以出现在各种不同循环语句的循环体中,continue语句只能出现在循环体中。
()5. 函数没有返回值时,可以不加任何类型的说明符;任何一个函数都可以设置默认参数,但是不允许将一个函数的所有参数设置为默认参数。
()6. 指向函数的指针可以作为函数参数;使用数组名作函数参数时,实参数组与形参数组是共享内存单元的。
()7. 结构与联合的差别在于结构中的每个成员都有自己的内存地址,且都是不相同的,而联合中的所有成员是共享内存块的,且内存块的大小与成员中的最大内存块相同。
()8. 如果类的一个成员函数只存取该类的静态数据成员,可将该成员函数说明为静态成员函数;友元类的所有成员函数都可以对该类中的私有成员进行存取操作。
()9. 类型转换函数是类的成员函数,它是用来进行强制类型转换的,它不能定义为友元函数,也不能定义为静态的成员函数;带有一个参数的构造函数具有类型转换的作用。
()10. 在公有继承中,派生类的对象不可以访问基类中的保护成员;在私有继承中,派生类的对象不可以访问基类中的公有成员;在保护继承中,派生类可以访问基类中的保护成员。
()三、请分析下列程序,并回答问题。
(共16分)2、给出下列程序的输出结果,并说明其功能。
#include <iostream.h>int fac(int);void main(){int s(0);for(int i(1); i <= 5; i++){s += fac(i);cout<<s<<endl;}}int fac(int n){static int b = 1;b *= n;return b;}4、四、 阅读下列文档,并回答提出的问题。
(共16分)。
1、根据下列文档说明,请简要地回答后面给出的几个问题。
(6分)#include <iostream.h> class base { public:virtual int foo( int ival = 1024 ) {cout < "base::foo() -- ival: " < ival < endl; return ival; } // ... };class derived : public base { public:virtual int foo( int ival = 2048 ) {cout << "derived::foo() -- ival: " << ival << endl; return ival; } // ... }; int main() {derived *pd = new derived; base *pb = pd; int val = pb->foo();cout << "main() : val through base: "<< val << endl; val = pd->foo();cout << "main() : val through derived: "<< val << endl; }The methods for default assignment and initialization are “memberwise assignment” and “memberwise initialization,” respectively. Memberwise assignment consists of copying one object to the other, a membe r at a time, as if assigning each member individually. Memberwise initialization consists of copying one object to the other, a member at a time, as if initializing each member individually. The primary difference between the two is that memberwise assignm ent invokes each member’s assignment operator (operator=), whereas memberwise initialization invokes each member’s copy constructor.Memberwise assignment is performed only by the assignment operator declared in the form:type&type::operator=( [const | volatile] type&)Default assignment operators for memberwise assignment cannot be generated if any of the following conditions exist:·A member class has const members.·A member class has reference members.·A member class or its base class has a private assignment operator (operator=).·A base class or member class has no assignment operator (operator=).Default copy constructors for memberwise initialization cannot be generated if the class or one of its base classes has a private copy constructor or if any of the following conditions exist:·A member class has const members.·A member class has reference members.·A member class or its base class has a private copy constructor.·A base class or member class has no copy constructor.The default assignment operators and copy constructors for a given class are always declared, but they are not defined unless both of the following conditions are met:·The class does not provide a user-defined function for this copy.·The program requires that the function be present. This requirement exists if an assignment or initialization is encountered that requires memberwise copying or if the address of the class’s operator= function is taken.If both of these conditions are not met, the compiler is not required to generate code for the default assignment operator and copy constructor functions (elimination of such code is an optimization performed by the Microsoft C++ compiler). Specifically, if the class declares a user-defined operator=that takes an argu ment of type “reference to class-name,” no default assignment operator is generated. If the class declares a copy constructor, no default copy constructor is generated.○1在C++的类定义中,请简要回答默认的赋值方法与默认的初始化方法之间的差别。