2005年4月二级试题

2005-11-18 22:11:08   Count:
              2005年4月等级考试二级VB真题

              (考试时间90分钟,满分100分) 

一、选择题((1)~(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 

 (1)数据的存储结构是指
 A) 存储在外存中的数据              
 B) 数据所占的存储空间量
 C) 数据在计算机中的顺序存储方式    
 D) 数据的逻辑结构在计算机中的表示

 (2)下列关于栈的描述中错误的是
  A)栈是先进后出的线性表     
  B) 栈只能顺序存储
  C) 栈具有记忆作用          
  D) 对栈的插入与删除操作中,不需要改变栈底指针

 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的 比较次数中正确的是
  A) 冒泡排序为n/2            B) 冒泡排序为n
  C) 快速排序为n              D) 快速排序为n(n-1)/2

 (4)对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
  A) log2n   B) n/2    C) n   D) n+1

 (5)下列对于线性链表的描述中正确的是
  A)存储空间不一定是连续,且各元素的存储顺序是任意的
  B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面
  C)存储空间必须连续,且前件元素一定存储在后件元素的前面
  D)存储空间必须连续,且各元素的存储顺序是任意的

 (6)下列对于软件测试的描述中正确的是
  A)软件测试的目的是证明程序是否正确
  B)软件测试的目的是使程序运行结果正确
  C)软件测试的目的是尽可能多地发现程序中的错误
  D)软件测试的目的是使程序符合结构化原则

 (7)为了使模块尽可能独立,要求
  A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
  B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
  C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 
  D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

 (8)下列描述中正确的是
  A) 程序就是软件
  B) 软件开发不受计算机系统的限制      
  C) 软件既是逻辑实体,又是物理实体
  D) 软件是程序、数据与相关文档的集合

 (9)数据独立性是数据库技术的重要特点之一。所谓数据独立性是指
  A) 数据与程序独立存放
  B) 不同的数据被存放在不同的文件中
  C) 不同的数据只能被对应的应用程序所使用
  D) 以上三种说法都不对

 (10) 用树形结构表示实体之间联系的模型是
  A) 关系模型   B) 网状模型   C) 层次模型   D) 以上三个都是

 (11)、在窗体(名称为Form1)上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写一个事件过程。程序运行以后,如果在文本框中输入一个字符,则把命令按钮的标题设置为“计算机等级考试”。以下能实现上述操作的事件过程是:
  A)Private Sub Text1_Change()
       Command1.Caption=”计算机等级考试”
       End Sub
  B) Private Sub Command1_Click()
       Caption=”计算机等级考试”
        End Sub
  C) Private Sub Form1_Click()
       Text1.Caption=”计算机等级考试”
       End Sub
  D) Private Sub Command1_Click()
       Text1.Text=”计算机等级考试”
        End Sub

 (12)设a=5,b=4,c=3,d=2,下列表达式的值是 3>2*b Or a=c And b<>c Or c>d
  A) 1     B) True     C) False     D) 2

 (13)设a=”MicrosoftVisualBasic”, 则以下使变量b的值为”VisualBasic”的语句是
  A)b=Left(a,10)  B)b=Mid(a,10)   
  C)b=Right(a,10)   D)b=Mid(a,11,10)

 (14)假定有如下的窗体事件过程:
         Private Sub Form_Click()
        a$ = "Microsoft Visual Basic"
        b$ = Right(a$, 5)
        c = Mid(a$, 1, 9)
        MsgBox a$, 34, b$, c$, 5
        End Sub
  程序运行后单击窗体,则在弹出的信息框中的标题栏中显示的信息是:
  A)Microsoft Visual  B)Microsoft  C)Basic  D)5

  (15)设a=”a”,b=”b”,c=”c”,d=”d”,执行语句x=Iif((ad),”A”,”B”)后,x的值为:
  A)”a”  B)”b”  C)”B”  D)”A”

  (16)为了使命令按钮(名称为Command1)右移200,应使用的语句是
   A)Command1.Move -200  
   B) Command1.Move 200
   C) Command1.Left= Command1.Left+200
  D) Command1.Left= Command1.Left-200

  (17)在窗体上画一个文本框,然后编写如下事件过程:
       Private Sub Form_Click()
        x = InputBox("请输入一个整数")
        Print x + Text1.Text
        End Sub
  程序运行时,在文本框中输入456,然后单击窗体,在输入对话框中输入123,单击“确定”按钮后,在窗体上显示的内容是:
   A)123  B)456  C)579  D)123456

 (18)在窗体上画一个文本框和一个计时器控件,名称分别为Text1和Timer1,在属性窗口中把计时器的Interval属性设置为1000,Enabled属性设置为False,程序运行后,如果单击命令按钮,则每隔一秒钟在文本框中显示一次当前的时间。以下是实现上述操作的程序:
        Private Sub Command1_Click()
        Timer1._________
        End Sub
        Private Sub Timer1_Timer()
        Text1.Text = Time
        End Sub
  在______处应填入的内容是
  A)Enabled=True  B)Enabled=False  
  C)Visible=True  D)Visible=False

 (19)假定在图片框Picture1中装入了一个图形,为了清除该图形(不删除图片框),应采用的正确方法是:
  A)选择图片框,然后按Del键  
  B)执行语句Picture1.Picture=LoadPicture(“”)
  C)执行语句Picture1.Picture=””
 D)选择图片框,在属性窗口中选择Picture属性,然后按回车键

 (20)在窗体上画一个List1的列表框,一个名称为Label1的标签,列表框中显示若干个项目,当单击列表框中的某个项目时,在标签中显示被选中的项目的名称,下列能正确实现上述操作的程序是
  A) Private Sub List1_Click()  Label1.Caption = List1.ListIndex  End Sub
  B) Private Sub List1_Click()  Label1.Name = List1.ListIndex  End Sub
  C) Private Sub List1_Click()  Label1.Name = List1.Text  End Sub
  D) Private Sub List1_Click()  Label1.Caption = List1.Text  End Sub

 (21)在窗体上画一个命令按钮,名称为Command1,然后编写如下事件过程:
        Private Sub Command1_Click()
        Dim i As Integer, x As Integer
        For i = 1 To 6
        If i = 1 Then x = i
        If i <= 4 Then
        x = x + 1
        Else  
          x = x + 2
        End If
        Next i
        Print x
        End Sub
 程序运行后,单击命令按钮,其输出结果为
 A)9  B)6  C)12  D)15

(22)在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:
        Private Sub Command1_Click()
        c = "ABCD"
        For n = 1 To 4
        Print _________ 
         Next
        End Sub
 程序运行后,单击命令按钮,要求在窗体上显示如下内容:
        D
        CD
        BCD
        ABCD
 则在________处应填入的内容为
  A)Left(c,n)  B)Right(c,n)  
  C)Mid(c,n,1)   D)Mid(c,n,n)

 (23)执行以下程序段
        Dim x As Integer, i As Integer
        x=0
        For i = 20 To 1 Step -2
        x = x + i \ 5
        Next I
 后,x的值为
 A)16  B)17  C)18  D)19

