C++期末复习(问答题)

合集下载

江苏大学大一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)

C语言程序设计期末复习题及答案(1)
4. 设int i = 5;则语句while (i > = 1) i - -;执行后i的值为_0______。
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语言期末复习题

第一单元程序设计和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语言期末复习试题附答案

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语言程序的设计》期末复习试题与答案

《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++语言程序设计期末复习题(含答案)

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程序》期末复习题库

《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语言期末复习题

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)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)不同继承路径继承共同的基类,存在多个基类子对象。

相关文档
最新文档