实验六 结构化程序设计.doc
实验六 结构化程序设计一、 实验目的1. 掌握Visual FoxPro程序建立、修改、运行的方法。2. 掌握结构化程序设计的基本思路和方法。3. 掌握顺序结构、分支结构和循环结构的设计方法。4. 掌握子程序调用和参数传递的设计方法。二、 实验内容及操作步骤1.从键盘输入一个姓名,在xsqk表中查询,显示该同学的记录信息(程序保存为:实验1.prg)。 (提示:用locat for 语句定位)程序代码如下:use xsqk.dbf excluinput "姓名:" to xmbrow all for 姓名=xmuse或者:use xsqk.dbf excluaccept "姓名:" to xmloca for 姓名=xm?学号,姓名,出生日期,性别,专业,入学分数use 操作步骤: 选择“文件/新建/程序”,打开程序编辑窗口。 在程序编辑窗口输入上述程序代码。 选择“文件/保存”命令,保存文件名为“实验1.prg”。 在命令窗口,执行命令: DO 实验1。 观察程序运行结果。2. 输入圆的的半径,计算圆的周长和面积(程序保存为:实验2.prg)。程序代码如下:clearinput "输入圆的的半径:" to rL=2*3.14*rS=3.14*r2?"圆的周长:",L?"圆的面积:",s或者:clearinput "输入圆的的半径:" to rL=2*3.14*rS=3.14*r2?"半径为"+str(r)+"的圆的面积是"+str(s) &&str()是转换函数?"半径为"+str(r)+"的圆的周长是"+str(l) 操作步骤同实验1。3.从键盘接收一个数,判断该数是奇数还是偶数,如果是奇数就显示“此数是奇数”,如果是偶数就显示“此数是偶数”。(程序保存为:实验3.prg)。程序代码如下:clearinput "输入一个数:" to numif num%2=0?str(num)+"是偶数"else?str(num)+"是奇数"Endif或者cleainput "输入一个数:" to numif mod(num,2)!=0?"此数是奇数"else?"此数是偶数"Endif操作步骤同实验1。4.在xsqk表中,查询姓名为“刘静”的记录,如果找到把该记录打上删除标记,没有找到显示“查无此人!” (程序保存为:实验4.prg)。程序代码如下:use xsqk.dbf exclulocate all for 姓名="刘静"if .not. eof()delete else ?"查无此人!" endifuse操作步骤同实验1。5.输入一个年号,判断是否为闰年(判断闰年的条件是:年份能被400整除的,或年份能被4整除但不能被100整除的是闰年)。写出程序代码:clearinput "输入一个年号:" to yeardo case case mod(year,400)!=0 ?"此年是闰年" otherwise mod(year,4)!=0 and mod(year,100)!<>0 ?"此年是闰年" endcase6.百货公司为了促销,采用购物打折的优惠方法。若每位顾客一次性购物:-1000元以上者,九五折优惠-2000元以上者,九折优惠-3000元以上者,八五折优惠-5000元以上者,八折优惠编写程序,输入购物款数,计算并输出优惠价。写出程序代码:ClearInput “购物款:” to gwkDo case Case gwk<=1000 yhj=gwk*0.95 Case gwk<=2000 yhj=gwk*0.9 Case gwk<=3000 yhj=gwk*0.85 otherwise gwk<=5000 yhj=gwk*0.8 endcase?"优惠价:",yhj7.输入一个成绩,判断其所在档次,档次划分为:90分以上优秀,8090分为良好,7080分为中等,6070为合格,60分以下为不合格。写出程序代码:Input “一个成绩:” to nDo case Case n>90 ?”优秀” Case n>80 and n<=90 ? “良好”Case n>70 and n<=80?”中等”Case n>60 and n<=70?”合格”Case n<60?”不合格”Endcase8.用DoWhile循环结构:统计sxqk表中入学分数超过570分的人数。写出程序代码:Use xsqkx=0Do while not eof() If 入学分数>570 X=x+1 Endif skipenddo?"入学分数超过570的人数:",x9.用FOR循环结构:统计sxqk表中入学分数超过570分的人数。写出程序代码:use xsqkx=0count to ngo topfor i=1 to n if 入学分数>570 x=x+1 endifskipendfor?"入学分数超过570的人数:",x10.用Scran指针循环结构:统计sxqk表中入学分数超过570分的人数。写出程序代码:Use sxqkX=0Go topScan for 入学分数>570 X=x+1Endscan?”入学分数超过570的人数:”,x11. 输出100以内能被3和7同时整除的自然数。写出程序代码:for i=0 to 100 if i%3=0 and i%7=0 ?i endifendfor12.编写出程序,令计算机从0开始计数,每计一个数,便判断该数是否为偶数,若是偶数则接着计下一个数;若是奇数则将其累加,若累加和大于250,则计数结束,若累加和不大于250则继续计数。最后给出计数次数和累加和。写出程序代码: i=0sum=0jscs=1do while sum<=250 i=i+1 jscs=jscs+1 if mod(i,2)=1 sum=sum+i endifenddo?"计数次数",jscs?"累加和",sum13.试用固定次数循环的嵌套格式编写一个打印九九乘法口诀表的程序。写出程序代码: clears=1for i=1 to 9 for j=1 to i s=i*j ?str(i,1)+"*"+str(j,1)+"="+str(s,2)+" " endfor ?endfor14.用子程序调用的方法求解圆的周长和面积,主程序满足能多次调用子程序求解。ClearDo while .T. Clear Wait "是否要计算圆的面积(y/n)"to answer If upper(answer)="y" Do e8_8a.prg Else Exit EndifEnddoClear2,10 say"圆的半径:"get bj default 0ReadS=3.14*bj*24,10 say"圆的面积"+str(s,10,2)Wait windowClearreturnClearDo while .T. Clear Wait "是否要计算圆的周长(y/n)"to answer If upper(answer)="y" Do e8_8a.prg Else Exit EndifEnddoClear2,10 say"圆的半径:"get bj default 0ReadS=3.14*bj*24,10 say"圆的周长"+str(s,10,2)Wait windowClearreturn