(24)在Visual Basic工程中,可以作为启动对象的程序是
 A)任何窗体或标准模块
 B)任何窗体或过程
 C)Sub Main过程或其他任何模块
 D)Sub Main过程或任何窗体

 (25)假定建立了一个名为Command1的命令按钮数组,则以下说法中错误的是
 A)数组中每个命令按钮的名称(名称属性)均为Command1
 B)数组中每个命令按钮的标题(Caption属性)都一样
 C)数组中所有命令按钮可以使用同一个时间过程
 D)用名称Command1(下标)可以访问数组中的每个命令按钮

 (26)把窗体的KeyPreview属性设置为True,然后编写如下事件过程:
        Private Sub Form_KeyPress(KeyAscii As Integer)
        Dim ch As String
        ch = Chr(KeyAscii)
        KeyAscii = Asc(UCase(ch))
        Print Chr(KeyAscii + 2)
        End Sub
 程序运行后,按键盘上的”A”键,则在窗体上显示的内容是
 A)A  B)B  C)C  D)D

 (27)在窗体上画一个命令按钮和一个文本框,名称分别为Command1和Text1,然后编写如下程序:
        Private Sub Command1_Click()
        a = InputBox("请输入日期(1~31)")
        t = "旅游景点:" _
        & IIf(a > 0 And a <= 10, "长城", "") _
        & IIf(a > 10 And a <= 20, "故宫", "") _
        & IIf(a > 20 And a <= 30, "颐和园", "")
        Text1.Text = t
        End Sub
 程序运行后,如果从键盘输入16,则在文本框中显示的内容是:
 A)旅游景点:长城故宫   B)旅游景点:长城颐和园
 C)旅游景点:颐和园     D)旅游景点:故宫

 (28)在窗体上画一个名称为Label1的标签,然后编写如下事件过程:
        Private Sub Form_Click()
        Dim arr(10, 10) As Integer
        Dim i As Integer, j As Integer
        For i = 2 To 4
        For j = 2 To 4
        arr(i, j) = i * j
        Next j
        Next i
        Label1.Caption = Str(arr(2, 2) + arr(3, 3))
        End Sub
 程序运行后,单击窗体,在标签中显示的内容是
 A)12   B)13   C)14  D)15

 (29) 在窗体上画一个名称为Comamnd1的命令按钮,然后编写如下通用过程和命令按钮的事件过程:
        Private Function fun(ByVal m As Integer)
        If m Mod 2 = 0 Then
        fun = 2
        Else
        fun = 1
        End If
        End Function
        Private Sub Command1_Click()
        Dim i As Integer, s As Integer
        s = 0
        For i = 1 To 5
        s = s + fun(i)
        Next
        Print s
        End Sub
 程序运行后,单击命令按钮,则窗体上显示的是:
 A)6  B)7  C)8  D)9

 (30)阅读程序:
        Option Base 1
        Dim arr() As Integer
        Private Sub Form_Click()
        Dim i As Integer, j As Integer
        ReDim arr(3, 2)
        For i = 1 To 3
        For j = 1 To 2
        arr(i, j) = i * 2 + j
        Next j
        Next i
        ReDim Preserve arr(3, 4)
        For j = 3 To 4
        arr(3, j) = j + 9
        Next j
        Print arr(3, 2) + arr(3, 4)
        End Sub
 程序运行后,单击窗体,输出结果为:
 A)21  B)13   C)8  D)25

 31)在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:
        Option Base 1
        Private Sub Command1_Click()
        Dim c As Integer, d As Integer
        d = 0
        c = 6
        x = Array(2, 4, 6, 8, 10, 12)
        For i = 1 To 6
        If x(i) > c Then
        d = d + x(i)
        c = x(i)
        Else
        d = d - c
        End If
        Next i
        Print d
        End Sub
 程序运行后,如果单击命令按钮,则在窗体上输入的内容为
 A)10  B)16   C)12  D)20

 (32)设有如下程序:
        Private Sub Command1_Click()
        Dim c As Integer, d As Integer
        c = 4
        d = InputBox("请输入一个整数")
        Do While d > 0
        If d > c Then
        c = c + 1
        End If
        d = InputBox("请输入一个整数")
        Loop
        Print c + d
        End Sub
 程序运行后,单击命令按钮如果在输入对话框中依次输入1、2、3、4、5、6、7、8、9、0,则输出结果是:
 A)12  B)11   C)10  D)9

 (33)在窗体上画一个名称为Command1的命令按钮和一个名称为Text1的文本框,在文本框中输入以下字符串:
        Microsoft Visual Basic Programming
        然后编写如下事件过程:
        Private Sub Command1_Click()
        Open "d:\temp\outf.txt" For Output As #1
        For i = 1 To Len(Text1.Text)
        c = Mid(Text1.Text, i, 1)
        If c >= "A" And c <= "Z" Then
        Print #1, LCase(c)
        End If
        Next i
        Close
        End Sub
 程序运行后,单击命令按狃,文件outf.txt中的内容是:
 A)MVBP  B)mvbp   C)MVBP  D)mvbp

 (34)在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:
        Dim SW As Boolean
        Function func(X As Integer) As Integer
        If X < 20 Then
        Y = X
        Else
        Y = 20 + X
        End If
        func = Y
        End Function
        Private Sub Command1_Click()
        Dim intNum As Integer
        intNum = InputBox("")
        If SW Then
        Print func(intNum)
        End If
        End Sub
        Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As 
      Single, Y As Single)
        SW = False
        End Sub
        Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As 
      Single, Y As Single)
        SW = True
        End Sub
 程序运行后,单击命令按钮,将显示一个输入对话框,如果在对话框中输入25,则程序的执行结果是:
 A)输出0   B)输出25   C)输出45  D)无任何输出

 (35) 设有如下通用过程:
        Public Sub fun(a() As Integer, x As Integer)
        For i = 1 To 5
        x = x + a(i)
        Next
        End Sub
 在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:
        Private Sub Command1_Click()
        Dim arr(5) As Integer, n As Integer
        For i = 1 To 5
        arr(i) = i + i
        Next
        fun arr, n
        Text1.Text = Str(n)
        End Sub
 程序运行后,单击命令按钮,则在文本框中显示的内容是
 A)30  B)25   C)20  D)15

 二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。
 
 (1) 某二*树中度为2的结点有18个,则该二*树中有_____个叶子结

点。

 (2) 在面向对象方法中,类的实例称为______。
       
 (3) 诊断和改正程序中错误的工作通常称为______。
       
 (4) 在关系数据库中,把数据表示成二维表,每一个二维表称为

