计算机等级考试二级(C++)31
(总分100,考试时间90分钟)
选择题(每小题2分,共70分)  下列各题四个选项中,有一个是正确的,请选择正确答案。
1. 有以下程序段:int k=0,a=1,b=2,c=3;k=a<b?b:a; k=k>c?c:k;执行该程序段后,k 的值是______。
A. 3        B. 2
C. 1        D. 0
2. 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是(  )。
A. 派生类的对象可以赋给基类的对象
B. 派生类的对象可以初始化基类的引用
C. 派生类的对象可以直接访问基类中的成员
D. 派生类的对象的地址可以赋给指向基类的指针
3. 有以下程序:main(){ int    a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%d\n",*p+*q);}程序运行后的输出结果是______。
A. 16        B. 10
C. 8        D. 6
4. 下列关于C++语言类的描述中错误的是(  )。
A. 类用于描述事物的属性和对事物的操作
B. 类与类之间通过封装而具有明确的独立性
C. 类与类之间必须是平等的关系,而不能组成层次结构
D. 类与类之间可以通过一些方法进行通信和联络
5. 以下与函数 fseek(fp,0L,SEEK_SET)有相同作用的是______。
A. feof(fp)          B. ftell(fp)
C. fgetc(fp)          D. rewind(fp)
6. 执行以下程序后,文件的内容是(若文件能正常打开)______。#include <stdio.h>main(){ FILE *fp;char *s1="Fortran",*s2="Basic";if((fp=fopen("","wb"))==NULL){ printf("Can''t file\n"); exit(1);}fwrite(s1,7,1,fp); /*把从地址s1开始的7个字符写到fp所指文件中*/f seek(fp, 0L,SEEK_SET); /*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);fclose(fp);}
A. Basican          B. BasicFortran
C. Basic          D. FortranBasic
7. 有如下程序:    #include<iostream.h>    long fib(int n)    { if(n > 2) return(fib(n-1)+fib(n-2) );      else return(2);}    void main( )    { cout < < fib(3);}  该程序的输出结果是(  )。
A. 2        B. 4
C. 6        D. 8
8. 若变量已正确定义并赋值,以下符合C++语言语法的表达式是(  )。
A.  a:=b+1        B.  a=b=c+2
C.  int 18.5%3        D.  a=a+7=c+b
9. 设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。
A. EOF          B. 非 0 值
C. 0        D. NULL
10. 关于动态存储分配,下列说法正确的是【  】
A. new 和 delete是C++语言中专门用于动态内存分配和释放的函数
B. 动态分配的内存空间也可以被初始化
C. 当系统内存不够时,会自动回收不再使用的内存单元,因些程序中不必用delete释放内存空间
D.  当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
11. 以下叙述中错误的是______。
A. C 语句必须以分号结束 
B. 复合语句在语法上被看作一条语句 
C. 空语句出现在任何位置都不会影响程序运行 
D. 赋值表达式末尾加分号就构成赋值语句
12. 有以下程序:void sum(int    a[]) {    a[0]=a[-1]+a[1];    } main() {    int    a[10]={ 1,2,3,4,5,6,7,8,9,10};sum(&a[2]); printf("%d\n",a[2]); }程序运行后的输出结果是______。
A. 6        B. 7
C. 5        D. 8
13. 下面程序输出的结果是(  )。  #include<iostream.h>  voidmain( )  {inti;    inta[3][3]:{1,2,3,4,5,6,7,8,9};    for(i=0;i<3;i++)    cout<<a[2-i][i]<<"";  }
A. 159        B. 753
C. 357        D. 591
14. 语句ofstreamf(“SALARY.DAT”,ios_base::app)的功能是建立流对象f,并试图打开文件SALARY.DAT 与f 关联,而且______。
A. 若文件存在,将其置为空文件;若文件不存在,打开失败
B. 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
C. 若文件存在,将文件指针定位于文件首;若文件不存在,打开失败
D. 若文件存在,打开失败;若文件不存在,建立一个新文件
15. 下列关于模板的说法正确的是(  )。
A. 模板的实参在任何时候都可以省略
B. 类模板与模板类所指的是同一概念
C. 类模板的参数必须是虚拟类型的
指向类成员函数的指针D. 类模板中的成员函数全部都是模板函数
16. 关于关键字class 和typename,下列表述中正确的是______。
A. 程序中的typename 都可以替换为class
B. 程序中的class 都可以替换为typename
C. 在模板形参表中只能用typename 来声明参数的类型
D. 在模板形参表中只能用class 或typename 来声明参数的类型
17. 下面程序的运行结果是(  )。    #include" iostream.h"    #define sum(a,b)a * b    void main( )    { int x;     x=sam(1+2,3);     cout < < x;    }
A. 电脑2004        B. * * * * *
C. * * * * * * * *        D. 错误设置,无法输入
18. 以下哪个特征不是面向对象思想中的主要特征?
A. 只能读        B. 只能用来编辑
C. 可以读也可以编辑        D. 对编辑框设置无效
19. 有以下程序:#include <stdio.h>main(){ FILE    *fp; int    i,k,n; fp=fopen("data.dat","w+"); for(i=1;i<6;i++){fprintf(fp,"%d    ",i);if(i%3==0)    fprintf(fp,"\n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);    printf("%d    %d\n",k,n);fclose(fp);}程序运行后的输出结果是______。
A. 00          B. 12345
C. 14          D. 12
20. 有以下程序:#define N 20fun(int a[],int n,int m){ int i,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是______。
A. 10234        B. 12344
C. 12334        D. 12234
21. 以下程序的输出结果是(  )。  #include<iostream.h>  voidmain( )  {intx=1,y=3;    cout<<X++<<",";    {intx=0;X+=y*2;      cout<<x<<","<<y<<",";  }  cout<<x<<","<<y;  }
A. 1,6,3,1,3        B. 1,6,3,6,3
C. 1,6,3,2,3        D. 1,7,3,2,3
22. 下列程序的运行结果为(  )。   #include<iostream.h>   class Location {    protec
ted:     int X,Y;   publiC:    void SeX(int myx){X=myx;}    void SetY(int myy){Y=myy;}    void showxy( ) {cout<<"X=" <<X<<" " <<"Y"=<< Y<<  endl;} };   Class Rectangle :public Location{    private:     int H,W;    public:    void SetH(int myh){H=myh;}    void SetW(int myw) {W=myw;}    void show( ) {cout <<"X="<<X<<" "<<"Y="<<"<<       Y<<" "<<"H="<< H<<" " <<"W=" <<W       <<endl;} };   void main( )   { Rectangle r1;     r1.SetX(3);     r1.SetY(5);     r1.SetH(4);     r1.SetW(6);     r1.showxy( );     r1. show( );}
A.    X=3 Y=5   X=3 Y=5 H=4 W=6
B.    X=3 Y=5  X=3 Y=5 H=3 W=6
C.    X=3 Y=5  X=3 Y=4 H=4 W=6
D.    X=3 Y=5  X=3 Y=3 H=4 W=6
23. 以下不正确的定义语句是(  )。
A.  Private Sub Form _ Db1Click( )    Forml.Hide    Form2.Show 0  End Sub

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