程序改错
1、下列中有8大题,081班做前4题,082班做后四题。
2、程序改错题的要求是:原有语句不变,将正确语句用红色字体写在错误语句的右
侧,在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
3、交作业时,文件名类似为“公事管08212***”,发到相应的班级文件夹下的题号
文件夹下。
1、程序改错(5分)
下列程序的功能是计算分数数列2/1,3/2,5/3,……,m/n,m+n/m的前20项之和。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
nSum=0
m=2 &&数列中第一项的分子
n=1 &&数列中第一项的分母
FOR x=1 TO 20
nSum=nSum+m/n
y=m
m=m+n
n=y
ENDDO(endfor)
WAIT WINDOWS '前20项之和为'+STR(nSum,10,2)
2、程序改错(5分)
下列程序的功能是统计所有的“水仙花数”的个数,“水仙花数”是指一个三位数,其各位数字立方和等于该数本身,例如:153=13+53+33)。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
nCount=0
FOR n=100 TO 999 &&
n1=VAL(SUBS(STR(n,3),3,1))
n2=VAL(SUBS(STR(n,3),2,1))
n3=VAL(SUBS(STR(n,3),1,1))
IF n=n1^3+n2^3+n3^3
nCount=nCount+1
ENDIF
ENDFOR
WAIT WINDOWS '“水仙花数”的个数为',nCount
3、程序改错(5分)
下列程序的功能是统计一个字符串中包括多少个汉字(假设这些汉字均属于GB2312字符集),其基本算法是从字符串中依次取一个字符,如果其ASCII码值大于127,则为一个汉字内码的第一个字节。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
cString='微软(Microsoft)公司开发的视窗(Windows)操作系统' &&赋初值
nCount=0
DO WHILE LEN(cString)!=0
IF ASC(LEFT(cString,1))>127
nCount=nCount+1
cString=SUBSTR(cString,3)
ELSE
cString=SUBSTR(cString,2)
ENDIF
ENDDO
WAIT WINDOWS '汉字个数为'+STR(nCount)
4、程序改错(5分)
下列程序用于计算数列1,1/2,1/3,1/4,1/5,……,1/n之和,当某一数列项的值小于时停止计算。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
SET DECIMAL TO 2
n=1
nSum=0
DO WHILE .T.
IF 1/n<
exit
ENDIF
nSum=nSum+1/n
n=n+1
ENDDO
WAIT WINDOWS '该数列之和为'+STR(nSum,10,2)
5、程序改错(5分)
下列程序的功能是:将一个字符串中的各个单词的首字母组成其缩写形式(大写字母),其中,
字符串由多个英文单词组成且各单词之间用一个空格分隔,例如,对于字符串“central processing unit”,生成其缩写形式“CPU”。
其基本算法为:字符串左边加一个空格,然后依次检查字符串的每一个字符,如果该字符为字母且左边为空格,则该字母为首字母。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
cString='central processing unit' &&赋初值
cString=SPACE(1)+UPPER(cString)
cResult=SPACE(0)
FOR n=2 TO len(cString)
c=SUBSTR(cString,n,1)
IF BETWEEN(c,'A','Z') AND SUBSTR(cString,n-1,1)=SPACE(1)
cResult=cResult+c
ENDIF
ENDFOR
WAIT WINDOWS '缩写形式为'+cResult
6、程序改错(5分)
下列程序的功能是将二进制数转换成十进制数表示。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
nNumber=1011001 &&赋初值(认定它为二进制数)
cNumber=ALLTRIM(STR(nNumber))
nResult=0
FOR n=LEN(cNumber) TO 1 step -1
c=LEFT(cNumber,1)
IF c='1'
nResult=nResult*2+1
ELSE
nResult=nResult*2
ENDIF
cNumber=SUBSTR(cNumber,2)
ENDFOR
WAIT WINDOWS '十进制数表示为'+STR(nResult)
7、程序改错(5分)
下面的程序是用于将十进制数转换成二进制数表示。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
nNumber=37 &&赋初值(十进制数)
cResult=SPACE(0)
IF nNumber!=0
DO WHILE nNumber>0
n=MOD(nNumber,2) &&余数
nNumber=INT(nNumber/2)
cResult=STR(n,1)+cResult
ENDDO
ELSE
cResult='0'
ENDIF
WAIT WINDOWS '二进制数表示为'+ cResult
8、程序改错(5分)
下列程序的功能用于计算1~100之间的质数的个数(注:质数是指只能被1和自身整除的自然数)。
要求:
①项目中有一个程序文件Pcode,将下列程序输入到其中并进行修改;
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
nCount=0
FOR m=1 TO 100
bzs=.T.
FOR n=2 TO 9
IF MOD(m,n)=0 AND m#n
bzs=.F. &&不是质数
exit
ENDIF
ENDFOR
IF bzs
nCount=nCount+1
ENDIF
ENDFOR
WAIT WINDOWS '1~100之间的质数的个数为'+STR(nCount)。