3.编程题
(1) 设计一个全局函数返回指定班级(编号)的学生人数。
解答:打开全局函数画板,函数返回值类型选integer,函数名取stnum,参数传递方式为value,类型为string,名称为bh。函数体如下:
int li_sc
select rs into:li_sc from banji where bjbh=:bh;
if sqlca.sqlcode=0 then
return li_sc
else
return -1
end if
函数的运行条件是已经连接上数据库xscj。
(2) 设计一个应用,能求任意输入两个数的最大公约数。(提示:在一个窗口上设置两个单行文本编辑框用来输入整数,一个命令按钮求最大公约数并输出,也可以定义一个求最大公约数的窗口函数)
解答:创建一个工作空间test2,再创建一个应用对象app,创建窗口对象w_main,窗口上添加三个单行文本编辑框sle_1、 sle_2和sle_3,其TEXT属性都设为“”,再添一个命令按钮cb_1,其TEXT属性设为“求最大公约数”,cb_1的clicked事件脚本为:
int li_a,li_b,li_c,li_t
li_a=integer(sle_1.text)
li_b=integer(sle_2.text)
if li_a li_t=li_a li_a=li_b li_b=li_t end if li_t=mod(li_a,li_b) do while li_t<>0 li_a=li_b li_b=li_t li_t=mod(li_a,li_b) loop li_c=li_b; sle_3.text=string(li_c) sle_1、 sle_2中输入两个整数,单击cb_1则sle_3中显示最大公约数。 (3) 求Fibonacci数列的前20项之和。Fibonacci数列是指前两项分别为0和1,从第3项起,每一项都是前两项之和。例:0,1,1,2,3,5,8,13,21,…。 解答:程序代码如下 int li_f1,li_f2,li_f3,li_i,li_s li_f1=0 li_f2=1 li_s=li_f1+li_f2 for li_i=3 to 20 li_f3=li_f1+li_f2 li_s+=li_f3 li_f1=li_f2 li_f2=li_f3 end for (4) 判断一个数m是否是素数。 解答:程序代码如下 int m,i for i=2 to m/2 if mod(m,i)=0 then exit end for if i messagebox("结果",string(m)+"不是素数") else messagebox("结果",string(m)+"是素数") end if (5) 用穷举法找出1~100之间的质数并显示出来,分别使用WHILE、DO-WHILE、FOR循环语句。 解答:使用FOR循环语句的程序代码如下,使用WHILE、DO-WHILE语句程序略。 int m,i string s="" for m=1 to 100 for i=2 to m/2 if mod(m,i)=0 then exit end for if i>=m/2 then s=s+string(m)+"," end for messagebox("100以内的素数",s)