______。
       
 (5) 问题处理方案的正确而完整的描述称为______。

 (6)以下语句的输出结果是:_______
        
        Print Int(12345.6789*100+0.5)/100

 (7)在窗体上画一个文本框和一个图片框,然后编写如下两个事件过程:
        Private Sub Form_Click()
        Text1.Text = "VB程序设计"
        End Sub
        Private Sub Text1_Change()
        Picture1.Print "VBProgramming"
        End Sub
 
 程序运行后,单击窗体,在文本框中显示的内容是【7】,而在图片框

 中显示的内容是_______

 (8)阅读下面的程序
        Private Sub Form_Click()
        Dim Check As Boolean, Counter As Integer
        Check = True
        Counter = 5
        Do
        Do While Counter < 20
        Counter = Counter + 1
        If Counter = 10 Then
        Check = False
        Exit Do
        End If
        Loop
        Loop Until Check = False
        Print Counter
        End Sub
 程序运行后,单击窗体,输出结果是______

 (9)设有如下程序
        Private Sub Form_Click()
        Dim a As Integer, s As Integer
        n = 8
        s = 0
        Do
        s = s + n
        n = n - 1
        Loop While n > 0
        Print s
        End Sub
 以上程序的功能是______,程序运行后,单击窗体,输出结果为_____

 (10)设有如下程序:
        Option Base 1
        Private Sub Command1_Click()
        Dim arr1
        Dim Min As Integer, i As Integer
        arr1 = Array(12, 435, 76, -24, 78, 54, 866, 43)
        Min =______
        For i = 2 To 8
        If arr1(i) < Min Then ______
        Next i
        Print "最小值是:"; Min
        End Sub
 以上程序的功能是用Array函数建立一个含有8个元素的数组,然后查找并输出该数组中的最小值,请填空

 (11)在名称为Form1的窗体上画一个文本框,其名称为Text1,在属性窗口中把文本框的MultiLine属性设置为True,然后编写如下事件过程:
        Private Sub Form_Click()
        Open "d:\test\smtext1.txt" For Input As #1
        Do While Not ______
        Line Input #1, aspect$
        whole$ = whole$ + aspect$ + Chr(13) + Chr(10)
        Loop
        Text1.Text = whole$
        Close #1
        Open "d:\test\smtext2.txt" For Output As #1
        Print #1, _______
        Close #1
        End Sub
 上述程序的功能是,把磁盘文件smtext1.txt 的内容读到内存并在文本框中显示出来,然后把该文本框中的内容存入磁盘文件smtext2.txt.请填空

              
                    2005年4月C语言笔试试卷
                 (考试时间120分钟,满分100分)

一、选择题((1)-(10)每小题2分,(11)-(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项真涂在答题卡相应位置上,答在试卷上不得分。

(1)数据的存储结构是指    
A)存储在外存中的数据
B)数据所占的存储空间量
C)数据在计算机中的顺序存储方式
D)数据的逻辑结构中计算机中的表示

(2)下列关于栈的描述中错误的是    
A)栈是先进后出的线性表
B)栈只能顺序存储
C)栈具有记忆作用
D)对栈的插入与删除操作中,不需要改变栈底指针

(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是  
A)冒泡排序为n/2
B)冒泡排序为n
C)快速排序为n
D)快速排序为n(n-1)/2

(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
A)log2n   B) n/2   C) n   D) n+1

(5)下列对于线性链表的描述中正确的是         
A)存储空间不一定是连续,且各元素的存储顺序是任意的
B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C)存储空间必须连续,且前件元素一定存储在后件元素的前面
D)存储空间必须连续,且各元素的存储顺序是任意的

(6)下列对于软件的描述中正确的是         
A)软件测试的目的是证明程序是否正确
B)软件测试的目的是使程序运行结果正确
C)软件测试的目的是尽可能多地发现程序中的错误
D)软件测试的目的是使程序符合结构化原则

(7)为了使模块尽可能独立,要求     
A)模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强
B)模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱
C)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱
D)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强

(8)下列描述中正确的是         
A)程序就是软件
B)软件开发不受计算机系统的限制
C)软件既是逻辑实体,又是物理实体
D)软件是程序、数据与相关文档的集合

(9)数据独立性是数据库技术的重要特点之一。所谓数据独立性是指  
A)数据与程序独立存放
B)不同的数据被存放在不同的文件中
C)不同的数据只能被对应的应用程序所使用
D)以上三种说法都不对

(10)用树形结构表示实体之间联系的模型是    
A)关系模型
B)网状模型
C)层次模型
D)以上三个都是

(11)算法具有五个特性,以下选项中不属于算法特性的是    
A)有穷性   B)简洁性   C)可行性   D)确定性

(12)以下选项中可作为C语言合法常量的是     
A)-80.   B)-080   C)-8e1.0   D)-80.0e

(13)以下叙述中正确的是        
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出

(14)以下不能定义为用户标识符的是   
A)Main    B)_0    C)_int    D)sizeof

(15)以下选项中,不能作为合法常量的是     
A)1.234e04   B)1.234e0.4   C)1.234e+4   D)1.234e0

(16)数字字符0的ASCII值为48,若有以下程序
main()
{   char  a='1',b='2';
    printf("%c,",b++);
    printf("%d\n",b-a);
}
程序运行后的输出结果是      
A)3,2   B)50,2   C)2,2   D)2,50

(17)有以下程序
main()
{   int m=12,n=34;
    printf("%d%d",m++,++n);
    printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是     
A)12353514   B)12353513
C)12343514   D)12343513

(18)有定义语句:int  b;char  c[10];  ,则正确的输入语句是     
A)scanf("%d%s",&b,&c);
B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);
D)scanf("%d%s",b,&c);

(19)有以下程序
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

(20)有以下程序
main()
{
   int  a,b,d=25;
   a=d/10%9;
   b=a&&(-1);
   printf("%d,%d\n",a,b);
}
程序运行后的输出结果是      
A)6,1   B)2,1   C)6,0   D)2,0

(21)有以下程序
main()
{    int  i=1,j=2,k=3;
     if(i++==1&&(++j==3||k++==3))
        printf("%d  %d  %d\n",i,j,k);
}
程序运行后的输出结果是   
A)1  2  3    B)2  3  4   C)2  2  3    D)2  3  3

(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式aA)1  B)2  c)3  D)4

(23)有以下程序
main()
{
   int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
   while(i++<7)  if(p[i]%2)   j+=p[i];
   printf("%d\n",j);
}
程序运行后的输出结果是    
A)42   B)45    C)56    D)60

(24)有以下程序
main()
{   char  a[7]="a0\0a0\0";int  i,j;
    i=sizeof(a);  j=strlen(a);
    printf("%d  %d\n",i,j);
}
程序运行后的输出结果是     
A)2    2   B)7    6    C)7    2     D)6    2

(25)以下能正确定义一维数组的选项是    
A)int  a[5]={0,1,2,3,4,5};
B)char  a[]={0,1,2,3,4,5};
C)char  a={'A','B','C'};
D)int  a[5]="0123";

(26)有以下程序
int  f1(int  x,int  y){return  x>y?x:y;}
int  f2(int  x,int  y){return  x>y?y:x;}
main()
{   int  a=4,b=3,c=5,d=2,e,f,g;
    e=f2(f1(a,b),f1(c,d));
    f=f1(f2(a,b),f2(c,d));
    g=a+b+c+d-e-f;
    printf("%d,%d%d\n",e,f,g);
}
程序运行后的输出结果是                   
A)4,3,7   B)3,4,7   C)5,2,7   D)2,5,7

(27)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是     
A)数组a和b的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)上述说法都不对

(28)有以下程序
void  f(int  *x,int  *y)
{     int  t;
    t=*x;*x=*y;*y=t;
}
main()
{   int  a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
    p=a;q=&a[7];
    while(p   {
   f(p,q);
   p++;
   q--;
   }
   for(i=0;i<8;i++)
      printf("%d,",a[i]);
}
程序运行后的输出结果是                        
A)8,2,3,4,5,6,7,1,
B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8,
D)8,7,6,5,4,3,2,1,

(29)有以下程序
main()
{
   int  a[3][3],*p,i;
   p=&a[0][0];
   for(i=0;i<9;i++)
      p[i]=i;
   for(i=0;i<3;i++)
      printf("%d ",a[1][i]);
}
程序运行后的输出结果是               
A)0 1 2   B)1 2 3   C)2 3 4   D)3 4 5

(30)以下叙述中错误的是     
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数

