C++程序设计期末试题
一、单项选择题
1.C++源程序文件的默认扩展名为(A)。
A. C.obj D.lik
2.C++程序从上机到得到结果的几个操作步骤依次是(B)
A.编译、编辑、连接、运行B.编辑、编译、连接、运行C.编译、运行、编辑、连接D.编辑、运行、编辑、连接
3.以下标识符中不全是保留字(关键字)的是(B)。
A.case for int  B.default then while  C.bool class long  D.goto return char
4.程序中主函数的名字为(A)。
A.main B.MAIN C.Main D.任意标识符
5.C++程序的基本模块为(D)。
A.表达式B.标识符C.语句D.函数
6.可用作C++语言用户标识符(变量名)的一组标识符是(B)。
A.void define+WORD  B.a3_b3_123 YNC.for-abc  CaseD.2a  DO sizeof
7.存储以下数据,占用存储字节最多的是(D)。
A.0 B.‘0’C.“0”D.0.0
8.设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是(D)。
A.15  B.26,15  C.15,26  D.26
9.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为(C)。
A.1  B.0  C.与x值相同  D.与x值相反
10.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A.0  B.4  C.8    D.6
11.若定义了函数double*function(),则函数function的返回值为(B)。
A.实数型  B.实数的地址  C.指向函数的指针  D.函数的地址
12.函数重载是指(A)。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
13.以下关于函数模板叙述正确的是(C)。
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
14.假定指针变量p定义为“int*p=new int(100);”,要释放p所指向的动态内存,应使用语句(A)。
A.delete p;  B.delete*p;  C.delete&p;  D.delete[]p;
15.关于封装,下列说法中不正确的是(D)。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
16.面向对象方法的多态性是指(C)。
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
17.文件包含命令中被包含的文件的扩展名(C)。
A.必须是.h  B.不能是.h  C.可以是.h或.cpp  D.必须是.cpp
18.预处理命令在程序中都是以(B)符号开头的。
A.*  B.#  C.&  D.@
19.以下叙述中正确的是(B)。
A.使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值
B.使用const定义的常量名有类型之分,其值在程序运行时是不可改变的
C.在程序中使用内联函数使程序的可读性变差
D.在定义函数时可以在形参表的任何位置给出缺省形参值
20.设有如下函数定义int f(char*s){char*p=s;while(*p!=’\0’)p++;return(p-s);}在主函数中用cout<<f(“good”)调用上述函数,则输出结果为(B)。
A.3  B.4  C.5  D.6
二、填空题
1.C++语言是在__C___语言的基础上发展起来的。
2.行尾使用注释的开始标记符为___//___。
3.一条表达式语句必须以__分号___作为结束符。
4.程序文件的编译错误分为___warning___和__error___两类。
5.从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为_int_,该函数带有_0_个
参数。
6.假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为_4_和_11_。
7.unsigned short int和int类型的长度分别为__2__和___4__。
8.字符串”\nThis\’s a pen\n\n”的长度为_____15_____。
9.在C++中存储字符串”abcdef”至少需要___7___个字节。
10.假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为_3_和_3.2_。
11.假定x是一个逻辑量,则!x||false的值为____x______。
12.数学算式的C++表达式为____3*x*y/(x+y)____。
13.设enum Printstatus{ready=2,busy,error};则cout<<busy的输出结果是__1__。
14.假定x=10,则表达式x<=10?20:30的值为__20____。
15.在switch语句中,每个语句标号所含关键字case后面的表达式必须是__常量__。
16.若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行___11__次后正常结束。
17.若“double x=100;”是文件F1.CPP中的一个全局变量定义语句,若文件F2.CPP中的某个函数需要访问此x,则应在文件F2.CPP中添加对x的声明语句为_extern double x;_。
18.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为__(char*)p __。
19.假定p是一个指向整数对象的指针,则用__*p __表示该整数对象。
20.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为___42____。
三、程序填空,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。
1、打印出100到200之间的所有素数(即除1和它本身再没有其他约数的数)。
#include<iostream.h>
#include<math.h>
void main()
{
  int i,j;
  for(i=100;i<=200;i++)
  {
    int temp=int(sqrt(i));
    for(j=2; __  j<=temp __;j++)
        if(i%j==0) __ break __;
    if(__ j>temp __)cout<<i<<'';
  }
cout<<'\n';请写出至少5个字符串函数
}
2、斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5
个数。
#include<iostream.h>
void main()
{
int f,f1,f2,i;
cout<<”斐波那契数列:\n”;
f1=0;f2=1;
cout<<setw(6)<<f1<<setw(6)<<f2;
for(i=3;i<=20;i++){
f=______f1+f2______;
cout<<setw(6)<<f;
if(_____ i%5==0 ______)cout<<endl;
f1=f2;
f2=____f_______;
}
cout<<endl;
}
3、采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出。
#include<iostream.h>
const int N=8;
void main()
{
int a[N],*p,*q;
for(p=a;p<a+N;p++)___cin>>*p ___;
p=a;q=a+N-1;
while(p<q){
int r=*p;*p=*q;*q=r;
___ p++ ___;___ q--___;
}
for(p=a;p<a+N;p++)
cout<<*p<<'';
cout<<endl;
}
四、写出程序运行结果
1. #include<iostream.h>
#include<stdlib.h>
void main()
{
int a[8]={25,48,32,85,64,18,48,29};
int max,min;
max=min=a[0];
for(int i=0;i<8;i++){
if(max>a[i])max=a[i];
if(min<a[i])min=a[i];
}
cout<<"max:"<<max<<endl;
cout<<"min:"<<min<<endl;
}
运行结果:max:85    min:18
2.#include<iomanip.h>
void main()
{
int i,j;
for(i=0;i<5;i++){
for(j=i;j<5;j++)cout<<’*’;
cout<<endl;
}
}
运行结果:
*****
****
***
**
*
五、指出程序或函数的功能
1.#include<iostream.h>
void main()
{
int i,s=0;
for(i=2;i<=30;i+=2)s+=i*i;
cout<<"s="<<s<<endl;
}
功能:计算并输出22+42+62+...+302的值。
六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误
1、在下面的定义中,NODE是链表接点的结构,appendToList则是一函数,其功能是:在list所指向的链表的末尾添加一个新的值为x的接点,并返回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。