|
1、 打開(kāi)STUD表,按姓名查詢?nèi)我粚W(xué)生的信息。若找到,顯示該生信息;否則,顯示“查無(wú)此人!”。 解:clear use stud accept "請(qǐng)輸入姓名:" to xm loca for 姓名=xm if found() disp else "查無(wú)此人!" endif use 2、 計(jì)算1!+2!+3!+……+10!之和。 解:s=0 k=1
for i=1 to 10
k=k*i
s=s+k
endfor
s
解釋:第一次運(yùn)行時(shí): s=0;k=1; 進(jìn)入for循環(huán),i=1,k=k*i(1=1*1),s=s+k(1=0+1);此時(shí)k=1,s=1; 第二次運(yùn)行: 進(jìn)入for循環(huán),i=2,k=k*i(2=1*2),s=s+k(3=1+2);此時(shí)k=2,s=3; 第三次運(yùn)行: 進(jìn)入for循環(huán),i=3,k=k*i(6=2*3),s=s+k(9=3+6);此時(shí)k=6,s=9; ………………………… s就是每次循環(huán)的總和,k就是每次運(yùn)算的(1!,即第一次k=1!,第二次k=2!,第N次,k=N?。?。 3、編寫程序求,(1)3!+8!+11! (2)(4!+7?。?/span>*3! (3)求100以內(nèi)能被3整除的數(shù) 解:(1)s=0 k=1
for i=1 to 3
k=k*i
endfor
t=1
for i=1 to 8
t=t*i
endfor
p=1
for i=1 to 11
p=p*i
endfor
s=s+k+t+p
"3!+8!+11!=",s (2)s=0 k=1
for i=1 to 4
k=k*i
endfor
t=1
for i=1 to 7
t=t*i
endfor
p=1
for i=1 to 3
p=p*i
endfor
s=(k+t)*p
"(4!+7?。?/span>*3!=",s (3)for i=1 to 100 if i/3=int(i/3) i endif endfor 4、100以內(nèi)所有能被3整除的整數(shù)的和。 解:clear s=0 for i=1 to 100 if i%3=0 s=s+i endif endfor "100以內(nèi)所有能被3整除的整數(shù)的和是:",s 5、(1) 1~100奇數(shù)求和, (2) 1~100求和 解:(1)題程序如下: set talk off
s=0
i=1
do while i<=100
s=s+i
i=i+2
enddo
s
(2)題程序如下: set talk off
s=0
i=1
do while i<=100
s=s+i
i=i+1
enddo
s
6、顯示出100至200的所有奇數(shù)并每行顯示6個(gè) 解:clea A=0 FOR I=100 to 200 if mod(i,2)#0 A=A+1 IF A=6 I A=0 ELSE I ENDI endi endf retu 7、VF編程,1到100之間,所有即是3的倍數(shù)又是7倍數(shù)的自然數(shù)之和 解:s=0 for i=1 to 100
if ((i%3=0) and (i%7=0))
s=s+i
endif
next i
s
8、任意輸入三個(gè)數(shù),按從大到小或從小到大順序排列。 解:dimension a(3) input "3個(gè)數(shù)" to a(1) input "3個(gè)數(shù)" to a(2) input "3個(gè)數(shù)" to a(3) for i=1 to 2
for j=2 to 3
if a(i)<a(j) then
s=a(i)
a(i)=a(j)
a(j)=s
endif
endfor
endfor
a(1),a(2),a(3)
9、一: 求一個(gè)學(xué)生表(XSB)中男女入學(xué)成績(jī)的平均分, 用Do while語(yǔ)句實(shí)現(xiàn) 二:求一個(gè)成績(jī)表(CJB)中,有成績(jī)和等級(jí)兩個(gè)字段,要求根據(jù)學(xué)生的成績(jī)確定等級(jí),具體規(guī)定如下: 成績(jī)?cè)?span lang=EN-US>85分以上的等級(jí)為“優(yōu)秀”,成績(jī)?cè)?span lang=EN-US>70分以上的等級(jí)為“良好”,成績(jī)?cè)?span lang=EN-US>60以上的等級(jí)為“及格”,低于60的等級(jí)為“不及格”。 解:如果非要用dowhile 語(yǔ)句請(qǐng)用下面那個(gè),一個(gè)一個(gè)統(tǒng)計(jì) set talk off
use xsb
count to m for 性別="男" count to n for 性別="女" sum 入學(xué)成績(jī) to a for 性別="男" sum 入學(xué)成績(jī) to b for 性別="女" "男生入學(xué)成績(jī)平均分為:",a/m "女生入學(xué)成績(jī)平均分為:",b/n set talk on
retu
*---------------------------------------
set talk off
clea
m=0
n=0
a=0
b=0
use xsb
go top
do while !eof()
if 性別="男" m=m+1
a=a+入學(xué)成績(jī) else
n=n+1
b=b+入學(xué)成績(jī) endif
skip
enddo
"男生入學(xué)成績(jī)平均分為:",a/m "女生入學(xué)成績(jī)平均分為:",b/n set talk on
retu
第二題:clear use cjb
cj=成績(jī) do while not eof()
do case
case cj>=85
replace 等級(jí) with "優(yōu)秀" case cj>=70.and.cj<85
replace 等級(jí) with "良好" case cj>=60.and.cj<70
replace 等級(jí) with "及格" case cj<60.and.cj>0
replace 等級(jí) with "不及格" endcase
skip
enddo
use
return
10、s=1*2*3*4*……*n 求s不大于400000時(shí)n的最大值。 解:clear s=1 n=1 do while .t. s=s*n if s>=400000 exit endif n=n+1 enddo n-1 11、求1!+2!+3!+4!+5!+...10!詳細(xì)的編程。 解:CLEAR s=0 b=1 FOR i=1 TO 10 FOR j=1 TO i b=b*j ENDFOR s=s+b b=1 ENDFOR s 12、1~100間能被3或5整除的整數(shù)的和? 解:set talk on clear sum=0 FOR i =1 TO 100 if i%3=0 or i%5=0 sum=sum+i ENDIF endfor "和為:",sum SET TALK off 13、編程求出1到300以內(nèi)能被3或7整除的數(shù)的平方和。 解:clea s=0
for i=1 to 300
if i%3=0.or.i%7=0
s=s+i*i
endif
endfor
s
retu
14、(1).輸入一年份,判斷是否為閏年。 (2).幫我編一個(gè)求“打折商品”的程序。 解:(1)clear set talk off
input "請(qǐng)輸入年份:"to n msg="年不是閏年" if mod(n,4)=0 and mod(n,100)<>0 or mod(n,400)=0
msg="年是閏年"
endif
n,msg
set talk on
(2)clear SET TALK OFF
INPUT "請(qǐng)輸入商品價(jià)格:" TO A INPUT "請(qǐng)輸入折扣數(shù):" TO C S=A*0.1*C
"折后價(jià)格為:",S SET TALK ON
15、一:顧客訂購(gòu)機(jī)票,若買到二十張以上,則優(yōu)惠15%若買到十張以上,則優(yōu)惠10%?,F(xiàn)要求編一個(gè)程序在顧客輸入定票數(shù)后直接現(xiàn)實(shí)價(jià)格 二:在學(xué)生表中找到張三的資料,若入??偡执笥?/span>540,則現(xiàn)實(shí)其學(xué)號(hào),出生年月,專業(yè) 解:一、clear input "請(qǐng)輸入定票數(shù):" to x do case
case x<10
y=x
case x>=10 and x<20
y=0.9*x
other
y=0.85*x
endcase
"應(yīng)付價(jià)格為:",y 二、clear use 學(xué)生表 loca for 姓名="張三" if 入校總分>540 學(xué)號(hào),出生年月,專業(yè) endif
use
16、用vf編程輸出如下圖形: ************* *********** ********* ******* ***** *** * 解:clear for i=7 to 1 step -1 space(7-i) for j=2*i-1 to 1 step -1 "*" endfor Endfor 17、vf 用循環(huán)語(yǔ)句編程 輸出下面圖形: * * **** *** *** *** ***** ***** ** ****** ******* * 解:CLEAR FOR i=1 TO 8 STEP 2 FOR a=1 TO i "*" ENDFOR " " FOR b=1 TO i "*" ENDFOR " " FOR c=1 TO (8+1-i)/2 "*" ENDFOR Endfor 18、用循環(huán)語(yǔ)句編寫計(jì)算10! 解:set talk off clear t=1 for n=1 to 10 t=t*n endfor '10!=',t Return 19、n=0 do while .T. 條件為真是建立循環(huán) n=n+1 循環(huán)一次,N增加1 if n/30=int(n/30) 判斷N是否能被30整除 n 可以整除,顯示N的值 if n>=90 繼續(xù)判斷N是否大于等于90 exit 大于等于90時(shí)執(zhí)行EXIT退出DO while循環(huán)語(yǔ)句 endif endif enddo return 結(jié)果為30,60,90.當(dāng)?shù)扔?span lang=EN-US>90時(shí).第二個(gè)IF語(yǔ)句條件成立,執(zhí)行EIXT退出整個(gè)DO while 語(yǔ)句 20、由鍵盤輸入一個(gè)字符串,要求逆序輸出該字符串. 解:CLEAR ACCEPT "請(qǐng)輸入一個(gè)字符串:" TO S1 A=LEN(S1) I=A S2="" DO WHILE I>=1 S2=S2+SUBSTR(S1,I,1) I=I-1 ENDDO "這個(gè)字符串的逆序是:",S2 21、用if做 從鍵盤輸入三個(gè)數(shù),按從大到小排列后,放入A.B.C.中,并輸出A.B.C. clear
"請(qǐng)輸入3個(gè)數(shù)" input "第一個(gè) " to a input "第二個(gè) " to b input "第三個(gè) " to c if a<b
d=a
a=b
b=d
endif
if a<c
d=a
a=c
c=d
endif
if b<c
d=b
b=c
c=d
endif
"a="+LTRIM(STR(a)),"b="+LTRIM(STR(b)),"c="+LTRIM(STR(c))
return
22、用do case做 在scorese表中查找指定身份證號(hào)碼的學(xué)生,并按他的“語(yǔ)文成績(jī)”給出相應(yīng)的評(píng)語(yǔ) 語(yǔ)文成績(jī) 100-90 優(yōu)秀 89-70 良好 69-60 合格 60以下 不合格 解:clear use scorese accept "查詢學(xué)生身份證號(hào)碼:" to nu locate for 身份證號(hào)=nu do case case 語(yǔ)文成績(jī)<60 "不合格" case 語(yǔ)文成績(jī)<69 "合格" case 語(yǔ)文成績(jī)<89 "良好" case 語(yǔ)文成績(jī)<=100 "優(yōu)秀" endcase return 23、當(dāng)x>=0時(shí)y=8*x+2,當(dāng)x<0時(shí)y=2-8*x計(jì)算y的值 用do while 解:do while .t. input to x if x>=0 y=8*x+2 else y=2-8*x endif y wait "是否繼續(xù)y/n" to s if s="n" or s="N" exit endif enddo 24、從鍵盤輸入數(shù)據(jù)A(可以是C,D,N,L和Y型等),通過(guò)類型判斷,輸入其數(shù)據(jù)類型的漢字說(shuō)明(如A的值為“OK!”,那么輸出應(yīng)為:OK!--字符型數(shù)據(jù))。 解:clear input "請(qǐng)輸入數(shù)據(jù)" to A T=vartype(A)
A
do case
case T='C'
"--字符型" case T='D'
"--日期型" case T='G'
"--通用性" case T='Y'
"--貨幣型" case T='T'
"日期時(shí)間型" case T='L'
"--邏輯型" case T='N'
"--數(shù)值型" endcase
return
25、VFP中,if語(yǔ)句 do case語(yǔ)句 等區(qū)別。 解:和do case都是條件型語(yǔ)句: IF是只有兩種情況下使用的,就是,如果條件成立,怎么處理,否則,怎么處理,當(dāng)然,里面還可以再有嵌套。 而DO CASE則表示,當(dāng)什么情況下,怎么處理;當(dāng)什么情況下怎么處理;。。??梢詧?zhí)行的是多條件,里面也可以再加嵌套。 26、在VFP中怎么用 DO WHILE語(yǔ)句編程 顯示所有100以內(nèi)的6的倍數(shù)的數(shù),并求這些數(shù)的和 解:s=0 i=1 do while i<=100 if mod(i,6)=0 i s=s+i endif i=i+1 enddo "和",s 27、用VFP編程。給出一個(gè)百分制成績(jī),要求輸出成績(jī)等級(jí)A、B、C、D、E。用if 語(yǔ)句。 解:clear input "輸入考試成績(jī)" to chj if chj<60 dj="E" else if chj<70 dj="D" else if chj<80 dj="C" else if chj<90 dj="B" else dj="A" endif endif endif endif dj 28、用條件語(yǔ)句編寫程序求下面的分段函數(shù)Y的值 VF。 當(dāng)x<2時(shí) ,y=x; 當(dāng)2<=x<=10時(shí) y=x; 當(dāng)x>10時(shí) y=-3x; clear input "請(qǐng)輸入x的值:" to x do case case x<2 y=x case x>=2 and x<=10 y=x &&這里可能是你的題寫錯(cuò)了,怎么兩個(gè)都是y=x,你自己看到題把這改下 case x>10 y=-3*x endcase "y的值是:",y 29、編程打印由數(shù)字組成的圖案,圖案如下。 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 解:dimen a(6,6) for i=1 to 6 for j=1 to i a(j,1)=1 a(j,2)=2 a(j,3)=3 a(j,4)=4 a(j,5)=5 a(j,6)=6 endfor endf for i=1 to 6 for j=1 to i a(i,j) endfo Endf 30、for循環(huán)也叫當(dāng)型循環(huán),意思是當(dāng)條件成立時(shí)執(zhí)行的循環(huán)。 do while 循環(huán)也叫直到型循環(huán),意思是直到條件不成立結(jié)束循環(huán)。 scan循環(huán)也叫表掃描循環(huán),根據(jù)當(dāng)前表的記錄數(shù)進(jìn)行循環(huán),每循環(huán)一次表記錄指針下移一個(gè)記錄,直到數(shù)據(jù)表結(jié)束 31、打印學(xué)生表(學(xué)生.dbf),中全體女生的信息。(姓名,性別,年齡,專業(yè),等內(nèi)容 解:1、用scan for...endscan 語(yǔ)句 use 學(xué)生 scan all for 性別="女" 姓名,性別,年齡,專業(yè) endscan 2、用do while...enddo語(yǔ)句 use 學(xué)生 do while !eof() if 性別="女" 姓名,性別,年齡,專業(yè) endif skip enddo 31、vf中,do while !eof(),是什么意思呀 解:!指不等于 eof()函數(shù)用于測(cè)試指針是否指向文件尾. ! eof() 等價(jià)于 not eof() do while !eof() 循環(huán)語(yǔ)句,判斷是指針是否到文件尾. 條件成功,建立循環(huán),否則直接跳出循環(huán)體. 32、1、首先,EOF(x)是一個(gè)函數(shù),它的返回的函數(shù)值是boolean型:當(dāng)數(shù)據(jù)指針指向文件末尾時(shí),它的值為true,當(dāng)指針未指向文件末尾時(shí)它的值為false. 函數(shù)中的x是一個(gè)整型數(shù),代表打開(kāi)文件時(shí)定義的文件號(hào)。 一般eof函數(shù)跟讀取順序文件相聯(lián)系,以防到達(dá)文件末尾時(shí)還要讀取數(shù)據(jù)而出現(xiàn)錯(cuò)誤。使用方法是:先打開(kāi)文件,每讀一個(gè)數(shù)據(jù)后用eof判斷是否到了文件末尾,如果不到則繼續(xù)讀取,如果到達(dá)結(jié)尾(eof()=true)則說(shuō)明已經(jīng)到達(dá)文件末尾,不存在沒(méi)有讀取的數(shù)據(jù)了,所以立即停止讀取。 2、not eof(1)的含義:“1”表示打開(kāi)文件時(shí)使用的通道號(hào)為1#。它的意思是當(dāng)文件正在讀取時(shí),如果指針沒(méi)有到達(dá)結(jié)尾,eof(1)=false,根據(jù)布爾代數(shù)運(yùn)算規(guī)則,not eof(1)的值為true;而當(dāng)指針到達(dá)文件結(jié)尾時(shí),not eof(1)的值為false。 3、do while not eof(1)是一個(gè)循環(huán)語(yǔ)句,它的循環(huán)條件是not eof(1)=true,剛才分析過(guò),這個(gè)取值表示指針沒(méi)有到達(dá)文件結(jié)尾。而停止循環(huán)的條件是not eof(1)=false,這個(gè)值只有當(dāng)指針文件到達(dá)尾部時(shí)才取得。 所以,這個(gè)循環(huán)條件是指:當(dāng)指針沒(méi)有到達(dá)文件結(jié)尾時(shí),繼續(xù)循環(huán),而一旦指針到達(dá)文件結(jié)尾,則停止循環(huán)。 舉一個(gè)讀取順序文件的例子吧: open d:\a.txt for input as #1
do while not eof(1)
input #1,a
loop
這樣就把文件d:\a.txt 中的數(shù)據(jù)全部讀了一遍。當(dāng)然讀取之后再做什么運(yùn)算或賦值是還要另外編程解決地。 33、在VB中 do while not eof(1)..................loop.....是什么意思 解:1 eof()函數(shù)為判斷是否到文件尾函數(shù),當(dāng)?shù)轿矔r(shí)eof()函數(shù)為真,不到尾時(shí)函數(shù)值為假。 2 do While是當(dāng)型循環(huán),當(dāng)條件滿足時(shí)執(zhí)行循環(huán)體,條件不滿足時(shí)退出循環(huán)。 所以 not eof()為真代表沒(méi)到文件尾,所以此句為沒(méi)到文件尾就執(zhí)行循環(huán)體。 34、for ...to,用在知道循環(huán)次數(shù)的時(shí)候比較方便 DO WHILE....LOOP 用在在循環(huán)時(shí)判斷條件,條件滿足執(zhí)行,不滿足就退出 例如你要計(jì)算1+2+3+...+100的值則用for to 要計(jì)算1+2+3+4+5+...什么時(shí)候大于1000,并返回最后一個(gè)數(shù)時(shí)用DO WHILE....LOOP 35、用VF, do while 求等差數(shù)列和 解:SET TALK OFF i=4 s=0 DO WHILE i<=14 s=s+i i=i+2 ENDDO "和是:",s SET TALK ON 36、用vf的DO WHILE語(yǔ)句怎么編寫乘法口訣 解:CLEAR i = 1 DO WHILE i <= 9 j =1 DO WHILE j <= i STR(j,2) + " * " + STR(i,1) + " = " + STR(i * j,2) + " " j = j + 1 ENDDO i = i + 1 CHR(13) + CHR(10) ENDDO |
|
|