(31)有以下程序
#define  N  20
fun(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

(32)有以下程序
main()
{   int  a[3][2]={0},(*ptr)[2],i,j;
    for(i=0;i<2;i++)
    {   ptr=a+i;
        scanf("%d",ptr);
        ptr++;
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<2;j++)
           printf("%2d",a[i][j]);
        printf("\n");
    }
}
若运行时输入:1  2  3<回车>,则输出结果为                      
A)产生错误信息
B)1 0
   2 0
   0 0
C)1 2
   3 0
   0 0
D)1 0
   2 0
   3 0

(33)有以下程序
prt(int  *m,int  n)
{
   int i;
   for(i=0;i       m[i]++;
}
main()
{
   int a[]={1,2,3,4,5},i;
   prt(a,5);
   for(i=0;i<5;i++)
      printf("%d,",a[i]);
}
程序运行后的输出结果是:    
A)1,2,3,4,5,
B)2,3,4,5,6,
C)3,4,5,6,7,
D)2,3,4,5,1,

(34)有以下程序
main()
{   int  a[]={1,2,3,4,5,6,7,8,9,0},*p;
    for(p=a;p      printf("%d,",*p);
}
程序运行后的输出结果是                  
A)1,2,3,4,5,6,7,8,9,0,
B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9,
D)1,1,1,1,1,1,1,1,1,,1,

(35)有以下程序
#define  P   3
#define  F(int  x)   {  return  (P*x*x);}
main()
{
   printf("%d\n",F(3+5));
}
程序运行后的输出结果是                       
A)192   B)29   C)25   D)编译出错

(36)有以下程序
main()
{
   int  c=35;  printf("%d\n",c&c);
}
程序运行后的输出结果是                            
A) 0   B) 70   C) 35   D) 1

(37)以下叙述中正确的是                   
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间

(38)若有以下说明和定义
union  dt
{
    int  a;   char  b;  double  c;
}data;
以下叙述中错误的是                          
A)data的每个成员起始地址都相同
B)变量data所占内存字节数与成员c所占字节数相等
C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D)data可以作为函数的实参

(39)以下语句或语句组中,能正确进行字符串赋值的是         
A)char  *sp;  *sp="right!";
B)char s[10];  s="right!";
C)char  s[10];  *s="right!";
D)char  *sp="right!";

(40)设有如下说明
typedef  struct  ST
{
   long a;
   int  b;
   char  c[2];
} NEW;
则下面叙述中正确的是              
A)以上的说明形式非法
B)ST是一个结构体类型
C)NEW是一个结构体类型
D)NEW是一个结构体变量

(41)有以下程序
main()
{
   int  a=1,b;
   for(b=1;b<=10;b++)
   {
      if(a>=8)   break;
      if(a%2==1)  {  a+=5;  continue;}
      a-=3;
   }
   printf("%d\n",b);
}
程序运行后的输出结果是               
A)3   B)4   C)5   D)6

(42)有以下程序
main()
{
   char  s[]="159",*p;
   p=s;
   printf("%c",*p++);
   printf("%c",*p++);
}
程序运行后的输出结果是               
A)15   B)16   C)12   D)59

(43)有以下函数
fun(char  *a,char  *b)
{
   while((*a!='\0')&&(*b!='\0')&&(*a==*b))
   {   a++;   b++;}
   return  (*a-*b);
}
该函数的功能是                                      
A)计算a和b所指字符串的长度之差
B)将b所指字符串复制到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小

(44)有以下程序
main()
{
   int  num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
   for(i=0;i<4;i++)
   {
        for(j=1;j<=i;j++)     printf("%c",' ');
        for(j=     j<4;j++)   printf("%4d",num[i][j]);
        printf("\n");
   }
}
若要按以下形式输出数组右上半三角
1  2  3   4
   6  7   8
      11 12
         16
则在程序下划线处应填入的是                    
A) i-1   B) i   C) i+1   D) 4-i

45)有以下程序
point(char  *p)
{
   p+=3;
}
main()
{   char  b[4]={'a','b','c','d'},*p=b;
    point(p);    printf("%c\n",*p);
}
程序运行后的输出结果是              
A)a   B)b   C)c   D)d

(46)程序中若有如下的说明和定义语句
char  fun(char  *);
main()
{
   char  *s="one",a[5]={0},(*f1)()=fun,ch;
   ……
}
以下选项中对函数fun的正确调用语句是                     
A)(*f1)(a);   B)*f1(*s);
C)fun(&a);      D)ch=*f1(s)

(47)有以下结构体说明和变量定义,如图所示,指针pqr分别指向此链表中三个连续结点。
struct  node
{
     int data;   
     struct node  *next;
} *p,*q,*r;
现要将q所指结点从链表中删除,同时保持链表的连续,以下不能完成指定操作的语句是           
A)p->next=q->next;
B)p->next=p->next->next;
C)p->next=r;
D)p=q->next;

(48)以下对结构体类型变量td的定义中,错误的是              
A)typedef   struct  aa
   {
      int   n;
      float  m;
   }AA;
   AA  td;
B)struct  aa
   {
     int   n;
     float  m;
   }  td;
   struct  aa td;
C)struct 
   {
       int  n;
       float  m;
   }aa;
   struct  aa td;
D)struct
   {
       int  n;
       float  m;
   }td;

(49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是               
A)feof(fp)
B)ftell(fp)
C)fgetc(fp)
D)rewind(fp)

(50)有以下程序
#include  "stdio.h"
void WriteStr(char  *fn,char  *str)
{
   FILE  *fp;
   fp=fopen(fn,"W");
   fputs(str,fp);
   fclose(fp);
}
main()
{
   WriteStr("t1.dat","start");
   WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是                        
A)start   B)end   C)startend   D)endrt


二、填空题(每空2分,共40分)

(1)某二*树中,度为2的结点有18个,则该二*树中有_____个叶子

结点。

(2)在面向对象的方法中,类的______称为对象。

(3)诊断和改正程序中错误的工作通常称为______。

(4)在关系数据库中,把数据表示成二维表,每一个二维表称为

________。

(5)问题处理方案的正确而完整的描述称为算法_______.

(6)以下程序运行时若从键盘输入:_______________ ,输出结果是 _______.
#include  
main()
{     int  i=0,j=0,k=0;
      scanf("%d%*d%d",&i,&j,&k);
      printf("%d%d%d\n",i,j,k);
}

(7)以下程序运行后的输出结果是______.
#define  S(x)   4*x*x+1
main()
{
   int  i=6,j=8;
   printf("%d\n",S(i+j));
}

