国家计算机二级(C++)67
(总分460, 做题时间120分钟)
选择题(每小题2分,共70分) 下列各题四个选项中,有一个是正确的,请选择正确答案。
1. 
有以下程序:
main()
{ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456,p 中的值为 789,
则正确的输入是______。
A m=123n=456p=789
B m=123    n=456    p=789
C m=123,n=456,p=789
D 123    456    789
    分值: 2
答案:A
根据本题的数据输入形式“scanf("m=%dn=%dp=%d",&m,&n,&p);”说明在输入数据时,必须输入“m=”、“n=”、“p=”字符,且中间不能含有空格。
2. 
下面程序的运行结果是(  )。
  #nclude<iostream.h>
  int fun(inta[],int n)
  {
    int result=1;
    for(int i=1;i<n;++)
      result=result*a[i];
    return result;
  }
  void main( )
  {
    int a[3] ={3,4,5};
    cout<<fun(a,3)<<endl;
  }
A 2
B 0
C -2
D 1
    分值: 2
答案:B
单目的++运算优先级高于双目的+运算,不过++的结合性是自右向 左的,而+是自左至右的,所以上面的两个表达式都是先计算a+b的值之后,a再自加1。
3. 
程序流程图中带有箭头的线段表示的是
A 图元关系
B 数据流
C 控制流
D 调用关系
    分值: 2
答案:C
程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,
在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;◇表示逻辑条件。
4. 
有如下说明int a[10]={l,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是【  】
A *p+9
B *(p+8)
C *p+=9
D p+8
    分值: 2
答案:B
p为指向a数组的一个指针,冰p对应于数组元素a[O]。(p+8)表示一维数组a[8]的地址,而*(p+8)表示一维数组a[8]的值,即9。
5. 
如果利用C++流进行输入输出,下面的叙述中正确的是
A 只能借助于流对象进行输入输出
B 只能进行格式化输入输出
C 只能借助于cin和cout进行输入输出
D 只能使用运算符>>和<<进行输入输出
    分值: 2
答案:A
在C++中输入输出流,相应的运算符是cin与eout。C语言中原有的输入输出语句,在C++程序中同样可以使用。
6. 
只能作为成员函数重载的是(  )。
A 类创建时
B 创建对象时
C 删除对象时
D 不自动调用
    分值: 2
答案:C
析构函数就是用来释放对象的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放了。
7. 
对如下二叉树进行后序遍历的结果为______。
A ABCDEF
B DBEAFC 
C ABDECF
D DEBFCA
    分值: 2
答案:D
后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点;并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。
8. 
设有如下三个关系表下列操作中正确的是
A T=R∩S
B T=R∪S
C T=R×S
D T=R/S
    分值: 2
答案:未知
9. 
已知一程序运行后执行的第一个输出操作是cout<<setw(10)<<setfill(’*’)<<1234;则此操作的输出结果是
A 1234
B ******1234
C **********1234
D 1234******
    分值: 2
答案:B
本题考查的是输出流对象,先输出6个“*”号,再输出“1234”,宽度为10,答案B是正确的。
10. 
有以下类定义
  classPoint{
  public:
      Point(int x=0,int y=0){_x=x;_y=y;}
      void Move (int xOff,int yOff
      {_x +=xOff;_y+yOff}
      void Print() const
      {cout<<''(''<<_x<<'',''<<_y<<'')''<<endl;}
  private:
      int_x_y;
  };
  下列语句中会发生编译错误的是【  】
A Pointpt;pt;Print();
B const Point pt;pt.Print();
C Pointpt;pt.Move(1,2);
D const Point pt;pt.Move(1,2);
    分值: 2
答案:D
本题考核常对象、常数据成员与常成员函数。如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数,D选项中对象 pt为常对象,而成员函数Move()不是常成员函数,所以这样调用会发生编译错误。
11. 
以下叙述中正确的是______。
A 调用 printf 函数时,必须要有输出项
B 使用 putchar 函数时,必须在之前包含头文件 stdio.h
C 在 C 语言中,整数可以以十二进制、八进制或十六进制的形式输出
D 调用 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码
    分值: 2
答案:B
在使用标准输入输出库函数(除了 printf 和 scanf)前,必须要用预编译命令“#include”将头文件“stdio.h” 包括到用户源文件中。
12. 
以下叙述中错误的是______。
A C 语言中对二进制文件的访问速度比文本文件快 
B C 语言中,随机文件以二进制代码形式存储数据 
关于printf函数正确的是
C 语句 FILE    fp;定义了一个名为 fp 的文件指针 
D C 语言中的文本文件以 ASCII 码形式存储数据
    分值: 2
答案:C
FILE 是由系统定义的一个结构体类型,并用该类型来定义若干个 FILE 类型的变量,以便存放若干 个文件。所以用 FILE 定义的变量必须是数组或指针,所以选项 C 中的“FILE    fp;”改为“FILE    *fp;”就 对了。
13. 
下面关于数组的描述错误的是(  )。
A 报表页眉
B 页面页眉
C 组页眉
D 以上说法都不对
    分值: 2
答案:B
将标题移动到页面页眉中,则标题在每一页上都显示。如果将标题移动到报表页眉中,则打印时只在第一页的开始位置出现。
14. 
关于C++语言与C语言关系描述中错误的是(  )。
A  C++语言是C语言的超集
B  C++语言对C语言进行了扩充
C  C++语言包含C语言的全部语法特征
D  C++语言与C语言都是面向对象的程序设计语言
    分值: 2
答案:D
C语言是一种面向过程的程序设计语言,而C++语言是一种面向对象的设计语言,C++语言是C语言的超集,它包含了C语言的所有语言特性,并进行了扩充。
15. 
下面程序的运行结果为(  )。
  # include <iostream.h>
  class A
  {
    int num;
  public:
    A(inti){hum=i;}
    A(A&a){num=a.num++;}
    void print( ){cout << num;}
  };
  void main( )
  {
    Aa(1),b(a);
    a.print( );
    b.print( );
  }
A  显示“打开文件”对话框
B  显示“保存文件”对话框
C  显示“字体”对话框
D  显示“打印”对话框
    分值: 2
答案:C
选项卡是用来分页的,而选项组控件是用来选择列表的,文本框控件主要用来输入或编辑字段数据。