C++期末复习(问答题)
江苏大学大一c语言期末复习题汇总
=0,j=0,a=6=1,j=1,a=7=1,j=0,a=7=0,j=1,a=7
31.下列程序段的输出结果为()。
main()
{int x=3;
do
{printf("%3d",x-=2);}
while(!(--x));}
0-2D.死循环
32.以下程序运行后,输出结果是( )。
main()
{
int n[5]={0,0,0},i,k=2;
该函数调用语句中,含有的实参个数是( )。
A. 3B. 4 C. 5 D. 有语法错
44.以下函数值的类型是()。
fun (float x)
{
float y;
y= 3*x-4;
return y;
}
A. intB. 不确定 C. void D. float
45.以下程序的输出结果是()。
f( int b[ ], int m, int n)
B.(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。
case 0: m++; break;
}
}
printf(”%d\n”,m);
}
A.1B.2 C.3 D.4
24.在下列选项中,没有构成死循环的程序段是()。
i=100;
while (1)
{
i=i%100+1;
if(i>100) break;
}
B. for (;;);
k=1000;
do {++k;}while (k>=10000);
B. 一维数组的元素在引用时其下标大小没有限制
C. 任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
C语言程序设计期末复习题及答案(1)
5. n为整型,表达式n=1,n+2,n*5 的值是__5_______。
6. 已知:float x=8.53; 整形变量i=(int)x;则i=__8_____。
7. 已知:int x=5;语句y=x++*x++;执行完成后x=___7__,y=_25____。
int i, k, num;
gets(str1); gets(str2);
i=strlen(str1);
k=strlen(str2);
num=______? ____: ____;
printf("%d\n", num);
}
2. 下面程序是计算字符串中实际字符的个数,即实现和字符串处理函数strlen相同的功能,补充空白处的程序。
for (j=0;j<n-1-i;j++)
if (a[j]>a[j+1])
{c=a[j];a[j]=a[j+1];a[j+1]=c;}
}
2. 本题20分.总体程序完整性3分,结构体定义正确3分,结构体数组定义以及初始化正确6分,指针定义正确3分,输出判断正确3分,输出姓名地址2分。以下代码为参考代码,答案不唯一。
(B)在指针操作中,运算符“&”是取指针指向的对象的值。
(C)在指针操作中,运算符“*”的操作对象是一个地址。
(D)语句int *ip;定义了指针变量只能存放整型变量的地址。
14.判断字符串str1是否大于字符串str2,应当使用___d________。
(A)if (str1>str2)
C语言期末复习题
第一单元程序设计和C语言一、选择题1.C语言的基本构成单位是: A 。
A. 函数B. 函数和过程C. 超文本过程D. 子程序2.一个C语言程序总是从 B 开始执行。
A. 主过程B. 主函数C. 子程序D.主程序3.C语言的程序一行写不下时,可以。
A. 用逗号换行B. 用分号换行C. 在任意一空格处换行D. 用回车符换行4.以下叙述不正确的是: C 。
A. 在C程序中,语句之间必须要用分号";"分隔B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数C. 在C程序中,无论是整数还是实数都能正确无误地表示D. 在C程序中,%是只能用于整数运算的运算符5.以下不正确的C语言标识符是 D 。
A. ABCB. abcC. a_bcD. ab.c6.下列字符串是标识符的是: A 。
A. _HJB. 9_studentC. longD. LINE 17.以下说法中正确的是: C 。
A. C语言程序总是从第一个定义的函数开始执行B. 在C语言程序中,要调用的函数必须放在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分8.不合法的常量是: D 。
A. ...\2‟ B. "" C. ...3‟ D. (483)9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是: A 。
int k,a,b;unsigned long w=5;double x=1.422;A. x%(-3)B. w+=-2C. k=(a=2,b=3,a+b)D. a+=a=+(b=4)*(a=3)10.在C语言中,字符型数据在内存中以 D 形式存放。
A. 原码B. BCD码C. 反码D. ASCII码11.若有定义:int a=7; float x=2.5; y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是: A 。
c语言期末复习试题附答案
试卷编号:1120所属语言:C语言试卷方案:C语言期末考试试卷总分:100分共有题型:4种一、单项选择共30题(共计60分)第1题(分)设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A ).A:k++B:k+=1C:++kD:k+1第2题(分)已知int i=5,执行语句i+=++i后,i的值是(C).A:10B:llC:12D:A、B、C都不对第3题(分)以下程序的功能是:给r输入数据后,计算半径为r的圆面积s.程序在编译时出错. ttinclude <>void main()/* Beginning */{ int r;float s;scanf (〃%d〃,&r);s=p*r*r; printf (〃s=%f\n〃,s);出错的原因是(D).A:注释语句书写位置错误B:存放圆半径的变量r不应该定义为整型C:输出语句中格式描述符非法D:计算圆面积的赋值语句中使用了非法变量第4题(分)〃\\\〃 ABC\〃 \\〃的长度是(B ).A:llB:7C:5D:3第5题(分)已知int j, i=l执行语句j=-i++;后,j的值是(C ).A:1B:2串中的内容为“abcdefg”时,c 所指数组中的内容应该为 “lg2f3e4dcba” 。
*/ttinclude <>#include <>#include <>void fun ( char char *b, char *c )int i , j;char ch;i = 0;j 二 strlen(b)-l;/**********FOUND**********/ch = b [ i];b[j] = ch; i++; j —;/**********FOUND**********/while ( *a &&*b )//此处&&改为| | (逻辑或)if ()*c =*a;c++;/**********FOUND**********/a+;)if ( *b )*c 二*b; c++;b++;*c = 0;main()char sl[100],s2[100],t[200];clrscr ();printf (,z \nEnter si string : 〃);scanf (〃如〃,si);printf (,z \nEnter s2 string : 〃);scanf (〃%s 〃, s2);fun( si, s2, t );printf (/z \nThe result is : %s\n 〃,t );i j四、程序设计共1题(共计20分)第1题(分)/*【程序设计】功能:判断一个整数w 的各位数字平方之和能否被5整除, 可以被5整除则返回1,否则返回0。
中国石油大学《C语言程序的设计》期末复习试题与答案
《C语言程序设计》期末复习题一、选择题1.能将高级语言编写的源程序转换成目标程序的是()A.程序 B. 解释程序 C. 编译程序 D.编辑程序2.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是()。
A. 10<a<15B. a==11||a==12||a==13||a==14C. a>10&&a<15D.!(a<=10)&&!(a>=15)3.当调用函数时,实参是一个数组名,则向函数传送的是( )。
A. 数组的长度B. 数组的首地址C. 数组每一个元素的地址D. 数组每个元素中的值4.执行下面的程序段后,k的值是()int k=1,n=325;do { k*=n%10;n/=10;}while(n);A. 3B. 30C. 523D. 3255.若有以下数组说明,则i=6;a[a[i]]元素数值是()。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.3B.8C.6D.56.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A. for(i=1,p=1;i<=5;i++) p*=i;B. for(i=1;i<=5;i++){ p=1; p*=i;}C. i=1;p=1;while(i<=5){p*=i; i++;}D. i=1;p=1;do{p*=i; i++; }while(i<=5);7.若有:int a[][3]={{1,2,3},{4,5},{6,7},{8}}; 则数组a的第一维的大小为: ( ) A. 12 B. 3 C. 4 D.无确定值8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是( )。
char s[20]= “Bejing”,*p;p=s;A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等C.s和p都是指针变量D.数组s中的容和指针变量p中的容相等9.以下正确的函数定义是( )。
C++语言程序设计期末复习题(含答案)
C++语言程序设计期末复习题一、单项选择题1、面向对象程序设计数据与_____放在一起,作为一个相互依存、不可分割的整体来处理。
A、对数据的操作B、信息C、数据隐藏D、数据抽象2、已知:int a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?c:d 的值为_____。
A、1B、2C、3D、43、下列while循环的次数是_____。
while( int i=0 ) i- -;A、0B、1C、5D、无限4、以下程序的输出结果是_____。
#include <iostream.h>fuc( char* s){char* p=s;while( *p)p++;return (p-s);}main(){cout<<fuc("ABCDEF");}A、3B、6C、8D、05、_____的功能是对对象进行初始化。
A、析构函数B、数据成员C、构造函数D、静态成员函数6、下列引用的定义中,_____是错误的。
A、int i;B、int i;C、float i;D、char d;int& j=i;int &j;float& j=i;j=i;char &k=d;7、若类A和类B的定义如下:class A{int i,j;public:void get();//...};class B:public A{int k;public:make();//...};void B::make(){k=i*j;}则上述定义中,_____是非法的表达式。
A、void get();B、int k;C、void make();D、k=i*j;8、以下程序段_____。
int x = -1;do{x = x*x;}while( !x );A、是死循环B、循环执行2次C、循环执行1次D、有语法错误9、对定义重载函数的下列要求中,_____是错误的。
《C程序》期末复习题库
1、用C语言编写的代码程序()。
(A)可立即执行(B)是一个源程序(C)经过编译即可执行(D)经过编译解释即可执行2、以下程序的输出结果是()。
main(){int a=12,b=12;printf("%d,%d\n",--a,++b);//(编译时--中间无空格)}(A)1010(B)1212(C)1110(D)11133、设有int x=11;则表达式(x++*1/3)的值是()。
(A)3(B)4(C)11(D)124、C语言中运算对象必须是整型的运算符是()。
(A)%=(B)/(C)=(D)〈=5、C语言中运算优先级最低的运算符是()。
A、%B、*=C、||D、==6、以下程序的输出结果是()。
main(){int a,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A、100B、101C、4D、17、下面程序的输出是()。
main(){int x=10,y=3;printf("%d\n",y=x/y);}A、0B、1C、3D、不确定的值8、以下程序的输出结果是()。
main(){int i=010,j=10,k=0x10;printf("%d,%d,%d\n",i,j,k);}(A)8,10,16(B)8,10,10(C)10,10,10(D)10,10,169、为表示79<x<90,应用的C语言表达式是()。
A、(x>79)&&(x<90)B、(x>79)&(x<90)C、79<x<90D、(x>79)||(x<90)10、以下选项中,与k=n++完全等价的表达式是()。
A、k=n,n=n+1B、n=n+1,k=nC、k=++nD、k+=n+111、有如下程序,该程序的输出结果是()。
德州学院二级C语言期末复习题
C语言练习题一、单项选择题1.以下选项中合法的标示符是()A.1_1B.1-1C._11D. 1_ _2.若有以下类型说明语句:char a; int b; float c; short int d;则表达式(c*b+a)*d的结果类型是()。
A.charB.intC.doubleD.float3.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为()。
A.算术运算、赋值运算、关系运算B.关系运算、赋值运算、算术运算C.算术运算、关系运算、赋值运算D.关系运算、算术运算、赋值运算4.多重if_else语句嵌套使用时,寻找与else配套的if方法是( )。
A.缩排位置相同的ifB.其上最近的ifC.下面最近的ifD.同行上的if5.有以下程序,其运行后的输出结果是()。
main(){int x=1,y=2;x=x+y,y=x-y; x=x-y;printf("x=%d,y=%d \n",z);}A. 1 2B. 1,2C. 0,1D. 2,1 6.有以下程序,其中%u表示按无符号整数输出main(){unsigned short x=0xFFFF;printf("%u\n",x);}程序运行后的输出结果是()。
A.-1B.65535C.32767D.0xFFFF 7.以下合法的c语言语句是( B )。
A. x=int(x+0.5);B. ++k;C. a=b=0D. a=1,8.下面有关for循环的正确描述是( D ) 。
A. for循环只能用于循环次数已经确定的情况。
B. for循环是先执行循环体语句,后判断表达式。
C. 在for循环中,不能用break语句跳出循环体。
D. for循环的循环体语句,可以包含多条语句,但必须用花括号括起来。
9.有以下程序,其运行后的输出结果是( C )。
main(){int x=1,y=2,z;z= x/y;printf("%d\n",z);}A. 1/2B. 0.5C. 0D. 110.下列对字符串的操作正确的是( C)。
c语言期末复习试卷
复习题(一)1。
用高级语言编写的源程序必须通过___________程序翻译成二进制程序才能执行,这个二进制程序称为____________程序。
【答案】编译目标2。
下列符号串中,属于C语言合法标识符的是()①else ②a-2 ③_00 ④00【答案】③3.下列说法中,正确的是()①主函数名是由程序设计人员按照“标识符”的规则选取的②分号和回车符号都可以作为一个语句的结束符号③在程序清单的任何地方都可以插入一个或多个空格符号④程序的执行,总是从源程序清单的第1行开始【答案】③4.-12345E-3代表的十进制实数是________________________.【答案】—12.3455.设字符型变量ch中存放字符“A”,则执行“ch+++2”后,ch中的字符是________。
【答案】B6.设字符型变量ch1中存放的字符是“A",字符型变量ch2中存放的字符是“B”,则执行“!(ch1=’B')&&(ch2='C')”的运算后,变量ch2中的字符是_____________.【答案】B6-1.设整型变量m,n,a,b,c,d均为1,执行“(m=a〉b)&&(n=a>b)”后m,n 的值是()①0,0 ②0,l ③1,0 ④1 ,l【答案】②。
7.设整型变量x1和x2的值均为10,则表达式“x1/=x2-4”的值是_______________. 【答案】l8.在C语言中,如果某个关系表达式成立(真),则该关系表达式的值是____;如果某个逻辑表达式为假,则该逻辑表达式的值是_________.【答案】1 09.设有整型变量x,如果表达式“!x”值为0,则x的值为_________;如果表达式“!x"值为1,则x的值为___________。
【答案】非010.下列表达式中,不属于逗号表达式的是()①a=b,c ②a,b=c ③a=(b,c) ④a,(b=c)【答案】③11.在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构【答案】多分支12.在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。
山科大_《单片机的C语言程序设计与运用(第2版)》期末复习题及答案
一、填空1.KeiL C51软件中,工程文件的扩展名是____UV2______,编译连接后生成可烧写的文件扩展名是_____HEX_______。
2.C51支持的指针有一般指针和存储器指针。
3.C51中,没有专门的循环语句,我们可以用函数______crol_______完成一个字节的循环左移,用____irol_____完成二个字节的循环左移。
4.函数是C语言的基本单位。
5.C语言中输入和输出操作是由库函数scanf 和printf 等函数来完成。
6.若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为__ 900______。
7.数组是一组有固定数目和相同类型成分分量的有序集合。
8.变量的指针就是变量的地址;指针变量的值是指针。
9.在C语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为结构变量,简称结构。
10.C51的数据类型有基本类型、构造类型、指针类型、空类型。
11.C51的基本数据类型有位型、字符型、整形、长整形、浮点型、双精度浮点型。
12.C51的构造数据类型有数组类型、结构类型、共用体型、梅举型。
13.C51的存储类型有data 、bdata 、idata 、pdata 、xdata 、code 。
14.C51的存储模式有SMALL 、COMPACT 和LARGE 。
15.C51程序与其他语言程序一样,程序结构也分为顺序结构、选择结构(或分支结构)、循环结构三种。
16.数组的一个很重要的用途就是查表。
17.二、单项选择题:1.89S51的内部程序存储器与数据存储器容量各为多少?(C)(A)64KB、 128B ( B)4KB、64KB(C)4KB、128B (D)8KB、256B2.在8x51芯片里,哪个引脚用于控制使用内部程序存储器还是外部程序存储器?(B) (A)XTAL1 (B)/EA (C)/PSEN (D)ALE3.下列哪个不是KeilC的预处理命令?(C)(A)#include (B)#define (C)#exit (D)#if4.下列哪个不是KeilC的数据类型?(B)(A)void (B)string (C)char (D)float5.在8x51的输入/输出端口里,哪个输入/输出端口执行在输出功能时没有内部上拉电阻(A)(A)P0 (B)P1 (C)P2 (D)P36.在KeilC的程序里,若要指定P0口的bit3,如何编写?(C)(A)P0.3 (B)Port0.3 (C)P0^3 (D)Port^37.在8x51里,若要扩展外部存储器时,数据总线连接哪个输入/输出端口?(A)(A)P0 (B)P1 (C)P2 (D)P38.点亮一般的LED所耗的电流约为多少?(D)(A)1~5uA (B)10~20uA (C)1~5mA (D)10~20mA9.在8x51的程序里,若要将个输入/输出端口设置成输入功能,应如何处理?(A)(A)先输出高电平到该输入/输出端口(B)先输出低电平到该输入/输出端口(C)先读取该输入/输出端口的状态(D)先保存该输入/输出端口的状态10.根据实验统计,当操作开关时,其不稳定关态大约持续多久?(B)(A)1~5ms (B)10~20ms (C)100~150ms (D)150~250us11.在KeilC里,判读开关状态时,使用if_else if语句与使用switch语句有何差异?(B)(A)if-else if 语句较快(B)if-else if语句有优先级(C)switch语句可判读较多开关状态(D)switch语句有优先级12.对于低电平动作(低电平触发)的开关而言,下列哪个不是在输入口上连接一个上拉电阻VCC的目的?(A)(A)提供足够的驱动电流(B)防止确定状态(C)保持输入高电平(D)防止噪声干扰13.中断功能具有什么好处?(C)(A)让程序更复杂(B)让程序执行速度更快(C)让程序更有效率(D)以上皆非14.8x51的IP缓存器的功能为何?(A)(A)设置中断优先级(B)启用中断功能(C)设置中断触发信号(D)定义CPU的网址15.在KeilC里,中断子程序与函数有何不同?(A)(A)中断子程序不必声明(B)函数不必声明(C)中断子程序必须有形式参数(D)中断子程序一定会有返回值16.若要同时启用INT0及INT1中断功能,则应如何设置?(B)(A)TCON=0x81 (B)IE=0x85 (C)IP=0x83 (D)IE=0x0317.若要提高INT1的优先级,则应如何设置?(C)(A)IP=0x01 (B)IE=0x01 (C)IP=0x04 (D)IE=0x0418.在8x51的Timer里,若使用Mode 0,其最大计数值为多少个机器周期?(B)(A)65636 (B)8192 (C)1024 (D)25619.12 MHz的8x51系统里,哪一种方式一次可定时5ms?(A)(A)Mode0及Mode1 (B)Mode1及Mode2 (C ) Mode2及Mode3 (D) Mode3及Mode120.8x51的定时器,在下列哪种方式下具有自动加载功能?(C)(A)Mode0 (B) Mode1 (C)Mode2 (D)Mode321.若将Timer0设置为外部启动,则可由哪个引脚启动?(A)(A)P3.2 (B)P3.3 (C)P3.4 (D)P3.522.下列哪个IC具有将串行数据转换成并行数据的功能?(B)(A)74138 (B)74164 (C)74165 (D)7416823.在同一时刻,只能接收或发送信号者称为什么?(A)(A)半双工(B)全双工(C)半单工(D)单工24‘在8x51的串行口里,在哪一种方式下,可利用Timer1产生波特率?(C)(A)Mode0 (B)Mode1 (C)Mode2 (D)Mode325.在8x51里,若通过串行端口传出数据,则只要将数据放入哪个寄存器,CPU就会自动将它会传出?(B)(A)SMOD (B)SBUF (C)PCON (D)RBUF26.在8x51里,若CPU完成串行端口数据的接收将会如何?(D)(A)将TI标志变为0 (B)将RI标志为0 (C)将TI标志变为了 1 (D)将RI标志变为127.若要设置8x51串行端口方式,可在哪个寄存器中设置?(B)(A)SMOD (B)SCON (C)PCON (D)TCON28.在共阳极8*8LED点阵里,其阳极如何连接?(C)(A)各行阳极连接到行引脚(B)各列阳极连接到列引脚(C)各行阳极连接到列引脚(D)各列阳极连接到行引脚29.在共阳极8*8点阵里,其阴极如何连接?(A)(A)各行阴极连接到行引脚(B)各列阴极连接到列引脚(C)各行阴极连接到列引脚(D)各列阴极连接到行引脚30.通常8*8LED点阵的驱动方式是什么?(B)(A)直接驱动(B)扫描驱动(C)双向驱动(D)以上皆非31.若要对LCM下指令,则应如保设置?(A)(A)RS=0,R/~W=0 (B)RS=1,R/~W=0 (C)RS=1,R/~W=1(D)RS=0,R/~W=132.若要在LCM中显示些字符,则需把所要显示的字符放入何处?(B)(A)CG RAM (B)DDRAM (C)IRAM (D)GDRAM33.若要将数据写入LCM,则应如何设置?(B)(A)RS=0,R/~W=0 (B)RS=1,R/~W=0 (C)RS=1,R/~W=1 (D)RS=0,R/~w=1 341.利用下列( D )关键字可以改变工作寄存器组A、interruptB、sfrC、whileD、using35.C51中一般指针变量占用( C )字节存储。
C语言期末复习题(填空选择判断题)
一、单选题:1、已知ch是字符型变量,下面不正确的赋值语句是( B )。
A、ch=‘\0’B、ch=‘a+b’C、ch=‘7’+‘9’D、ch=7+92、以下4组用户定义标识符中,全部合法的一组是(A )。
A、s_5B、IfC、txtD、intabout -max REALk_2E2 turbo 3COM_0013、C语言中的简单数据类型包括( B )A、整型、实型、逻辑型B、整型、实型、字符型、枚举型C、整型、字符型、逻辑型D、整型、实型、逻辑型、字符型4、已知:int i=1,j;执行语句j=-i++;后,j的值是(C )A、1B、2C、-1D、-25、已知:int i=5;执行语句i+=++i;后,i的值是( C )A、10B、11C、12D、A、B、C答案都不对7、若x为int型变量, x=6;则执行以下语句后,x的值为( C )。
x+=x-=x*x;A、 36B、 60C、- 60D、-248、设d为字符变量,下列表达式不正确的是( D )。
A、d=’g’B、d=’a’C、d=97D、d=”g”9、若a=1,b=2,c=3,d=4;则条件表达式 a>b?a:c<d?c:d结果为( B )A、4B、3C、2D、110、printf函数中用到格式符"%8s",其中数字8表示输出的字符串占用8列。
如果字符串长度大于8,则按原字符长从左向右全部输出;如果字符串长度小于8,则输出方式为( B )。
A、从左起输出该字符串,右补空格B、右对齐输出该字符,左补空格C、按原字符长从左向右全部输出D、输出错误信息11、在嵌套的if-else语句中,else总是与( D )配对。
A、其之前最近的ifB、第一个ifC、缩进位置相同的ifD、其之前最近的且不带else的if12、一个C语言程序总是从( B )开始执行。
A、程序的第一个函数B、主函数C、子函数D、主程序13、设x=2.9,a=8,y=3.7,算术表达式x+a%3*(int)(x+y)%5/2的值是 ( A )A、3.9B、4C、4.2D、3.7514、程序片段执行后输出结果是 ( A )int x=5, y=8;printf ("% d", x<y ? x : (x, y));A、5B、8C、5,8D、编译出错15、下面能正确表示变量a在区间[0,8]或(4,10)内的表达式为:( D )。
C 语言期末复习题
一、简答题1、请问指针有哪些类型?指针的类型,跟他所指向的数据结构有关,基本类型的指针指向基本类型的数据结构。
2、函数式宏定义和函数调有什么不同?(1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。
(2)调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。
(3)函数式宏定义要注意格式,尤其是括号。
(4)若函数参数为表达式,则普通函数的调用与函数式宏定义的替换过程是不一样的。
(5)函数式宏定义往往会导致较低的代码执行效率。
3、请问指针编程有哪些优点?(1)提高传输速度,又节省大量内存。
(2)可以用来做数据类型转换,比较常用于通讯缓冲区的填充。
(3)可以用在大量分支处理的实例当中。
(4)在数据结构中,链表、树、图等大量的应用都离不开指针。
4、C语言中,变量为什么要先定义后使用?(1)对于编译器处理更方便。
(2)不容易出错。
(3)程序更清晰。
5、二维数组的初始化定义的正确形式有哪些?请举例说明(1)分行赋初值例如:int a[2][3]={ {1,3,4},{2,3,1},{7,9,0} };(2)按顺序初始化例如:int a[2][3]={1,3,4,2,3,1,7,9,0};(3)省略一维长度的赋值例如:int a[][3]={1,3,4,2,3,1,7,9,0};(4)对数组的前几行元素初始化,其他元素自动初始化为0例如:int a[2][3]={ {1},{2,3} };6、while与do while相同点与不同点是什么?(1)while语句是先测试条件再执行语句,条件不符后终止;do while语句是先执行语句再测试条件,条件不符后终止,所以do while循环至少执行一次7、请写出一个C程序的构成(1)C程序是由若干个函数构成的(2)每个函数(包括主函数)的定义分为两个部分:函数说明部分和函数体。
(3)C程序中的语句最后总要有一个“分号(;)”,作为每个语句的结束。
青岛理工大学C语言期末复习题库
第1章 程序设计及C 语言概述 一、单选题1)一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。
A )有零个或多个输入B )有零个或多个输出C )有穷性D )可行性 2)以下叙述中正确的是()。
A )C 语言的源程序不必通过编译就可以直接运行B )C 语言中的每条可执行语句最终都将被转换成二进制的机器指令C )C 语言源程序经编译形成的二进制代码可以直接运行D )C 语言中的函数不可以单独进行编译 3)用C 语言编写的代码程序()。
A )可立即执行B )是一个源程序C )经过编译即可执行D )经过编译解释才能执行 4)结构化程序由三种基本结构组成,三种基本结构组成的算法()。
A )可以完成任何复杂的任务B )只能完成部分复杂的任务C )只能完成符合结构化的任务D )只能完成一些简单的任务 5)以下叙述中正确的是()。
A )用C 程序实现的算法必须要有输入和输出操作B )用C 程序实现的算法可以没有输出但必须要有输入 C )用C 程序实现的算法可以没有输入但必须要有输出D )用C 程序实现的算法可以既没有输入也没有输出 第2章 C 语言基础 一、单选题1)假设在程序中a ,b ,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式 abc1 的表达式是()。
A )1/a*b*cB )1/(a*b*c)C )1/a/b/(float)cD )1.0/a/b/c 2)以下能正确定义且赋初值的语句是()A )int n1=n2=10;B )char c=32;C )float f=f+1.1;D )double x=12.3E2.5; 3)以下不能定义为用户标识符的是()A )scanfB )V oidC )_3com_D )int4)设x 、y 、z 和k 都是int 型变量,则执行表达式:x=(y=4,z=16,k=32+z)后,x 的值为()A )4B )16C )48D )325)设有 int x=11,则表达式(x++ * 1/3)的值是()。
【期末复习】C 期末复习题及答案
优选教育资源共赢共享共进1. 下列语句中错误的是( D)A. int *p=new int(10) ;B. int *p=new int[10] ;C. int *p=new int ;D. int *p=new int[40](0)2. 假设已经有定义char *const name=”chen” ;下面的语句中正确的是( A)A. name[3]=’q’;B. name=”lin”;C. name=new char[5]D. name=new c har(‘q’);3. 下面的类型声明中正确的是(D )A. int &a[4]B. int &*p ;C. int &&q ;D. int I,*p=& I ;4. 在声明类时,下面的说法正确的是( C)A.可以在类的声明中给数据成员赋值B. 数据成员的数据类型可以是registerC. private、public、protected可以按任意顺序出现D. 没有用private、public、protected定义的数据成员是公有成员5. 构造函数是在(B )时被执行的。
A.程序编译B. 创建对象C. 创建类D.程序装入内存6. 在下面有关友元函数的描述中,正确的说法是(A )A. 友元函数是独立于当前类的外部函数B.一个友元函数不能同时定义为两个类的有友元函数C.友元函数必须在类的外部定义D.在外部定义友元函数时,必须加关键字friend7. 使用派生类的主要作用是(A )A.提高代码的可重用性B.提高程序的运行效率C.加强类的封装性D.实现数据的隐藏8. 关于虚函数,正确的描述是(A )A.构造函数不能是虚函数B.析构函数不能是虚函数C.虚函数可以是友元函数D.虚函数可以是静态成员函数9. 如果在基类中将成员函数show声明为不带返回值得纯虚函数,正确的写法是(C )A.virtual show( )=0;B.virtual void show( )C.virtual void show( )=0;D.void show( )=0 virtual;10. 使用myFile.open(“sales.dat”,ios::app)语句打开文件sales.dat后,则(A )A.该文件只能用于输出B.该文件只能用于输入C.该文件既能用于输出,又能用于输入D.若该文件存在,则清除该文件的内容二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)1.#include"iostream.h"class student{char name[10];int age;float aver;void printStu( ){} };void main( ){student p1,p2,p3;p1.age=16;//…}2. #include"iostream.h" class stack{public:stack(int sz); private:char *p;int size;};stack::stack(int sz) {p=new char[size=sz];}void main(){stack stt;//...}3. #include"iostream.h"class CTest{public:const int y2;CTest(int i1,int i2):y1(i1),y2(i2) {y1=10;x=y1;}int readme()const;//...private:int x;const int y1;};int CTest::readme()const{int i;i=x;x++;return x;} {CTest c(2,8);int i=c.y2;i=c.y1;}三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)1.#include"iostream.h"class toy{public:toy(int q,int p){ quan=q; price=p;}int get_quan(){return quan;}int get_price(){return price;}private:int quan,price;};int main(){toyop[2][2]={toy(10,20),toy(30,48),toy(50,68),toy( 70,80)};int i;for(i=0;i<2;i++){cout<<op[i][0].get_quan()<<",";cout<<op[i][0].get_price()<<"\n";cout<<op[i][1].get_price()<<"\n"; }cout<<"\n";return 0;}2.#include"iostream.h"class Stock{public:void print(){cout<<"Stock class.\n";}};class Der1_Stock:public Stock{public:void print(){cout<<"Deri1_Stock class.\n";} };class Der2_Stock:public Stock{public:void print(){cout<<"Deri2_Stock class.\n";} };void main(){Stock s1;Stock *ptr;Der1_Stock d1; ptr=&s1;ptr->print();ptr=&d1;ptr->print();ptr=&d2;ptr->print();}3.#include"iostream.h" class A{public:A(int i):xi(i){}A(){xi=0;}friend A operator++(A a); friend A operator--(A &a); void print();private:int xi;};A operator++(A a){++a.xi;return a;}A operator--(A &a){--a.xi;return a;}void A::print()void main(){A i(7);++i;i.print();--i;i.print();}二 1.答案:p1.age=16; 有错(3分),因为age是私有数据成员,不能直接访问(3分)2. 答案:stack stt; 有错,(3分)类中没有定义无参构造函数(3分)3. 答案:错误1:y1=10;有错(2分),y1是常成员,不能修改(1分)错误2:x++;有错(2分),readme函数是常成员函数,不能修改对象的数据成员(1分)错误3:i=c.y1;有错(1分),y1是私有变量,不能直接存取(1分)三 1.答案:10,20;30,48;50,6870,80 2.答案:Stock class.Stock class.Stock class.3.答案:76B卷一、选择题(每题2分,共20分,答案填写在题后的表格内)1. 假设已经有定义const char *const name=”chen” ;下面的语句中正确的是(D )A. name[3]=’a’;B. name=”lin”;C. name=new char[5]D. cout<<name[3];2. 假设已经有定义const char * name=”chen” ;下面的语句中错误的是( A)A. name[3]=’q’;B. name=”lin”;C. name=new char[5]D. name=new char(‘q’);3. 在下面有关对构造函数的描述中,正确的是(B )A.构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数D. 构造函数必须定义,不能缺省4. 在下面有关析构函数特征的描述中,正确的是(C )A. 一个类可以定义多个析构函数B.析构函数名与类名完全相同C. 析构函数不能指定返回类型D.析构函数可以有一个或多个参数5. 在下面有关静态成员函数的描述中,正确的是( B)A. 在静态成员函数中可以使用this指针B.在建立对象前,就可以为静态数据成员赋值C. 静态成员函数在类外定义时,要用static前缀D. 静态成员函数只能在类外定义6. 友元的作用之一是( A)A. 提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类A.class derived::student privateB. class derived:student publicC.class derived:private student{//… }D.class derived::public student{//… }8. 要实现动态联编,派生类中的虚函数(D )A.返回的类型可以与虚函数的原型不同B.参数个数可以与虚函数的原型不同C.参数类型可以与虚函数的原型不同D.以上都不对9. 有关运算符重载正确的描述是(D )A.C++语言允许在重载运算符时改变运算符的操作个数B. C++语言允许在重载运算符时改变运算符的优先级C. C++语言允许在重载运算符时改变运算符的结合性D. C++语言允许在重载运算符时改变运算符的原来的功能10. 假设定义了函数模板:template<class T>T max(T x,T y){ return (x>y)?x:y; }并定义了int i=6; char c=’a’; 错误的调用语句是( D)A. max( i,i)B. max(c,c)C.max((int )c,i)D.max(i,c)二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)1. #include"iostream.h"class point{public:int x,y;private:point( ){x=1;y=2;}};void main( ){point cpoint;cpoint.x=2;}2. #include"iostream.h"template<class T>class Stack{public:Stack(int sz){delete []v;}void push(T x){*p++=x;}T pop(){return *--p;}int lenth()const{return (p-v);}private:T *v,*p;int size;};void main(){Stack obj(5);obj.push(10);}3.#include"iostream.h"class student{int sno;int age;void printStu( );void setSno(int d);};void printStu( ){cout<<”\nStudent No.is “<<sno<<”,”; cout<<”age is”<<age<<”.”<<endl; } void setSno(int d){sno=d;}void setAge(int a){age=a;}void main( ){student lin;lin.setSno(20**1);lin.setAge(20);三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)1.#include"iostream.h"class b1{public:b1(int ii){i=ii;}void display(){cout<<i<<endl;}protected:int i;};class b2{public:b2(int jj){j=jj;}void display(){ cout<<j<<endl;}protected:int j;};class b3:public b1,public b2{public:b3(int ii,int jj,int kk):b1(ii),b2(jj){k=kk;}void setall(int ii,int jj,int kk){i=ii;j=jj;k=kk;}void display(){cout<<i<<endl;cout<<j<<endl;cout<<k<<endl;}private:int k;};o1.display();b2 o2(50);o2.display();b3 o3(10,20,30);o3.display();o3.setall(50,60,70);o3.display();}2.#include"iostream.h"class Stock{public:virtual void print(){cout<<"Stock class.\n";}};class Der1_Stock:public Stock {public:void print(){cout<<"Deri1_Stock class.\n";}}; class Der2_Stock:public Stock {public:void print(){cout<<"Deri2_Stock class.\n";}}; void main(){Stock s1;Stock *ptr;Der1_Stock d1;Der2_Stock d2;ptr=&s1;ptr->print();ptr=&d1;ptr->print();3.#include<iostream.h>const int size=10;template<class Type> //声明一个类模板class stack{ public:void init(){ tos=0; }void push(Type ch); //参数取Type类型Type pop(); //返回类型取Type类型private:Type stck[size]; //数组的类型为类型参数Type,即可取任意类型 int tos;};template <class Type>void stack<Type>::push(Type ob){ if (tos==size){ cout<<"stack is full"; return ; }stck[tos]=ob; tos++; }template <class Type>Type stack <Type>::pop(){ if (tos==0){ cout<<"stack is empty";return 0;}tos--;return stck[tos];}int main(){ //定义字符堆栈stack <char> s1,s2; //创建两个模板参数为char型的对象int i;s1.init(); s2.init();s1.push('a'); s2.push('x');s1.push('c'); s2.push('z');for(i=0;i<3;i++) cout<<"pop s1: "<<s1.pop()<<endl;for(i=0;i<3;i++) cout<<"pop s2: "<<s2.pop()<<endl;return 0;}二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)1.答案:point cpoint;是错误的(3分),因为构造函数是私有成员(3分)2. 答案:Stack obj(5); 有错(3分),因为Stack是类模板,应将模板实例化,才可定义对象(3分)3.答案:错误1:printStu、setSno两个成员函数不是公有成员,不允许在类外访问(4分)错误2:成员函数在类外定义,应加上类名“student::”(2分)错误3:setAge函数应在类中说明(2分)三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)1.答案:40 50 10 20 30 50 60 702.答案:Stock class.Deri1_Stock class.Deri2_Stock class.3.答案:pop s1:cpop s1:bpop s1:apop s2:zpop s2:ypop s2:xA 卷一、单项选择题:(每小题2分,共20分)1、假设已经有定义const char *name=”chen”;下列语句中错误的是_____________A. name[3]=’q’B. name=”lin”C. name=new char[5]D. name=new char(‘q’)2、在下列关键字中,用于说明类中公有成员的是____________A. publicB. privateC. protectedD. friend3、下列哪项不是面向对象程序设计的主要特征_______________。
c语言期末复习卷习题
期末总复习(基础知识+程序设计部分)一.填空1.已知char ch=’A’; 则下列表达式的值是:Ch=(ch>=’A’ && ch<=’Z’)? (ch+32):ch;2. 若x=1,y=2,z=3, 则表达式z+=++x+y++之值是3.若x=2,y=3,则x%=y+3之值为 24.. 若有定义int y=3; float z=5.2, x=4.8; 则表达式y+=(int)x+x+z的值为5. 设x,y,z为int型变量,且x=3,y=-4,z=5,请写出下列各表达式的值1)(x&&y)==(x||z)2)!(x>y)+(y!=z)||(x+y)&&(y-z)3)x++-y+(++z)6. 设x,y,z为int型变量,请用C语言表达式描述下列命题1)x和y中有一个小于z2) x,y和z中有两个为负数3)y是奇数y%2 !=07. 下面for循环语句最多可执行次For (x=0,y=0 ;(y !=99)&&(x<4) ;x++)8. 设i,j,k均为int型变量,则执行以下for语句后,k的值是for (i=0,j=10 ;i<=j ;i++,j--)k=i+j ;9.若已知x,y,z,m,n均为int 型变量,则执行下面语句后,x的值为y的值为z的值为m=10 ; n=5;x=(--m==n++)? --m : ++n;y=m++;z=n;10. 若有说明语句:w=1,x=2,y=3,z=4; 则表达式w>x? w:z>y? z:x值是11. 若定义的函数没有返回值时,则应该在该函数定义时加上类型说明符12. 凡在函数中未指定存储类型的变量,其隐含的存储类别为13. 在C语言中,一个函数直接或间接地调用自身,编构成函数的14. 如果被调用的自定义函数和调用函数不再同一个文件中,则在应以函数的文件中应将该文件的存储类型定义成型,在调用函数的文件中将该函数说明为型。
c语言程序设计期末复习题库
第二章基本数据类型及运算一、选择题1. 若以下选项中的变量已正确定义,则正确的赋值语句是。
A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3;答案:C2. 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是。
A) x=x*100+0.5/100.0 B) x=(x*100+0.5)/100.0C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0答案:C3. 下列C语言中运算对象必须是整型的运算符是。
A) %= B) / C) = D) *=答案:A4. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。
A) 0 B) 0.5 C) 1 D) 2答案:A5. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是。
A) 把x和y按从大到小排列 B) 把x和y按从小到大排列C) 无确定结果 D) 交换x和y中的值答案:D6. 下列变量定义中合法的是。
A)short_a=1-.le-1; B)double b=1+5e2.5;C)long do=0xfdaL; D)float 2_and=1-e-3;答案:A7. 以下4个选项中,不能被看作是一条语句的是。
A) {;} B) a=0,b=0,c=0;C) if (a>0); D) if (b==0)m=1;n=2;答案:D8. 设x=1,y=-1,下列表达式中解为8的是。
A)x&y B)~x│x C)x^x D)x<<=3答案:D9. 在C语言中不合法的整数是。
A)20 B)0x4001 C)08 D)0x12ed答案: C10. 以下选项中不正确的实型常量是A)2.607E-1 B)0.8103e0.2 C)-77.77 D)456e –2答案:B)11.若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7 B)a=7+b+c,a++C)int(12.3%4) D)a=a+7=c+b答案:B)12.以下十六进制数中不合法的是A)oxff B)0Xabc C)0x11 D)0x19答案:A)13. 设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=i<j)&&(b=j>k)&&(c=i,j,k)后,c值是。
C语言期末复习题
C语言期末复习题您的姓名: [填空题] *_________________________________1、在每个C程序中都必须包含有这样一个函数,该函数的函数名为 [单选题]A、main(正确答案)B、MAINC、nameD、 function2、下列合法的标识符为 [单选题]A、abde+B、 #KDJFC、 67KDJD、DK3_(正确答案)3、关于字符串和字符的关系正确的是 [单选题]A、“A”与’A’是相同的B、字符串是常量,字符是变量C、“A”与’A’是不同的(正确答案)D、“A”与“A”是相同的4、以下各标识符中,合法的用户标识符组为 [单选题]A、 PAd,P#d,b-b,abc,_0123,ssipedB、cin,a10,CPP,float,del_word,signedC、void,max,hiy,<fr>,list,*jerD、a,temp,_isw,INT,keep,wind(正确答案)5、C语言中,表示一条语句结束的标号是 [单选题]A、#B、;(正确答案)C、//D、}6、每个C程序中都必须有且仅有一个 [单选题]A、类B、预处理命令C、主函数(正确答案)D、语句7、运算符 +、<=、=、% 中,优先级最低的运算符是 [单选题]A、+B、<=C、=(正确答案)D、%8、下列字符列中,可以作为“字符串常量”的是 [单选题]A、 ABCB、″xyz″(正确答案)C、′uvwD、′a′9、设x和y均为逻辑型变量,则x && y为真的条件是 [单选题]A、它们均为真(正确答案)B、其中一个为真C、它们均为假D、其中一个为假10、在if语句中,用作判断的表达式为 [单选题]A、关系表达式(正确答案)B、逻辑表达式C、算术表达式D、任意表达式11、下面合法的C语言字符常量是 [单选题]A、'\t'(正确答案)B、 "A"C、 65D、 A12、表达式: 10!=9的值是 [单选题]A、trueB、非零值C、0D、1(正确答案)13、C语言提供的合法的数据类型关键字是 [单选题]A、 DoubleB、 short(正确答案)C、 integerD、 Char14、C语言程序的基本单位是 [单选题]A、程序行B、语句C、函数(正确答案)D、字符15、设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=x%y);的输出结果是 [单选题]A、 1(正确答案)B、 0C、 4D、 316、表达式5!=3的值是 [单选题]A、TB、非零值C、0D、1(正确答案)17、下列数据中哪个是整型数 [单选题]A、6(正确答案)B、6.00C、”a”D、7.e+018、下列数据中哪个是实型数 [单选题]A、6B、6.00(正确答案)C、”a”D、abc19、下面对变量的定义语句哪个是正确的 [单选题]A、int a;(正确答案)B、char a1,int a1;C、a,b char;D、int x,y20、下面对变量的定义语句哪个是正确的 [单选题]A、int x,y ;(正确答案)B、char a1,int a1;C、a,b char;D、char if21、一个C程序的执行是从 [单选题]A、本程序的main函数开始,到main函数结束(正确答案)B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++期末复习(问答题)1、类的成员一般地分成为哪两部分?这两部分有何区别?答:类的成员包括成员变量,成员函数两部分。
其中:成员变量一般是数据,描述对象的属性、状态。
成员函数定义了对象(可以发出)的行为或对象(可接受)的操作。
2、从访问权限角度如何区分不同种类的成员?它们各自的特点是什么?答:从访问权限的角度,成员可以分为:public,private,protected成员。
(1)public成员:任何函数都可以访问(指成员变量)或调用(指成员函数),包括本类的成员函数和类外的其它函数。
(2)private成员:只有本类的成员函数可以访问或调用。
(3)protected成员:只有本类的成员函数或派生类的成员函数可以访问或调用。
3、作用域运算符的功能是什么?它的使用格式如何?答:作用域运算符描述成员所属的类。
使用格式:<类>::<成员名>。
4、什么是对象?如何定义一个对象?对象的成员如何表示?答:对象是类的实例。
C++像定义某种类型变量一样定义一个对象,形式:“<类名><对象名>;”。
对象的成员表示(注:可以对比结构体类型变量的成员表示):(1)<对象名>.<成员名>(2)(*<对象指针>).<成员名> 或:<对象指针>-><成员名>5、如何对对象进行初始化?答:一般通过对象所属类的构造函数-对对象进行初始化。
6、什么是构造函数?构造函数有哪些特点?答:构造函数是类的特殊成员函数,在创建对象时自动调用,一般常用于对象初始化。
构造函数特点:函数名与类名相同,无返回值,可以有参数也可以没有参数(可以重载)。
7、什么是析构函数?析构函数有哪些特点?答:析构函数是类的特殊成员函数,在对象生命期结束时自动调用,一般常用于清理对象所分配的内存空间。
析构函数特点:函数名与类名相同(前面加~),无返回值,没有参数(不能重载)。
8、什么是缺省构造函数?什么是缺省析构函数?答:缺省构造函数、缺省析构函数:(1)没有参数且(2)函数体内不做任何操作(函数体为空)的构造函数和析构函数。
格式分别为:<类名>(){}; ~<类名>(){};定义类时若没有定义构造函数,系统会自动生成缺省构造函数;在定义类时若定义了构造函数时,系统不会自动生成缺省构造函数,此时可以显式地定义一个无参数且函数体为空的构造函数作为缺省构造函数。
定义类时若没有定义析构函数,系统会自动生成缺省析构函数;若定义了析构函数且它的函数体为空,它也就是缺省析构函数(注意:析构不能重载)。
9、什么是拷贝初始化构造函数?它的功能和特点是什么?答:拷贝初始化构造函数的参数为同类对象的引用。
功能:拷贝构造函数一般用于使用一个现有的对象初始化同类的一个新对象。
特点:参数为同类对象的引用。
10、成员函数有什么特征?什么是内联函数?什么是外联函数?答:成员函数特征:可以访问类中任何成员。
此外,成员函数可以像全局函数一样(1)重载,(2)设置为内联函数,(3)设置具有默认值。
内联函数就是编译时函数代码直接嵌入函数调用点,以空间换时间,提高程序运行效率;外联函数是一般意义的函数或子程序(独立的可调用程序块)。
在类体中定义的成员函数就是内联函数;在类体外定义的成员函数是外联函数,但可以用inline关键词定义为内联函数。
11、什么是静态成员?静态成员的作用是什么?答:类的静态成员是整个类所有对象所共有的成员,它保存在存储器中唯一的地方供本类所有对象所共享。
类的静态成员可以使类的所有对象共享一致、共同的数据。
12、静态成员函数与非静态成员函数有何不同?静态成员函数的调用格式如何?答:类的静态成员函数属于类,它一般只能访问本类的静态数据成员,而不能访问本类的非静态数据成员(因为非静态成员属于各个对象,而此时对象是不知道的)。
但本类对象作为参数时,则可以访问参数对象的非静态数据成员。
类的非静态成员函数属于本类对象,所以它既可以访问(this指针指向的)本类对象的非静态数据成员,也可以访问本类的静态数据成员。
静态成员函数的调用格式:“<类名>::<静态成员函数名>([参数])[;]”。
13、什么是友元?为什么要使用友元?什么是友元函数?什么是友元类?答:友元是类的朋友,可以是函数(即:友元函数)也可以是另外一个类(即:友元类)。
一个类的友元函数或友元类的所有成员函数都可以访问此类的私有成员,这使得操作更加直接(不必再通过公共接口),使用方便,程序效率高(不是间接访问)。
但是,使用友元会破坏类的封装性,等于从外界直接访问类的私有成员,丧失很多OO封装带来的好处(数据不安全、容易导致代码混乱),建议少用。
14、.什么是this指针?它有何作用?答:this指针:隐含在非静态成员函数中的特殊指针,它是当前正在调用此成员函数的对象的指针。
this指针的作用:成员函数对成员变量的引用实际是通过this指针访问的,也就是说:成员变量 this->成员变量;另外,如果成员函数需要访问当前对象,也可以通过this指针,*this就是当前对象。
15、什么是对象数组?它如何定义?它如何赋值?答:对象数组:数组元素是某个类对象的数组。
对象数组定义:“类类型数组名[数组长度];”。
对象数组的赋值-就是给对象数组的数组元素赋值。
16、指向对象数组的指针如何定义?如何赋值?答:指向对象数组的指针,就是指向对象数组元素的指针。
(1)对于一维对象数组,指向此对象数组的指针定义和初始化为:类类型 *指针变量名[=数组名];(2)对于二维对象数组,指向此对象数组的指针定义和初始化为:类类型 (*指针变量名)[列数] [=数组名];17、什么是指针数组?什么是对象指针数组?它们是如何定义的?它们又将如何被赋值?答:指针数组:数组的每个元素为指针;对象指针数组:数组的每个元素为指向对象的指针。
指针数组定义:<基类型> * 指针变量名[数组长度];18、带参数的main()的形式如何?main()有哪些参数?各表示什么意思?答:形式:int main(int argc,char *argv[])。
其中argc-命令行参数个数,argv-命令行各个参数串.19、如何定义一个常量?答:两种方法:(1)宏定义:#define 宏名常量值(2)const常量:const <类型> 常量名=常量值;20、如何定义常引用?答:定义常引用:const <类型说明>&<引用名>;注意:对于常引用,const不要放在引用名的前面,因为引用在定义时就确定了引用的对象。
常引用引用的对象(中的值)不能更新。
21、常成员函数有何特点?在什么情况下需要定义常成员函数?答:常成员函数不能修改自身对象,常对象只能调用常成员函数。
在使用常对象时应当定义并使用常成员函数。
22、.常数据成员的初始化如何实现?答:常数据成员只对象的某些数据一旦确定,不能改变。
常数据成员的初始化在构造函数初始化列表完成。
23、如何对子对象进行初始化?答:子对象初始化在构造函数初始化列表中完成,格式:“子对象名(参数)”24、运算符new和delete的功能是什么?它们可以用来创建动态对象和删除动态对象吗?答:new和delete创建动态对象和删除动态对象。
25、使用new和delete创建和删除动态数组的格式如何?答:new创建动态数组得格式:<类型> *<指针>=new <类型>[数组长度];delete删除动态数组的格式:delete[]<指针>;25、什么是继承性?为什么说它是面向对象程序中的重要机制?答:面向对象系统的继承:是指新类可以继承现有类的成员(数据成员、成员函数)。
继承可以实现代码的重用,是面向对象系统的重要机制。
26、C++中继承分为哪两类?继承方式又分哪三种?答:C++继承分为单继承,多继承。
继承方式分为公共、私有、保护继承三种方式,其中,公有继承是最常见的继承方式。
27、三种继承方式中各有什么特点?不同继承方式中派生类的对象对基类成员的访问有何不同?答:继承方式使派生类中基类成员的访问权限的影响:(1)public继承:基类成员的访问权限不变;(2)private继承:基类的public,protected成员的访问权限都改变为private;(3)protected继承:基类的public,protected成员的访问权限都改变为protected。
派生类对象对基类成员的访问取决于派生类中基类成员的访问权限。
即:(1)public继承:派生类对象只能访问public基类成员。
(2)private继承:派生类对象不能访问任何基类成员。
(3)protected继承:派生类对象不能访问任何基类成员。
28、如何定义单继承的派生类?如何定义多继承的派生类?答:单继承派生类的定义:class <派生类类名>:<继承方式> <基类类名>{新增成员};多继承派生类的定义:class <派生类类名>:<继承方式1> <基类类名1>,…,<继承方式n> <基类类名n>{新增成员};29、派生类与基类之间有什么关系?答:派生类是基类的具体化(模拟的是现实层次分类),是基类定义的延续(抽象类实现),是基类的组合(多继承)。
30、单继承中,派生类的构造函数定义格式如何?答:单继承,派生类构造函数要包含对基类子对象初始化,所以派生类构造函数要在成员初始化列表中显式或隐含调用基类构造函数(缺省构造函数)。
定义格式:<类名>(<总参数表>):<基类名>(<参数表>){……}31、多继承中,派生类的构造函数定义格式如何?答:多继承,派生类构造函数与单继承类似,同样也要包含对基类子对象初始化,所以派生类构造函数要在成员初始化列表中显式或隐含调用所有基类构造函数(缺省构造函数)。
定义格式:<类名>(<总参数表>):<基类名1>(<参数表1>),……,<基类名n>(<参数表n>){……}32、什么是子类型?类A是类B的子类型,这意味着什么?答:一种类型A至少提供另外一种类型T的行为,那么A类型就是B类型的子类型。
公有继承的派生类就是基类的子类型。
类A是类B的子类型,意味着类A适应类B,即:类A对象可以使用的场合同样适合类B的对象。
33、多继承中,在哪些情况下会出现二义性?如何消除二义性?答:多继承二义性主要出现在:(1)不同继承路径有同名成员,(2)不同继承路径继承共同的基类,存在多个基类子对象。