(8)以下程序运行后的输出结果是________
main()
{
    int  a=3,b=4,c=5,t=99;
    if(b    if(a    printf("%d%d%d\n",a,b,c);
}

(9)以下程序运行后的输出结果是_______ 
main()
{
   int  a,b,c
   a=10;b=20;c=(a%b<1)||(a/b>1);
   printf("%d %d %d\n",a,b,c);
}

(10)以下程序运行后的输出结果是__________
main()
{
   char c1,c2;
   for(c1='0',c2='9';c1      printf("%c%c",c1,c2);
   printf("\n");
}

(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>.输出结果是______    
#include "stdio.h"
main()
{
   char a,b;
   a=getchar(); scanf("%d",&b);
   a=a-'A'+'0';
   b=b*2;
   printf("%c  %c\n",a,b);
}

(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值.请填空.   
void  fun(int, int, int (*)[4],int *)
main()
{
   int  a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
   fun(3,4,a,b);
   for(i=0;i<3;i++)
      printf("%4d",b[i]);
   printf("\n");
}
void fun(int  m,int n,int ar[][4],int *br)
{
    int i,j,x;
    for(i=0;i    {   x=ar[i][0];
        for(j=0;j           if(x        _______ =x;
}

(13)以下程序运行后的输出结果是______ 
void swap(int  x,int y)
{   int  t;
    t=x;x=y;y=t;
    printf("%d   %d   ",x,y);
}
main()
{   int  a=3,b=4;
    swap(a,b);
    printf("%d  %d\n",a,b);
}

(14)以下程序运行后的输出结果是______  
#include "string.h"
void fun(char  *s,int p,int k)
{   int i;
    for(i=p;i       s[i]=s[i+2];
}
main()
{   char  s[]="abcdefg";
    fun(s,3,strlen(s));
    puts(s);
}

(15)以下程序运行后的输出结果是______ 
#include "string.h"
main()
{
   char  ch[]="abc",x[3][4]; int  i;
   for(i=0;i<3;i++)   strcpy(x[i],ch);
   for(i=0;i<3;i++)   printf("%s",&x[i][i]);
   printf("\n");
}

(16)以下程序运行后的输出结果是_______  
fun(int  a)
{
   int b=0;static  int c=3;
   b++;   c++;
   return  (a+b+c);
}
main()
{
   int i,a=5;
   for(i=0;i<3;i++)
      printf("%d %d  ",i,fun(a));
   printf("\n");
}

(17)以下程序运行后的输出结果是_______   
struct  NODE
{  int  k;
   struct NODE  *link;
};
main()
{
  struct  NODE  m[5],*p=m,*q=m+4;
  int  i=0;
  while(p!=q)
  {   p->k=++i;   p++;
      q->k=i++;   q--;
  }
  q->k=i;
  for(i=0;i<5;i++)
     printf("%d",m[i].k);
  printf("\n");
}

(18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes  yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空.
#include  "string.h"
char  *huiwen(char  *str)
{
   char *p1,*p2;    int  i,t=0;
   p1=str;  p2=_____  
   for(i=0;i<=strlen(str)/2;i++)
      if(*p1++!=*p2--)
      {  t=1; break;  }
   if(_____)  return ("yes!");
   else    return ("no!");
}
main()
{
   char  str[50];
   printf("Input:");  scanf("%s",str);
   printf("%s\n", ______  );
}


               

              全国计算机等级考试二级vfp笔试真题


                (考试时间:90分钟,满分100分)
一、选择题( (1)~(35) 每题2分,共70分) 下列各题A) 、B) 、C) 、D) 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)数据的存储结构是指
A) 存储在外存中的数据               
B) 数据所占的存储空间量
C) 数据在计算机中的顺序存储方式     
D) 数据的逻辑结构在计算机中的表示

(2)下列关于栈的描述中错误的是
A) 栈是先进后出的线性表
B) 栈只能顺序存储
C) 栈具有记忆作用
D) 对栈的插入与删除操作中,不需要改变栈底指针

(3)对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是
A) 冒泡排序为n/2               B) 冒泡排序为n
C) 快速排序为n                 D) 快速排序为n(n-1)/2

(4)对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
A) log2n        B) n/2          C) n            D) n+1

(5)下列对于线性链表的描述中正确的是
A) 存储空间不一定是连续,且各元素的存储顺序是任意的
B) 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C) 存储空间必须是连续,且前件元素一定存储在后件元素的前面
D) 存储空间必须是连续,且各元素的存储顺序是任意的

(6)下列对软件测试的描述中正确的是
A) 软件测试的目的是证明程序是否正确
B) 软件测试的目的是使程序运行结果正确
C) 软件测试的目的是尽可能多地发现程序中的错误
D) 软件测试的目的是使程序符合结构化原则

(7)为了使模块尽可能独立,要求
A) 模块的内聚程度要尽量高,且各模块间的藕合程度要尽量强 
B) 模块的内聚程度要尽量高,且各模块间的藕合程度要尽量弱 
C) 模块的内聚程度要尽量低,且各模块间的藕合程度要尽量弱 
D) 模块的内聚程度要尽量低,且各模块间的藕合程度要尽量强 

(8)下列描述中正确的是
A) 程序就是软件                         
B) 软件开发不受计算机系统的限制
C) 软件既是逻辑实体,又是物理实体       
D) 软件是程序、数据与相关文档的集合

(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指
A) 数据与程序独立存放
B) 不同的数据被存放在不同的文件中
C) 不同的数据只能被对应的应用程序所使用
D) 以上三种说法都不对

(10)用树型结构表示实体之间联系的模型是
A) 关系模型     B) 网络模型     
C) 层次模型     D) 以上三个都是

(11)在创建数据库表结构时,给该表指定了主索引,这属于数据完整性中的
A) 参照完整性             B) 实体完整性
C) 域完整性               D) 用户定义完整性

(12) 在创建数据库表结构时,为该表中一些字段建立普通索引,其目的是
A) 改变表中记录的物理顺序    B) 为了对表进行实体完整性的约束
C) 加快数据库表的更新速度    D) 加快数据库表的查询速度

(13) 数据库系统中对数据库进行管理的核心软件是
A) DBMS         B) DB           C) OS           D) DBS

(14)设有两个数据库表,父表和子表之间是一对多的联系,为控制子表和父表的关联,可以设置“参照完整性规则”,为此要求这两个表
A) 在父表连接字段上建立普通索引,在子表连续字段上建立主索引
B) 在父表连接字段上建立主索引,在子表连续字段上建立普通索引
C) 在父表连接字段上不需要建立任何索引,在子表连接字段上建立普通索引
D) 在父表和子表的连接字段上都要建立主索引

(15) 关系运算中的选择运算是
A) 从关系中找出满足给定条件的元组的操作
B) 从关系中选择若干个属性组成新的关系的操作
C) 从关系中选择满足给定条件的属性的操作
D) A和B都对

(16) 在指定字段或表达式中不允许出现重复值的索引是
A) 惟一索引                 B) 惟一索引和候选索引
C) 惟一索引主索引           D) 主索引候选索引

(17) 在Visual FoxPro中,以下关于删除记录的描述中,正确的是
A) SQL的DELETE命令在删除数据库表中的记录之前,不需要用USE命令打开表
B) SQL的DELETE命令和传统Visual FoxPro的DELETE命令在删除数据库表中的记录之前,都需要用USE命令打开表
C) SQL的DELETE命令可以物理的删除数据库表中的记录,而传统Visual FoxPro的DELETE命令只能逻辑删除数据库表中的记录
D) 传统Visual FoxPro的DELETE命令在删除数据库表中的记录之前不需要用USE命令打开表

(18)在Visual FoxPro中,如果希望跳出SCAN…ENDSCAN循环体、执行ENDSCAN后面的语句,应使用
A) LOOP语句                     B) EXIT语句
C) BREAK语句                   D) RETURN语句

(19)打开数据库abc的正确命令是
A) OPEN DATABASE abc            B) USE abc
C) USE DATABASE abc             D) OPEN abc

(20)在Visual FoxPro中,下列关于表的叙述正确的是
A) 在数据库表和自由表中,都能给字段定义有效性规则和默认值
B) 在自由表中,能给表中的字段定义有效性规则和默认值
C) 在数据库表中,能给表中的字段定义有效性规则和默认值
D) 在数据库表和自由表中,都不能给字段定义有效性规则和默认值

