3.編程題
(1) 設(shè)計一個全局函數(shù)返回指定班級(編號)的學(xué)生人數(shù)。
解答:打開全局函數(shù)畫板,函數(shù)返回值類型選integer,函數(shù)名取stnum,參數(shù)傳遞方式為value,類型為string,名稱為bh。函數(shù)體如下:
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
函數(shù)的運行條件是已經(jīng)連接上數(shù)據(jù)庫xscj。
(2) 設(shè)計一個應(yīng)用,能求任意輸入兩個數(shù)的最大公約數(shù)。(提示:在一個窗口上設(shè)置兩個單行文本編輯框用來輸入整數(shù),一個命令按鈕求最大公約數(shù)并輸出,也可以定義一個求最大公約數(shù)的窗口函數(shù))
解答:創(chuàng)建一個工作空間test2,再創(chuàng)建一個應(yīng)用對象app,創(chuàng)建窗口對象w_main,窗口上添加三個單行文本編輯框sle_1、 sle_2和sle_3,其TEXT屬性都設(shè)為“”,再添一個命令按鈕cb_1,其TEXT屬性設(shè)為“求最大公約數(shù)”,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中輸入兩個整數(shù),單擊cb_1則sle_3中顯示最大公約數(shù)。 (3) 求Fibonacci數(shù)列的前20項之和。Fibonacci數(shù)列是指前兩項分別為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) 判斷一個數(shù)m是否是素數(shù)。 解答:程序代碼如下 int m,i for i=2 to m/2 if mod(m,i)=0 then exit end for if i messagebox("結(jié)果",string(m)+"不是素數(shù)") else messagebox("結(jié)果",string(m)+"是素數(shù)") end if (5) 用窮舉法找出1~100之間的質(zhì)數(shù)并顯示出來,分別使用WHILE、DO-WHILE、FOR循環(huán)語句。 解答:使用FOR循環(huán)語句的程序代碼如下,使用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以內(nèi)的素數(shù)",s)