计算机对口高考专业模拟1(1) 下载本文

I=8

DO WHILE I<=10 STORE 1 TO T,J

DO WHILE J<=I T=T*J J=J+1 ENDDO S=S+T I=I+1 ENDDO ?S RETURN

六.写程序结果(每题4分,共20分) 1. 有Visual Basic程序: Private Sub Form_Click()

Dim i As Integer,j As Integer i=10 Do

i=i+j

for j=10 to i step -3 i=i+j next j

Loop While i<50 Print i;j End Sub

2. 有Visual Basic程序:

Private Sub procl(x As Integer,y As Integer,z As Integer) x=3*z y=2*z z=x+y End Sub

Private Sub Command1_Click()

Dim x As Integer,y As Integer,z As Integer x=1:y=2:z=3 Call procl(x,x,z) Print x;x;z Call procl(x,y,y)

Print x;y;y End Sub

3. 有以下Visual FoxPro程序: CLEAR I=20 t=0

do while I>=1 j=2

do while j<= I-1 if int(I/j)= I/j exit endif j=j+1 enddo if j=I t=t+1 endif I=I-1 enddo ?t return

4. 有如下Visual FoxPro程序

主程序:MAIN.PRG

PUBLIC Z STORE 1 TO I,M X1=\X2=\Y=0

DO WHILE I<=3

X=VAL(LTRIM(X1)+REPLICATE(X2,I)) J=1

DO WHILE J<=2 DO EXA WITH X Y=Y+Z J=J+1

ENDDO M=M+J

?\,4)+\ ??\,4)+\ ??\,6) I=I+1 ENDDO RETURN 子程序:EXA.PRG PARAMETERS F

IF MOD(F,4)=0 Z=MOD(F,4)

ELSE Z=INT(F/4)

ENDIF

RETURN

运行上面的程序,显示的结果为: 5.有学生成绩表XSCJ.DBF,字段为:学号(C,10),姓名(C,8),数学(N,3,0),英语(N,3,0),记录数据如下:

Record# 学号 姓名 数学 英语 1 0811060101 肖天海 82 91 2 0811060202 王岩盐 63 95 3 0811060203 刘星魂 75 86 4 0811060105 张月新 94 73 5 0811060208 李明玉 78 67 其中:学号的前8位为班级编号。 有如下Visual FoxPro程序: CLEAR

SELECT * FROM XSCJ ORDER BY 学号 INTO DBF CJ USE CJ

DO WHILE .NOT. EOF()

STORE 0 TO PYSCJ,PSJCJ,YM,SM BJBM=SUBSTR(学号,1,8) NBJ=0 YM=英语 SM=数学

DO WHILE SUBSTR(学号,1,8)=BJBM

IF 数学

PYSCJ=PYSCJ+英语 PSJCJ=PSJCJ+数学 NBJ=NBJ+1 SKIP ENDDO

? BJBM,\:\,PYSCJ/NBJ,PSJCJ/NBJ,YM,SM

ENDDO

CLOSE DATABASE

运行上面的程序,显示的结果为:

七.程序改错(每题5分,共10分)

1.输入一个字符串,将所有的小写字母都转换为大写字母,输入的字符串以#号结尾。 Private Sub Form_Click()

Dim s1 As String, s2 As String, i As Integer, t As String s1 = InputBox(\输入字符串,#号结束\ i = 1

s2 = Mid(s1, i, 1) While t <> \

If t >= \ s2 = s2 + t i = i + 1

t = Mid(s1, i, i) Wend

Print \新字符串为:\End Sub

2.下面的程序是将一个十进制整数转换成二进制数,转换后按位放到一维数组a中,然后输出。如输入一个数据8,将输出1 0 0 0。程序中有两处错误,请改正。 Dim a(10) As Integer Dim k As Integer Dim yu As Integer

Dim i As Integer i = 1

k = InputBox(\Do While k <> 0

yu = k/2 a(i) = yu k = k \\ 2 i = i + 1 Loop

For yu = i To 1 Step -1 Print a(yu); Next yu

八、 程序填空(每空5分,共35分)

1.单击窗体后输入1个不小于6的正整数,然后输出该数所有的质数因子(如输入6则输出“ 2 3”,输入60则输出“ 2 2 3 5”,等等)。 Private Sub f(k As Integer) Dim i As Integer i = 2

Do While k > 1

If ____________ Then k = k / i: Print i; Else i = i + 1 Loop End Sub

Private Sub Form_Click() Dim n As Integer Do

n = InputBox(\ Loop ______________ Call f(n) Print End Sub

2. 单击“读文件”按钮将文本文件读入并逐行在列表框控件List1中显示;然后单击“分解”按钮将List1每行中的英文字母、其他字符分别显示在List2、List3各行中。

运行结果如下图所示。

Private Sub Command1_Click() '读文件 Dim s As String

Open \ While Not EOF(1)

Line Input #1, s: List1.AddItem s Wend Close #1 End Sub

Private Sub Command2_Click() '分解

Dim i As Integer, n As Integer, s1 As String, s2 As String For i = 1 To_______________ n = Len(List1.List(i - 1)) ReDim a(n) As String * 1 For j = 1 To n

a(j) = Mid(List1.List(i - 1), j, 1) Next j

s1 = \ For j = 1 To n

If a(j) >= \Else s2 = s2 + a(j)

Next j

List2.AddItem s1 List3.AddItem s2 Next i End Sub

3.在Visual FoxPro中,某数据库有以下三个表:

“选课”表:学号(C,6),课程号(C,8),成绩(N,5,1)内容见下表。 “课程”表:课程号(C,8),课程名(C,10) 建立表单,运行时实现以下功能:

(1) 选择学号、课程号,可查询该生该单科成绩及名次(假设分数均不相同) (2) 可查询该生所选考试科目中成绩合格的科目名称

“查询”按钮的CLICK事件代码如下: xh=thisform.combo1.value kh=thisform.combo2.value

x=thisform.commandgroup1.value __________________________ do case case x=1

sele 成绩 from 选课 where 学号=xh and 课程号=kh into array ax sele 学号,成绩 from 选课 where 课程号=kh order by 成绩 desc into table temp1 use temp1

loca for 学号=xh do while not bof() mc=mc+1 skip -1 enddo

thisform.text1.value=str(ax,5,1)+\名次:\

case x=2

sele 选课.学号,课程名,成绩 from 选课,课程 ____________________________ use temp2 k=space(0)

do while not eof() if 成绩>=60

k=k+课程名+space(2) endif

skip enddo

_________________________________ endcase