(21)Visual FoxPro的“参照完整性”中“插入规则“包括的选择是
A) 级联和忽略   B) 级联和删除   
C) 级联和限制   D) 限制和忽略

(22) 在Visual FoxPro中,关于查询和视图的正确描述是
A) 查询是一个预先定义好的SQL SELECT语句文件
B) 视图是一个预先定义好的SQL SELECT语句文件
C) 查询和视图都是同一种文件,只是名称不同
D) 查询和视图都是一个存储数据的表

(23)在Visual FoxPro中,以下关于视图描述中错误的是
A) 通过视图可以对表进行查询     B) 通过视图可以对表进行更新
C) 视图是一个虚表               D) 视图就是一种查询

(24)使用SQL语句将学生表S中年龄(AGE)大于30岁的记录删除,正确的命令是
A) DELETE FOR AGE > 30      
B) DELETE FROM S  WHERE AGE > 30
C) DELETE  S  FOR  AGE > 30     
D) DELETE S WHERE AGE > 30

(25) 在Visual FoxPro中,使用LOCATE FOR 命令按条件查找记录,当查找到满足条件的第一条记录后,如果还需要查找下一条满足条件的记录,应使用
A) 再次使用LOCATE FOR 命令   B) SKIP命令
C) CONTINUE 命令                    D) GO命令

(26) 在Visual FoxPro中,删除数据库表S的SQL命令是
A) DROP TABLE S                 B) DELETE TABLE S
C) DELETE TABLE S.DBF           D) ERASE TABLE S

(27)下列表达式中,表达式返回结果为的是.F.的是
A) AT(“A”,“BCD”)          B) “[信息]”$“管理信息系统”
C) ISNULL(.NULL.)           D) SUBSTR(“计算机技术”,3,2)

(28) 使用SQL语句向学生表S(SNO,SN,AGE,SEX)中添加一条新记录,字段学号(SNO)、姓名(SN)、性别(SEX)、年龄(AGE)的值分别为0401、王芳、女、18,正确命令是
A) APPEND INTO S (SNO,SN,SEX,AGE)VALUES(‘0401’,‘王芳’,‘女’,18)
B) APPEND S VALUES(‘0401’,‘王芳’,18,‘女’)
C) INSERT INTO S(SNO,SN,SEX,AGE)VALUES(‘0401’,‘王芳’,‘女’,18)
D) INSERT S VALUES(‘0401’,‘王芳’,18,‘女’)

(29) 假设某个表单中有一个命令按钮cmdClose,为了实现当用户单击此按钮时能够关闭该表单的功能,应在该按钮的Click事件中写入语句
A) ThisForm.Close               B) ThisForm.Erase
C) ThisForm.Release             D) ThisForm.Return

(30) 在SQL的SELECT查询结果中,消除重复记录的方法是
A) 通过指定主关系键             B) 通过指定惟一索引
C) 使用DISTINCT子句            D) 使用HAVING子句

(31) 在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是
A) SELECT子句中可以包含表中的列和表达式
B) SELECT子句中可以使用别名
C) SELECT子句规定了结果集中的列顺序
D) SELECT子句中列的顺序应该与表中列的顺序一致

(32) 下列关于SQL中HAVING子句的描述,错误的是
A) HAVING子句必须与GROUP BY子句同时使用
B) HAVING子句与GROUP BY子句无关
C) 使用WHERE子句的同时可以使用HAVING子句
D) 使用HAVING子句的作用是限定分组的条件

(33) 在Visual FoxPro中,如果在表之间的联系中设置了参照完整性规则,并在删除规则中选择了“限制”,则当删除父表中的记录时,系统反应是
A) 不做参照完整性检查
B) 不准删除父表中的记录
C) 自动删除子表中所有相关的记录
D) 若子表中有相关记录,则禁止删除父表中记录

第(34)-(35)题使用如下三个数据库表:
学生表:S(学号,姓名,性别,出生日期,院系)
课程表:C(课程号,课程名,学时)
选课成绩表:SC(学号,课程号,成绩)
在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。

(34) 用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是
A) SELECT 学号,姓名 FROM S WHERE NOT EXISTS;
(SELECT * FROM SC WHERE SC.学号 = S.学号 AND成绩 < 85)
B) SELECT 学号,姓名 FROM S WHERE NOT EXISTS;
(SELECT * FROM SC WHERE SC.学号= S.学号 AND >= 85)
C) SELECT 学号,姓名 FROM S,SC
WHERE S.学号= SC.学号 AND成绩 >= 85
D) SELECT 学号,姓名 FROM S,SC
WHERE S.学号 = SC.学号 AND ALL成绩 >= 85

(35) 用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排列,正确的命令是
A) SELECT S.学号,姓名 平均成绩 FROM S,SC;
WHERE S.学号 = SC.学号;
GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY平均成绩 DESC
B) SELECT 学号,姓名,AVG(成绩) FROM S,SC;
WHERE S.学号 = SC.学号 AND COUNT(*)>=5;
GROUP BY 学号 ORDER BY 3 DESC
C) SELECT S.学号,姓名 AVG(成绩) 平均成绩FROM S,SC;
WHERE S.学号 = SC.学号 AND COUNT(*)>=5;
GROUP BY S.学号 ORDER BY平均成绩 DESC
D) SELECT S.学号,姓名 AVG(成绩)平均成绩 FROM S,SC;
WHERE S.学号 = SC.学号;
GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 3 DESC

二、填空题( 每空2分,共30分) 请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
注意:以命令关键字填空的必须拼写完整。

(1)某二叉树中度为2的结点有18个,则该二叉树中有【1】 个叶子结点。

(2)在面向对象方法中,类的实例称为 【2】  。

(3)诊断和改正程序中错误的工作通常称为 【3】  。

(4)在关系数据库中,把数据表示成二维表,每一个二维表称为  

【4】 。

(5)问题处理方案的正确而完整的描述称为 【5】  。

(6)在奥运会游泳比赛中,一个游泳运动员可以参加多项比赛,一个

游泳比赛项目可以有多个运动员参加,游泳运动员与游泳比赛项目两

个实体之间的联系是 【6】 联系。

(7)执行命令A=2005/4/2之后,内存变量A的数据类型是 【7】 型。

(8)如下程序显示的结果是 【8】  。
s=1
i=0
do while i<8
    s=s+i
    i=i+2
enddo
?s

(9)在Visual FoxPro 的中,可以在表设计器中为字段设置默认值的

表是 【9】 表。

(10)Visual FoxPro 中数据库文件的扩展名(后缀)是 【10】 。

(11)-(13)题使用如下三个数据库表:
金牌榜.DBF         国家代码C(3),  金牌数I,   银牌数I,  铜牌数I
获奖牌情况.DBF     国家代码C(3),  运动员名称C(20),  项目名称C(30), 名次I
国家.DBF           国家代码 C(3),  国家名称C(20)
“金牌榜”表中一个国家一条记录:“获奖牌情况”表中每个项目中的各个名次都有一条记录,名次只取前3名,例如:
国家代码   运动员名称      项目名称                    名次
001刘翔男子110米栏1
001李小鹏男子双杠3
002非尔普斯游泳男子200米自由泳3
002非尔普斯游泳男子400米个人混合泳1
001郭晶晶女子三米板跳板1
001李婷/孙甜甜网球女子双打1

(11) 为表“金牌榜”增加一个字段“奖牌总数”,同时为该字段设

置有效性规则:奖牌总数>=0,应使用SQL语句

 ALTER TABLE金牌榜 【11】   奖牌总数I 【12】 奖牌总数>=0

(12) 使用“获奖牌情况”和“国家”两个表查询“中国”所获金牌

(名次为1)的数量,应使用SQL语句

SELECT COUNT(*) FROM 国家 INNER JOIN  获奖牌情况;

 【13】  国家.国家代码 = 获奖牌情况.国家代码;

WHERE 国家.国家名称 = “中国” AND 名次 = 1

(13) 将金牌榜.DBF中新增加的字段奖牌总数设置为金牌数、银牌

数、铜牌数三项的和,应使用SQL语句
     【14】 金牌榜  【15】  奖牌总数 = 金牌总数+银牌数+铜牌数


               2005年4月全国计算机等级考试C++真题
                  (考试时间90分钟,满分100分) 

一、 选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。  

(1)数据的存储结构是指
 A) 存储在外存中的数据[KG8][WB]   
 B) 数据所占的存储空间量
 C) 数据在计算机中的顺序存储方式  
 D)数据的逻辑结构在计算机中的表示[HT]

(2)下列关于栈的描述中错误的是
 A) 栈是先进后出的线性表
 B) 栈只能顺序存储
 C) 栈具有记忆作用
 D) 对栈的插入与删除操作中,不需要改变栈底指针  

(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是
 A) 冒泡排序为n/2  B) 冒泡排序为n
 C) 快速排序为n    D) 快速排序为n(n-1)/2  

(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
 A) log2n    B) n/2  C) n   D) n+1

(5)下列对于线性链表的描述中正确的是
 A) 存储空间不一定是连续,且各元素的存储顺序是任意的
 B) 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
 C) 存储空间必须连续,且前件元素一定存储在后件元素的前面
 D) 存储空间必须连续,且各元素的存储顺序是任意的  

(6)下列对于软件测试的描述中正确的是
 A) 软件测试的目的是证明程序是否正确
 B) 软件测度的目的是使程序运行结果正确
 C) 软件测试的目的是尽可能多地发现程序中的错误
 D) 软件测试的目的是使程序符合结构化原则  

(7)为了使模块尽可能独立,要求
 A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
 B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
 C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
 D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强  

(8)下列描述中正确的是
 A) 程序就是软件  
 B) 软件开发不受计算机系统的限制
 C) 软件既是逻辑实体,又是物理实体  
 D) 软件是程序、数据与相关文档的集合  

(9)数据独立性是数据库技术的重要特点之一。所谓数据独立性是指
 A) 数据与程序独立存放
 B) 不同的数据被存放在不同的文件中
 C) 不同的数据只能被对应的应用程序所使用
 D) 以上三种说法都不对  

(10)用树形结构表示实体之间联系的模型是
 A) 关系模型  B) 网状模型
 C) 层次模型  D) 以上三个都是  

(11)要定义数组A,使得其中每个元素的数据依粢 :3、9、4、8、0、0、0,错误的定义语句是
 A) int A[]={3,9,4,8,0,0,0,};  
 B) int A [7]={3,9,4,8,0,0,0};
 C) int A[]={3,9,4,8};  
 D) int A[7]={3,9,4,8};

(12)在C++中,实现封装性需借助于
 A) 枚举  B) 类 C) 数组  D) 函数  

(13)下列关于虚函数的描述中,正确的是
 A) 虚函数是一个static类型的成员函数
 B) 虚函数是一个非成员函数
 C)  基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明  ]
 D) 派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型  

(14)下列关于运算符重载的描述中,正确的是
 A) 运算符重载可以改变操作的个数
 B) 运算符重载可以改变运算符的优先级
 C) 运算符重载可以改变运算符的结合性
 D) 运算符重载可以使运算符实现特殊功能  

(15)有如下函数模板声明:
   template
   T Max(T a,T b){ retun(a>=b)?a∶b;}
下列对函数模板Max的调用中错误是
 A) Max(3.5,4.5)  B) Max(3.5,4)
 C) Max(3.5,4.5)  D) Max(3.5,4)

(16)若语句:
   cout<')<是程序中第一个输出语句,则输出结果是
 A) 3141512>>OK!  B) 3141512OK!>>
 C) 3141512OK!>>  D) 31415>>OK!

(17)有如下语句序列:
   int=0;
   do{k+=5;cout<<'$';} while(k<19);
   while(k-->0)cout<<'*';
执行上面的语句序列输出字符$和*的个数分别是
 A) 4和20   B) 5和20
 C) 4和21   D) 5和21  

(18)针对数组定义int data[10]; ,下列表述中错误的是
 A) 用*data可访问到数组的首元素
 B) 用data[9]可访问到数组的末元素
 C) 用data[10]访问数组元素会超出数组边界
 D) data共有10个元素,其首元素是data[1]  

(19)已知n是一个int型变量,下列语句中错误的是
 A) long *p=new long[n];  B) long p[n];
 C) long *p=new long(n);  D) long p[10];

(20)下列函数中对调用它的函数没有起到任何作用的是
 A) void f1(double &x){--x}
 B) double f2(double x){ return x-1.5;}
 C) void f3(double x){--x;}
 D) double f4(double *x){--*x; return *x;}

(21)在下面的类定义中,模线处应填入的内容是
   A.B.C.D.class Fred
   {
   public:[KG*2] 
void print(){cout<void setData(double d){data=d;}
static int count;  ]
   private:  
double data;  ]
   };
   [CD#5]count=0;  //静态数据成员的定义
 A) int         B) static int
 C) int Fred::  D) static int Fred::

(22)有如下程序:
   include
   using namespace std;
   class Base
   { protected: int i;
    public:  int j;
   };
   class Derived:public Base
   { int m;
    public: int n;
   };
   int main()
   {  Derived d;
    d.i=0;  //[1]
    d.j=0;  //[2]
    d.m=0;  //[3]
    d.n=0;  //[4]
    return 0;
   }
其中主函数中有两个赋值语句有错,这两个错误的赋值语句是
 A) [1]和[2]  B) [1]和[3]
 C) [2]和[3]  D) [2]和[4]  

(23)在表达式x-y中,“-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可表示为
 A) x.operator-(y)  B) operator-(y,x)
 C) y.operator-(x)  D) operator-(x,y)

(24)下面的函数模板定义中错误的是
 A)  template
Q F(Q x) {RETURN Q+x;}  ]
 B)  template
Q F(Q x) {return x+x;}  ]
 C)  template
T F(T x) { return x*x;}  ]
 D)  template
bool F(T x) {return x>1;}  ]

(25)已知outifile是一个输出流对象,要想将outfile的文件指针定位到当前位置之前321字节处,正确的函数调用语句是
 A) outfile.seekp(321,ios_base::cur);  
 B) outifile.seekp(321,ios_base::beg);;
 C) outfile.seekp(-321,ios_base::beg);  
 D) outifile.seekp(-321,ios_base::cur);

(26)有如下的程序:
   #include
   #include
   using namespace std;
   class MyString
   {
public[WB] :
MyString(const char*s);
~MyString(){ delete[]data;}  ]
   protected:
  unsigned len;
  char*data;
   };
   MyString::MyString(const char *s)
   {
  len=strlen(s);
  data=new char[len+1]
  strcpy(data,s);
   }
   int main()
   {
  MyString a("C++Programing");
  MyString b(a);
  return 0;
   }
在运行上面的程序时出错,出错的原因是
 A) 构造函数的实参不允许是本类的对象
 B) 没有定义实现深层复制(深拷贝)的拷贝构造函数
 C) 构造对象a时实参与形参类型不符
 D) 系统不能生成缺省的拷贝构造函数  

(27)有如下程序:
   #include
   using namespace std;
   class Demo
   {
   public:
    Demo (){  cout<<"default constructor\n" }
    Demo (const Demo &x){  cout<<"copy constructor\n";}
   };
   Demo userCode(Demo b){ Demo c(b); return c;}
   int main()
   {
    Demo a,d;
    cout<<"calling userCode()\n";
    d=userCode(a)
    return 0;
   }
[JP3]执行上面程序的过程中,构造函数Demo()和Demo(const Demo &x)被调用的次数分别是[JP]
 A) 1和1[KG15][WB]    B) 1和2 C) 2和3  D)2和4  

(28)已知在函数func中语句this->ff=0;与语句ff=0;的效果完全相同。对于这一现象,下列表述中错误的是
 A) ff是某个类的数据成员,func是该类的友元函数
 B) ff是某个类的数据成员,func是该类的成员涵数
 C) this->ff和ff是同一个变量
 D) func不是一个静态成员函数  

(29)有如下程序:
   #include
   using namespace std;
   class Base
   {
   public :
   Base(){ cout<<"BB"; f(); }
   void f(){ cout<<"Bf";}
   };  ]

   class Derived:public Base
   {
   public :
Derived(){ cout<<"DD";}
void f() { cout<<"Df";}  ]
   };

   int main(){ Derived d; return 0;}
执行上面的程序将输出
 A) BBBfDD  B) BBDfDDDf C) DD  D) DDBBBf

(30)下列说法中错误的是
 A) 公有继承时基类中的public成员在派生类中仍是public成员
 B) 私有继承时基类中的protected成员在派生类中仍是protected成员
 C) 私有继承时基类中的public成员在派生类中是private成员
 D) 保护继承时基类中的public成员在派生类中是protected成员  
(31)下面是关于派生类声明的开始部分,其中正确的是
 A) class virtual B: publice A  
 B) virtual class B: publice A
 C) class B: public A virtal  
 D) class B: virtual public A

(32)在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是
 A) 后缀一元运算符    B) 前缀一元运算符
 C) 无操作数的运算符  D)二元运算符  

(33)关于关键字class和typename,下列表述正确的是
 A) 程序中所有的typename都可以替换为class
 B) 程序中所有的class都可以替换为typename
 C) A)和 B)都正确
 D) A)和 B)都不正确  

(34)有如下程序:
   #include
   #include
   using namespace std;
   class CSum
   {  int x,y;
   public :
CSum(int x0,int y0):x(x0),y(y0){}
friend ostream& operator<<(ostream& os, const CSum& xa)
{   os<}  ]
   };
   int ma in(){
CSum y(3,5);
cout<cout<return 0;  ]
   }
执行上面程序的输出是
 A) 88  B) ****88 C) ****8****8  D) 8****8

(35)有如下程序:
   #include
   using namespace std;
   class Stack {
   public :
Stack(unsigned n=10): size(n){ rep_=new int[size]; top=0;}
Stack(Stack& s): size(s.size)
{
   rep_=new int[size];
   for(int i=0;i   top=s.top;
}
~Stack (){ delete[]rep_;}
void push (int a) {rep_[top]=a; top++;}
int pop(){ --top; return rep_[top];}
bool isEmpty() const {return top= =0;}  ]
   privat[WB] e:
int*rep_;
unsigned size, top;  ]
   };
   int main()
   {
  Stack s1;
  for(int i=1;i<5;i++) s1.push(i);
  Stack s2(s1);
  for(i=1;i<3;i++) cout<  s2.push(6);
  s1.push(7);
  while(!s2.isEmpty()) cout<  return 0;
   }
执行上面程序的输出是
 A) 4,3,2,1,[KG13][WB]   B) 4,3,6,7,2,1,
 C) 4,3,6,2,1,          D) 1,2,3,4,
 

 二、 填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。  

(1)某二叉树中度为2的结点有18个,则该二叉树中有[ZZ(Z] 

______[ZZ)]个叶子结点。

(2)在面向对象方法中,类的实例称为[ZZ(Z]_____[ZZ)]。

(3)诊断和改正程序中错误的工作通常称为[ZZ(Z] _____ 

[ZZ)]。

(4)在关系数据库中,把数据表示成二维表,每一个二维表称为[ZZ

(Z]_____[ZZ)]。

(5)问题处理方案的正确而完整的描述称为[ZZ(Z]_____[ZZ)]。
(6)在下面函数的横线处填上适当的内容,使该函数能够利用递归

方法求解字符串str的长度(不得使用系统提供的字符串处理函

数)。
   int GetLen(char*str)
     {
       if([ZZ(Z]______[ZZ)])return[ZZ(Z]_____[ZZ)];
       else return 1+GetLen(str+1);
     }

(7)下列程序的输出结果是[ZZ(Z]______[ZZ)]。
   #include
   #include
   using namespace std;
   void fun(const char*s, char &c){ c=s[strlen(s)/2];}
   int main()
   {
     char str[]="ABCDE";
     char ch= str[1];
     fun(str,ch);
     cout<     return 0;
   }

(8)在下面程序的横线处填上适当的内容,使程序执行后的输出结果为1/2005。
   #include

   using namespace std;
   class Date
   {
   public:[WB] 
Date(int m=1,int y=0):month(m),year(y) {}
void Print() { cout<[ZZ(Z] ______[ZZ)]operator+(const Date & dl,const Date & d2);  ]
   private:
     int month,year;
   };
     [ZZ(Z]_____[ZZ)]operator+(const Date & d1,const Date & d2)
   {
     int year,month;
     year=d1.year+d2.month;
       year+=(month-1)/12;
       month=(month-1)%12+1;
       return Date(month,year);
   }
   void main()
   {
       Date d1(3,2004),d2,d3(10);
       d2=d3+d1;
       d2.Print();
   }

(9)在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。
   #include
   using namespace std;
   class A
   {
   public: A(){ cout<<'A';}
   };
   class B:[ZZ(Z]______[ZZ)]
   {
   public: B(){ cout<<'B';}
   };
   class C:[ZZ(Z]______[ZZ)]
   {
   public: C(){ cout<<'C';}
   };
   class D:public B,public C
   {
   public: D() { cout<<'D';}
   };
   void main() {D obj;}

(10)Staff类含有int型数据成员ID,两个Staff对象相等是指它们的ID相同。下面的函数重载了运算符 == ,它用来判断两个Staff对象是否相等,相等时返回true,否则返回false。请将横线处缺失部分补充完整。
   bool Staff:: Staff ==(const Staff *s)
   {
     return ([ZZ(Z]______[ZZ)]);
   }

(11)以下函数模板max的功能是:返回数组a中最大元素的值。请将横线处缺失部分补充完整。
   template T max(T a[],int n)
   { T m=a[0];
     for (int i=1; i       if(a[i]>m)[ZZ(Z]______[ZZ)];
     return m;
   }

(12)下面程序的执行结果是[ZZ(Z]______[ZZ)]。
   #include
   #include
   using namespace std;
   void main()
   {
     cout<     cout<<"Hello"<   }

浏览该文章的用户为您推荐了该信息: 
       
   
   
 
站内检索:
栏目导航
本月授课安排
阅读排行