《算法與程序設(shè)計》復(fù)習提綱要點
《《算法與程序設(shè)計》復(fù)習提綱要點》由會員分享,可在線閱讀,更多相關(guān)《《算法與程序設(shè)計》復(fù)習提綱要點(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、算法和算法的表示 1 .使用計算機解決問題的一般過程 ——分析問題;尋找解決途徑和方法;用計算機進行處理 2 .算法的特征 (1)有窮性。一個算法必須保證它的執(zhí)行步驟是有限的,即它是能終止的。 (2)確定性。既算法中的每個步驟必須有確切的含義。 (3)可執(zhí)行性。算法中的每個步驟都要實踐能做的,而且能在有限的時間內(nèi)完成。 (4)有0個或多個輸入。 (5)有一個或多個輸出。 3 .算法的表布方法 (1)自然語言 就像寫文章時所列的提綱一樣,有序地用簡潔的語言加數(shù)學(xué)符號來描述。 (如:課本10頁) (2)流程圖(Flowchart ) 破理框 O::框中艇要處理解瑤壕嫩一個
2、大匚和一今出匚. 幽人品出框口:用來表示物據(jù)的就兒或陌結(jié)果的輸出. 酬斷框Q 用程示分支惜禮召一小大口和多個出口. ④隹麟6用于的因解下湎開端程器 ⑤開始期框匚:用來表示管法的開蛤和結(jié)范一個篁缶只能有一個開始處,但碉有多個造束處. 常用的流程圖構(gòu)件有: (3)程序 (4)偽代碼一一結(jié)構(gòu)清晰、代碼簡單、 可讀性好,并且類似自然語言。 介于自 然語言與編程語言之間。(如:課本11頁 最上方),下面是一段偽代碼: If A<0 Then 無解 Else 有解 End If 五、VB程序設(shè)計初步 1 .對象、屬性、類、事件和事件處理的概念 [此部分復(fù)習以記憶為主]
3、(1)對象是客觀存在的事物或概念。它有兩個特點:狀態(tài)和行為。 (2) 一個對象的狀態(tài)是通過若干個屬性( property )來描述的;行為是指對屬性進行操作和處理的方法( method)。在面 向?qū)ο蟮某绦蛟O(shè)計中,一個對象是由一組對象狀態(tài)的數(shù)據(jù)和一組描述處理對象屬性的方法的代碼構(gòu)成的。對象的屬性定義其 外觀,方法定義其行為,事件定義其與用戶的交互。 (3)類(class )是對相同性質(zhì)的對象的一種抽象,而一個對象則是類的一個“實例”。 (4)事件(event)就是發(fā)生在對象上的事情,通常是由用戶在對象上激發(fā)的一種動作。一個事件的發(fā)生,可以引起某個 對象上某個方法(事件處理過程)的執(zhí)行,
4、即由某個事件驅(qū)動了相應(yīng)的事件處理過程的執(zhí)行。這就是面向?qū)ο蟪绦蛟O(shè)計中的 事件驅(qū)動概念。例: Private Sub Command1_Click() Print (S) End Sub 對象名為Command 1 Click為應(yīng)用于對象Command止的事件 Command1.Caption ="中華" 對象名為Command 1 Caption為屬性,"中華"為屬性值 List1.AddItem (Str(y(m))) 對象名為List1 , AddItem為方法,Str(y(m))為添加進去的條目 ******點(.)前面的都是對象名,點(.)后面的可以屬性也可以方法,區(qū)
5、別在于一一屬性是相對“靜態(tài)”的特征,而方法 則是有“動作”的 VB應(yīng)用程序的界面設(shè)計與調(diào)試一一重點認清工具箱中的各控件名字及用途 VB編譯生成EXE文件(應(yīng)用程序或可執(zhí)行文件),可脫離VB環(huán)境獨立運行。 習題:在Visual Basic 工程設(shè)計中,要在文本框 Textl中顯示"你好",則下列操作正確的是 (A)在Text屬性名中輸入“你好” (B)在Caption屬性名中輸入“你好” (C)在Font屬性名中輸入“你好” (D)在Name輸性名中輸入“你好” 答案:A 習題:在Visual Basic 工程設(shè)計中,要在標簽中顯示"你好",則下列操作正確的是 (A)在Text
6、屬性名中輸入“你好” (B)在Caption屬性名中輸入“你好” (C)在Font屬性名中輸入“你好” (D)在Name屬性名中輸入“你好” 答案:B 習題:在Visual Basic 工程設(shè)計中,下列控制哪個不能加載圖片 (A)TextBox (B)Image (C)PictureBox (D)CommandButton 答案:A 習題『會考2010』:在Visual Basic 中,如果要在命令按鈕 Cmd化顯示文字"開始",下列語句正確的是 (A)Cmd1.Caption =" 開始" (B)Cmd1.Width ="開始" (C)Cmd1.Font ="開始" (D)Cmd
7、1.Height =" 開始" 答案:A 習題『會考2010』:在Visual Basic 中,語句Soft.Text="QQ2008"中的Soft是 (A)屬性名 (B)屬性值 (C)對象名 (D)軟件名 答案:c 習題『會考2010』:在Visual Basic 中,鼠標單擊命令按鈕 CommandI發(fā)的事件處理過程名是 (A)Command1_Click (B)Command1.Click (C)Click_Command1 (D)Command1Click 答案:A 習題『會考 2010』:在Visual Basic 中,語句 Label3.Caption="How Are
8、You" 中的 Label3 是 (A)屬性名 (B)屬性值 (C)對象名 (D)類名 答案:C 填空:窗體文件擴展名:.frm 工程文件擴展名:.vbp 2.基本運算與表達式 (1) VB的基本運算:VB的基本運算包括算術(shù)運算、關(guān)系運算和邏輯運算三大類。 算術(shù)類基本運算有:人、 -、*、/、 、Mod +、- 關(guān)系類基本運算有: =、<>、<、>、<=、>= 邏輯類基本運算有: Not、And、Or (2)表達式:表達式主要用來規(guī)定值的計算過程,以及對于某些情況或條件的判斷。一個表達式中可能包括算術(shù)運算、 關(guān)系運算和邏輯運算等多種基本運算,以及這些基本運算所涉及的數(shù)據(jù)(變量和
9、常量) 。 (3)基本運算的優(yōu)先級(應(yīng)優(yōu)先計算優(yōu)先級較高的部分) 算術(shù)運算符高于關(guān)系運算符高于邏輯運算符 具體:人(1 級),-(指負號),*、/ , , Mod, +、-(減號),=、<>、<、>、<=> >=,Not, And, Or。 習題: ① 100010A2 答案: False ② Not((1>2) Or (3>=4)) 答案:True ③(97\2*2=97) And (78>=78)) 答案: False ④ 25 mod 5 答案:0 習題:在Visual Basic 中,已知a、x、y均是正整數(shù),當邏輯表達式 (a mod x = 0) An
10、d (a mod y = 0) 為真時,則表示 (A) a是x的倍數(shù),但不是y的倍數(shù) (B) a既是x的倍數(shù),又是y的倍數(shù) (C) a是x的倍數(shù)或者是y的倍數(shù) (D) a既不是x的倍數(shù),也不是y的倍數(shù) 答案:B 習題:在Visual Basic中,設(shè)x=3171,能得到其十位上數(shù)字“ 7”的正確表達式是 (A) x \ 10 Mod 100 (B)x \ 10 Mod 10 (C) x \ 100 Mod 10 (D)x Mod 100 答案:B 【注意】 如何得到一個三位數(shù) ml勺百、十、個位數(shù)?如 a、b、c分別為一個三位數(shù) m勺百、十、個位數(shù) a=m\100 b=(m-100
11、*a)\10 或 b=m\10 Mod 10 c=m Mod 10 s = v_t 1 at2 習題『會考2008』:勻加速直線運動位移公式是 s v0 2 al,正確計算s的Visual Basic 表達式是 (A)v0t+1/2atA2 (B)v0*t+1/2*atA2 (C)v0t+1/2*atA2 (D)v0*t+1/2*a*tA2 答案:D 習題『會考2010』:把星期一記為1,星期二記為2,,,,星期日記為 0,已知某月1日(即第1天)是星期一,下列語句中, 用于正確計算該月第n日星期數(shù)W勺是 (A)w=n Mod 7 (B)w=(n+1) Mod 7 (C)w=(n+1
12、)\7 (D)w=n\7 答案:A 35 (A)R1R2/R1+R2 (B)(R1R2)/(R1+R2) (C)R1*R2/R1+R2 (D)R1*R2/(R1+R2) 答案:D R1 R 2 習題『會考2010』:在二個電阻R1、R科聯(lián)電路中,總電阻計算公式是 R1 + R 2 ,計算R勺Visual Basic 表達式是 3 .過程 (1) VB應(yīng)用程序是按模塊化的方式組成的,一個程序模塊是程序的一部分,每個模塊負責解決整個應(yīng)用問題的一部分任 務(wù)。程序模塊分為過程和函數(shù)兩種。 (2)過程:將程序劃分成一個個較小的邏輯單元,每個邏輯單元構(gòu)成一個過程。過程
13、中的代碼可以被重復(fù)調(diào)用。過程分 成兩類,一類是事件處理過程,另一類是通用過程。 (3)事件處理過程: SUb 事件處理過程名(參數(shù)表) 語句塊 End Sub 其中,事件處理過程名必須符合下面的規(guī)則: 對象名—事件的標準名。 VB的一些常用對象上的常見事件的標準名有: 文本框 Text : Text_Click、Text_DblClick 、Text_KeyPress 命令按鈕 Command Command_Click、Command_DblClick 標簽 Label : KeyPress 4 .語句 (1)賦值語句 A)賦值語句格式1:變量名=表達式 (將表達式的
14、計算結(jié)果賦予給變量) B)賦值語句格式2:對象名.屬性名=表達式 (賦予給對象的某個屬性) C)賦值語句格式3:例如:D(3)=表達式 (將表達式賦予給數(shù)組元素) 注意賦值語句與關(guān)系表達式的區(qū)別: 關(guān)系表達式 賦值語句 1 常用于判斷語句, 如:If關(guān)系表達式,, 如:Do While關(guān)系表達式“ 只是值的單向給予,流程圖中常用箭頭 表不,如:A— 1 如 A- A+1 2 等號左右兩邊可以互換 等號左右兩邊不能互換 3 等號左邊對象不一定唯一, 如 a+b=1 等號左邊對象一定要唯一, 如 a=b+1 習題『會考 2010』:對于Visual B
15、asic 語句If a=1 Then m=m+1 Else m=m-1 ,下列說法正確的是 (A) a=1為賦值語句 (B) m=m+儕口 m=m-1均為關(guān)系表達式 (C) m=m+儕口 m=m-1均為賦值語句 (D) m=m+偽關(guān)系表達式,m=m-1為賦值語句 答案:C ☆下面列表舉例判斷是賦值語句或關(guān)系表達式: 語句 判斷 語句 判斷 A=1 可為賦值語句或關(guān)系表達式,視情況而定 Text1.Text=Str(S) 可為賦值語句或關(guān)系表達式,視情況而定 A=A+1 可為賦值語句或關(guān)系表達式,視情況而定 Text1.Text=Str(S) + Text1.T
16、ext 可為賦值語句或關(guān)系表達式,視情況而定 A=B+1 可為賦值語句或關(guān)系表達式,視情況而定 S+Text1.Text=S 關(guān)系表達式 A+1=A 關(guān)系表達式(等號左邊對象不唯一) A+B=A 關(guān)系表達式(等號左邊對象不唯一) 總結(jié):判斷語句是賦值語句還是關(guān)系表達式的關(guān)鍵在于一一①是否存在等號后的值給予等號前的對象;②賦值語句等號前對 象一定唯一 冒號:可以讓多個語句寫在同一行。如 a=2 : b=3 (2)輸入輸出語句 輸入語句,表示向程序輸入值,如向文本框中輸入數(shù)字,轉(zhuǎn)換類型為數(shù)值型后存入變量 R中,以便能用3.14*RA2計算圓面積, 則其
17、中輸入數(shù)字的語句: R=Val(Text1.Text) 為輸入語句 輸出語句,表示將運算結(jié)果呈現(xiàn)出來,如上例中計算機的面積在標簽中顯示出來,可用輸出語句: Label1.Caption=Str(S) 在判斷是輸入還是輸出語句時應(yīng)注意要點:輸入到程序中 還是程序反饋出來,以下列表舉例: 語句 判斷 理由 Print(Str(S)) 輸出語句 打印出來 Label1.Cation="結(jié)果為"& Str(S) 輸出語句 在標簽中顯不出來 T =Val(Text1.Text) 輸入語句 把文本框中內(nèi)容存入T中 S=InputBox() 輸入語句 把輸入框中內(nèi)容 存入S
18、中 Msgbox(Str(I)) 輸出語句 以消息框的形式顯示上I的值 注:算法不一定要輸入,但一定要有輸出 (3)計數(shù)、累加累乘語句 計數(shù)語句一一統(tǒng)計符合條件的個數(shù),初值 =0每次自身加1,例如c=c+1 ——符合條件的數(shù)字累加,初值 =0 累加語句 格式類似 sum=sum+k 類似地,累乘語句寫作類似 T=T*k的語句 (4)選擇語句 A)行If 語句:(一行內(nèi)寫完) If 條件表達式 Then 語句1 Else 語句2 或 If 條件表達式 Then 語句 例 1 : if a>=b then s=1 else s=-1 例 2: if d>=10 an
19、d d<=100 then count=count+1 B)標準If語句(塊If語句) If 條件表達式Then If 條件表達式 Then 語句序列1 語句序列1 End If Else 語句序列2 End If 多分支IF語句 If 條件表達式1 Then ElseIf ElseIf 語句序列1 條件表達式 語句序列2 條件表達式 語句序列3 2 Then 3 Then ElseIf ,,,,,, 條件表達式 N Then 語句序列N Else 語句序列 N+1 End If 習題『會考20
20、10』:某市出租車計費標準規(guī)定:出租車啟動后行程不超過 3千米(包含3千米)計費5元;如果行程超過3千米 且不超過10千米(包含10千米),則超過3千米部分按1.5元/千米計費(3千米及以內(nèi)部分計費仍為5元);若行程超過10千米,則在前面計費基礎(chǔ)上,超出10千米部分按1.8元/千米計費。
假定某出租車行程為x千米,計費標準如下:
當x03千米時,計費為5元;
當3
21、開始計算"按鈕(Command 1后,在標 簽Biaoqian3輸出計費結(jié)果。 解決此問題的算法流程圖如圖 VB-2所示,相應(yīng)的Visual Basic 程序如下,在程序(1)和(2)劃線處,填入適當?shù)恼Z句或表 達式,把程序補充完整。 Private Sub Command1_Click() Dim x As Single, s As Single x = Val(Text1.Text) If (1) Then 5 = 5 ElseIf x <= 10 Then s = 5 + (x - 3) * 1.5 Else s = 5 + (10 - 3) * 1.5 + (x
22、 - 10) * 1.8 End If (2) = Str(s) End Sub 圖 VB-1 開始 輸入行程數(shù)x x不超過3 ? x不超過io ? 答案:① x<=3 ② Biaoqian3.Caption (5)循環(huán)結(jié)構(gòu) A) For ,, Next循環(huán)語句 1)格式 A 5 + (10 - 3) X 1.5 + (x - 10*1.8 /輸出s的值/ 結(jié)束 s-5+ (x - 3) X 1.5 圖 VB-2 For 循環(huán)變量=初值To 終值[Step 步長] 循環(huán)體語句系列 Next 循環(huán)變量 2)循環(huán)變量是不一定是整數(shù)變量,這里的初值、
23、終值和步長也不一定為為整數(shù) 3)步長可以為正(遞增),也可以為負(遞減),但不可以為0 4)若步長為1,則Step 1可以省略 5)循環(huán)尾Next后面的變量與For后面的循環(huán)變量必須一致, 6)總之,F(xiàn)or, Next循環(huán)是循環(huán)次數(shù)能預(yù)先確定,循環(huán)變量能自動改變的循環(huán)! 例如:計算1+1/3+1/5+1/7+ ,, + 1/99 值的程序段 S=0 累加的初值必須 =0 For K=1 To 99 Step 2 For循環(huán)的開頭 S=S+1/K ‘循環(huán)體,累加 Next K For循環(huán)的結(jié)尾 思考:在這個例子中如何統(tǒng)計循環(huán)次數(shù)? 答案一一在循環(huán)體中加入if數(shù)語
24、句,如 C=C+1,再在循環(huán)結(jié)束后輸出 C值,如Print C 習題『會考2010』:下列語句用于計算s=1+4+7+10+, +25:正確的語句順序是 ① Fo門=1 To 25 Step 3 ② Next i ③ s=0 ④ s=s+i (A)①②③④ (B) ①③④② (C)③①④② (D) ④③①② 答案:C 習題『會考2010』:以下程序段是一個完整的 Visual Basic 的For語句,則劃線處的語句應(yīng)該是 For k=1 To 3 s=s+k (A)Loop (B)End For (C)Next s (D)Next k 答案:D 習題『高考2010年3月卷』下
25、面的VB1序運行中單擊Command!鈕,Text1上顯示 ①,Text2上顯示 ② Private Sub Command1_Click() Dim a(1 To 5) As Long, i As Integer a(1) = 1 Fori = 2 To 5 a(i) = a(i - 1) * i Next i Text1.Text = Str(a(2)) Text2.Text = Str(a(5)) End Sub 答案①:2 答案②:120 B) Do While ,, Loop 循環(huán)語句 1)循環(huán)的執(zhí)行次數(shù)預(yù)先不知道,但知道循環(huán)執(zhí)行的條件 2)語句格式: D
26、o While條件表達式 循環(huán)體(語句序列) Loop 3)條件成立則執(zhí)行循環(huán)體語句,條件不成立則結(jié)束循環(huán)(跳到 loop語句的后面) 4)循環(huán)體里面,一定要改變循環(huán)控制變量 習題:在VB程序設(shè)計里,以下語句中錯誤的是 (A)Dim tj as Boolean (B)If x>=0 Then x=x+10 (C)Const PI=3.14159 (D)2*x+y = 16 答案:D 習題『會考2010』:在下面完整的Visual Basic 的口喃句中,有錯誤的語句行是 #01 t=0 #03 t=t+2 #04 End Do (A)第#01行 (B)第#02行 (
27、C)第#03行 習題:下列程序段是為了計算 1+1/11+1/21+1/31+…1/121 (D)第#04行 答案:D #02 Do While t<10 習題:下圖是判斷方程ax2+bx+c=0 (a,0)有無實根的部分流程圖,則圖中虛線部分的內(nèi)容是 答案:C s=0 i=1 Do While i<=121 s=s+1/i I=I+1 Loop Text1.Text=Val(s) 答案①:I=I+10 答案②:Text1.Text=Str(s) 的值,計算結(jié)果在文本框 Text1中輸出。則程序中加框處的語句 應(yīng)分別更正為:(1) (2) 1 3
28、7 15 1023 習題: a =— +- + — +—... + ,求比A」、的最大自然數(shù)。 2 4 8 16 1024 For i = 1 To ① s = s + ② Next i Print Str(Int(s)) 答案①:10 答案②:(2人i - 1) / (2人i) 習題:編寫程序一一在三個文本框中輸入數(shù)字,找出最大的數(shù)字 Dim a, b, c, max As Single a = Val(Text1.Text) : b = Val(Text2.Text) : c = Val(Text3.Text) If a > b Then Max = a
29、Else Max = b End If If Max > c Then Text4.Text =" 最大數(shù)為:"& ① Else Text4.Text =" 最大數(shù)為:"& ② End If 答案①:Str(Max) 答案②:Str(c) 習題:編寫程序輸出下列圖形: Fori = 1 To 9 r A FolbI Forj = 1 To i Print (Str(i)); 習題:下圖是程序的結(jié)果輸出 * * **** ** ** *** *** *** ** **** ****
30、 * (A) (B) (C) 請分別設(shè)計程序?qū)崿F(xiàn),提示:用 Print()方法, 語句 Print (" *"); Print (" *") Print (" *") Print (" *") Print 結(jié)果 ** * * 換行 備注 同一行的兩次打印有分號( ;) 不同一行的兩次打印無分號 不帶參數(shù)和分號為換行 程序(A) 程序(B) 程序(C) For i = 1 To ① Forj = 1 To i Print ("*"); Next j Print Next i Forj = 1 To 4 For n =
31、1 To ② Print ""; Next n For m = 1 To j Print ("*"); Next m Print Next j For i = 4 To 1 ③ For j = i To 1 Step -1 Print ("*"); Next j Print Next i 答案 ① ② ③ 4 4 - j Step -1 5.面向?qū)ο蟪绦蛟O(shè)計 面向?qū)ο蟪绦蛟O(shè)計語言的特征 1)事件驅(qū)動:每當用戶或系統(tǒng)觸發(fā)一個事件(如 "鼠標單擊”),將執(zhí)行預(yù)先編寫好的一段代碼。 2)可視化:即圖形用戶界面( GUI),只需要把一些對象拖放到窗口
32、合適位置。 面向?qū)ο蟪绦蛟O(shè)計的要點: 1、核心概念是對象。對象由一組對象狀態(tài)的數(shù)據(jù)和一組描述處理對象屬性的方法的代碼構(gòu)成的。 對象的屬性定義其外觀,方法定義其行為,事件定義其與用戶的交互。 2、面向?qū)ο蟪绦蛟O(shè)計中的特征一一事件驅(qū)動 六、變量與常量 變量的聲明方法:Dim變量名As數(shù)據(jù)類型 類似地,數(shù)組的聲明: Dim數(shù)組名(最小下標To最大下標)As數(shù)據(jù)類型 如:Dim m(1 To 20) As String 數(shù)組 m中包括了 m(1)、m(2),,m(20)共 20 個元素 或Dim數(shù)組名(最大下標)As數(shù)據(jù)類型 通過此聲明后數(shù)組的下標范圍為 0到最大下標 如:Di
33、m t(10) As Long 通過此聲明后數(shù)組t中包括t(0)、t(1),,t(10 )共 11個元素 常量:即不會因為程序而改變的量,如圓周率、重力加速度等 聲明語句:Const常量名=值 例:Const g=9.8 常量的類型有:數(shù)值型、字符串型、邏輯型等 習題『會考 2008』:下列Visual Basic 表達式正確的是 (A)b*b-2 無*a (B)b1-mA2 (C) 2v+1/2/t (D) 2*a+3Sqr(-9) 答案:B 七、常見數(shù)據(jù)類型 (A)Dim a100 As Integer (B)Dim a(1-100) As Integer (C)D
34、im a(1 , 100) As Integer 習題『會考2010』:在Visual Basic (A)字符串常量 (B)數(shù)值常量 (D)Dim a(1 To 100) As Integer 中,賦值語句carno="浙Z - 56789"中的"浙Z - 56789”是 (C) 邏輯常量 (D) 實數(shù)常量 習題『會考2008』:下面程序段是利用For語句給數(shù)組a賦值,使a(1)=2 , a(2)=4 , a(3)=6 … 句應(yīng)該是 For i= 1 To 100 Next i (A)a(i)=i+2 (B)a(i)=i*i (C)a(i)=i (D)a(i)=2*I 習題
35、『會考2007』:在Visual Basic 中,語句Dim b As Double 所定義的變量b是 (A)整數(shù)型 (B)單精度實數(shù)型 (C)雙精度實數(shù)型 (D)長整數(shù)型 答案:D 答案:A a(100)=200 ,則劃線處的語 答案:D 答案:C 常見的數(shù)據(jù)類型: 數(shù)據(jù)類型 說明 性質(zhì) Integer 整數(shù)型 -32768?32767之間的整數(shù) Long 長整數(shù)型 -2147483648?2147483646 間的整數(shù) Single 單精度實數(shù)型 絕對值在1.401298E-45?3.402823E38 內(nèi)的實數(shù) Double 雙精度實數(shù)型
36、絕對值在10E-324?1.79E308內(nèi)的實數(shù) String 字符串型 文本 Boolean 邏輯型 返回值 True、False Date 日期型 日期和時間 習題『會考2007』:在Visual Basic 中,要定義一個一維數(shù)組a,用于存儲100個整數(shù)型數(shù)值,則正確的數(shù)組定義語句是 八、常見函數(shù) 1.數(shù)學(xué)函數(shù) 函數(shù)名 描述 例子 Abs(x) 絕對值 Result=Abs(-1),返回 1 Int(x) 返回參數(shù)的整數(shù)部分 Result=Int(3.14), 返回 3 Result=Int(-3.14), 返回-4 Fix(x) 返回參
37、數(shù)的整數(shù)部分 Result=Fix(3.14), 返回 3 Result=Fix(-3.14), 返回-3 Sqr(x) 開平方 Result=Sqr(4),返回 2 Exp(x) 指定e (自然對數(shù)的底)的某次方 Result=Exp(1),返回 2.71828182845905 Log(x) 指定參數(shù)的自然對數(shù)值 Result=Log(2.71828182845905), 返回 1 Sin(x) 指定參數(shù)的sine (正弦)值,x為弧度 Result=Sin(3.1415926 / 2), 返回1 — —90度的正弦 Cos(x) 指定一個角的余弦值
38、,x為弧度 略 Tan(x) 指定一個角的正切值,x為弧度 略 2.轉(zhuǎn)換函數(shù)和字符函數(shù) 函數(shù)名 描述 例子 Asc(x) 代表字符串中首字母的 ASCII碼 Result=Asc("A"),返回 65 Chr(x) 返回其中包含有與指定的 ASCII碼相對應(yīng)的字符 Result=Chr(65) ,返回"A" Val(x) 轉(zhuǎn)換參數(shù)為數(shù)值類型 Str(x) 轉(zhuǎn)換參數(shù)為字符類型 Len(x) 返回參數(shù)的長度 Result=Len("nba"),返回 3 Left(x,n) 返回參數(shù)自左起的n個字符 Result=Left("nba",
39、2) ,返回"nb" right(x,n) 返回參數(shù)自右起的n個字符 Result=right("nba",2) ,返回"ba" Mid(x,n,k) 返回字符串x中從第n個字符(含第n個字符)開始的 Result=Mid("I love this game!",4,6) ,返回 連續(xù)k個字符 "ove th" o (空格也要算在內(nèi)) 習題:欲又x=3.14159四舍五入,精確到小數(shù)點后 2位,則表達式寫作 o答案:Int(x*100+0.5)/100 習題:某銀行在一次黃金交易中共交易黃金 50克,每克單價345.9567元,結(jié)算時以“元”為單位,按“分”結(jié)算。在 V
40、B 中,X=345.9567,上述算術(shù)問題的 VB表達式應(yīng)是: (A)Int(50*X*10+0.5)/10 (B)Int(50*X*100+0.5)/10 (C)Int(50*X*100)/100 (D)Int(50*X*100+0.5)/100 答案:D 3 .自定義函數(shù)格式 Function 函數(shù)名(參數(shù)表)As函數(shù)返回類型名 語句…… End Function 習題:用自定義函數(shù)判斷閏年問題 Function Leap(Year As Integer) As Boolean If Year Mod 400 = 0 Or Year Mod 100 <> 0 And Yea
41、r Mod 4 = 0 Then Print (" 是")Else Print (" 否") End Function Private Sub Command1_Click() Leap (Val(Trim(Text1.Text))) End Sub 習題『高考2010年3月卷』:按下面公式計算y的值: I ―工 (1V。) (X>IOO) 現(xiàn)要求編寫VB程序(運行界面如下圖),實現(xiàn)如下功能:在文本框 Text1中輸入x的值,單擊“計算”按鈕 Command1在 標簽Label3中顯示y的值。 按此要求編寫的程序如下,其中函數(shù) f(x)用于計算y的值,但加框代碼有錯
42、,請改正。 Function f(x As Single) As Single If x < 0 Then f = -x ElseIf x >= 0 Then ① f = (2 * x * x + 1) / (3 * x - 2) Else f = Sqr(3 * x * x - 2 * x + 1) End If End Function Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) y =fx ② Label3.Caption = Str(y) En
43、d Sub 答案①:x > 100 ;答案②:y = f(x) 4 . RND函數(shù) Rnd函數(shù)返回[0, 1)之間隨機數(shù),使用前先用 Randomize作隨機數(shù)生成器的初始化 注意:要得到[0, 10]范圍的隨機數(shù),則可用什么表達式? 為了生成某個范圍內(nèi)的隨機整數(shù),可使用以下公式: Int((上界-下界+ 1) * Rnd + 下界) Dim MyValue MyValue = Int((6 * Rnd) + 1) 生成1到6 之間的隨機數(shù)值。 習題:用隨機函數(shù)在列表中生成 10個[1 , 1000]的隨機整數(shù) Dim i As Integer i = 1 Do Whil
44、e i <= 10 List1.AddItem (Str( ①)) i = i + 1 Loop 答案①:Int(1000 * Rnd + 1) 習題:用隨機函數(shù)產(chǎn)生 100個[0, 99]范圍內(nèi)的隨機整數(shù),統(tǒng)計個位上的數(shù)字分別為 1, 2, 3, 4, 5, 6, 7, 8, 9, 0的數(shù)的 個數(shù)并打印出來。 & Forml 叵di— 8 B 9 T B 5 2 4 307667 476 8 小八八八八人八小八 9 3 6 1 O 3 9 27 了6191016 7 7 0 8 7 8 2 2-46 4 942W 966 g 6 8 65132347S221盟 M婪M
45、 & 1 0-2012360 8^77367 3 s n Mroo 同燈913 目 QD JI dl Qi 6 2 5 9 7 4 6-^95 1 6 6 T 2 s 6 7 90613*1093的997631 5 5 2 3 9 6 0 3 8 4 16 6 2 2 5 6 8 2 425 596&4573TB0B46132 39 dt八共共共掛(共*共共共 1234567890 Private Sub Command1_Click() ① ’初始化隨機隨機數(shù)生成器 Dim a(1 To 100) As Integer Dim x(1 To 10) As Intege
46、r Dim i As Integer, p As Integer ’以下產(chǎn)生100個[0, 99]范圍內(nèi)的隨機整數(shù),每行10個打印出來 For i = 1 To 100 a(i)= ② Print a(i); If i Mod 10 = 0 Then Print Next i ’以下統(tǒng)計個位上的數(shù)字分別為1, 2, 3, 4, 5, 6, 7, 8, 9, 0的數(shù)的個數(shù),并將統(tǒng)計結(jié)果保存在數(shù)組x(1),x(2),…,x(10) 中,將統(tǒng)計結(jié)果打印出來 For i = 1 To 100 p= ③ 求個位上的數(shù)字 If p = 0 Then p = 10 x(p)=④ ’個
47、數(shù)累加 Next i Print " 統(tǒng)計結(jié)果" Fori = 1 To 10 p = i If i = 10 Then p = 0 Print " 個位數(shù)為"+ Str(p) + " 共"+ Str(x(i)) + " 個" Next i End Sub 答案①:Randomize 答案②:Int(Rnd * 100) 答案③:a(i) Mod 10 答案④:x(p) + 1 九、算法的程序?qū)崿F(xiàn) 1.枚舉算法及程序?qū)崿F(xiàn) 枚舉算法的基本思想是根據(jù)問題的本身性質(zhì), 一一列舉出該問題所有可能的情況,并根據(jù)題目的條件 逐個作出判斷,從 中挑選出符合條件的解答。 枚舉算法屬于
48、搜索策略,適用于那些解變量確定的連續(xù)值域的問題。設(shè)置枚舉算法要列舉出所有可能的情況,不能遺漏, 也不能重復(fù)。 習題:求出所有水仙花數(shù)(一個三位數(shù)等于它的每個數(shù)字的立方和,如: 153=13+53+33) For m =100 to 999 答案①: aA3+bA3+cA3 A=int(m/100) : B=int((m-100*a)/10) : C=m-100*a-10*b N=① If ② then List1.Additem Str(m) Next m 答案②: m=n 習題:下面程序的功能是:找出 10以內(nèi)的奇數(shù)中能被3整除的正整數(shù),并將它們累加起來。為了實現(xiàn)這一目
49、標,程序中劃 線處的語句應(yīng)更正為。 x=0 For i=1 To 10 Step 2 If i mod 3 <> 0 Then x=x+i Next i 答案:If i mod 3 = 0 Then x=x+i 習題:枚舉100以內(nèi)勾股數(shù)(不允許重復(fù)) Dim c, b, sum As Integer, a As Single 答案①: Sqr(a A 2 + b A 2) Listl.AddItem (" a" & " " & " b" & " " & " c") List1.AddItem (" ") sum = 0 For a = 3 To 100 —
50、—列舉 For b = a + 1 To 100 ——歹 |J 舉 c = ① If ②And c <= 100 Then ,逐個作出判斷 List1.AddItem (Str(a) & " " & Str(b) & " " & Str(c)) sum = sum + 1 End If Next b Next a Label1.Caption =" 共有勾股數(shù):"& Str(sum) & " 組" 答案②: Int(c) = c 表達式,把程序補充完整。 NO. 3口口 45 」 C=0 For j=0 To ① n=30045+100*j If
51、 (n Mod 35=0) or (n Mod 65=0) then ② Print " 可能的一個數(shù)為:"+ Str(n) End if Next j Print " 符合題意的數(shù)總數(shù)為:"+ Str(C) 答案①:99 答案②:c=c+1 習題:輸出100-200間的所有不能被3整除的數(shù)并統(tǒng)計個數(shù)。 方法一: Dim i, D As Integer For i = 100 To 200 If ① Then List1.AddItem (Str(i)) ② 答案①:i Mod 3 <> 0 答案②:D=D+1 End If Next i Pri
52、nt Str(D) 方法二: Dim i,a,b,c, D As Integer a為百位數(shù),b為十位數(shù),c為個位數(shù) For i = 100 To 200 a= ① : b=②:c = ③ If (a + b + c) Mod 3 <> 0 Then List1.AddItem (Str(i)) D = D + 1 End If Next i Print Str(D) 答案①:a = i \ 100 答案②:(i - a * 100) \ 10 或(i Mod 100) \ 10 答案③:i Mod10 或 c = i - 100 * a 方法三
53、: Dim i, a, b, c, D As Integer For i = 100 To 200 a = Val(Left(Trim(Str(i)), 1)) b = Val(Mid(Trim(Str(i)), 2, 1)) c = Val(Right(Trim(Str(i)), 1)) If (a + b + c) Mod 3 <> 0 Then List1.AddItem (Str(i)) D = D + 1 End If Next i Print Str(D) 習題:求100-200間的所有素數(shù) 判斷i是否為素數(shù)的方法:如果i不能被[2, JT]之間任一個數(shù)整
54、除,則i為素數(shù) Dim SuShu As Boolean Dim i, j, k, m As Integer i = 101 SuShu = False Do While ① k = ② Forj = 2 To k If ③ Then SuShu = False : Exit For End If SuShu = True Next j If SuShu = True Then List1.AddItem (Str(i)) m = m + 1 End If i = i + 2 Loop Label1.Caption = "素數(shù)共有:" & St
55、r(m) & "個!” 答案①:i < 200 答案②:Sqr(i) 答案③:i Mod j = 0 練習:尋找100至999之間的回文數(shù),如 11, 232, 505等 算法分析:(假定某三位數(shù)為n) 要點1 :確定變量范圍:100~999 (即n從100變到999) 要點2:確定問題的判斷條件 n 這個數(shù)具有從左往右看與從右往左看相等的特征 要點3:判斷條件如何實現(xiàn)? 要點是分離出各數(shù)位上的數(shù) (借助Int函數(shù)) 如 n=456,則百位數(shù)字 a = 4 a=Int(n/100) 或 a = n\100 十位數(shù)字 b = 5 b=Int((n-100*a)/10)
56、 或 b=(n\10) Mod 10 個位數(shù)字 c = 6 c=n-100*a-10*b 或 c=n Mod 10 貝U,組裝n的逆序數(shù)n1 =c*100 + b*10 + a 然后判斷n=n1 ? 變量gs存放回文數(shù)個數(shù) 尋找范圍:100~999 得到n的百位數(shù)字 得到n的十位數(shù)字 得到n的個位數(shù)字 組裝生成n的逆序三位數(shù) 如果n和n的逆序三位數(shù)相等 統(tǒng)計回文數(shù)的個數(shù) 將回文數(shù)添加到列表框 1中 將回文數(shù)個數(shù)寫到文本框中 對應(yīng)程序: gs=0 For n=100 To 999 a=Int(n/100) b=Int((n-100*a)/10) c=
57、n-100*a-10*b n1=100*c+10*b+a If n=n1 Then gs=gs+1 List1.AddItem Str(n) End If Next n Text1.Text = Str(gs) 習題『高考2010年3月卷』:一個十進制整數(shù)的二進制表示中,如果數(shù)字“ 1”的個數(shù)多于數(shù)字“ 0”的個數(shù),則稱該整數(shù)為 A類數(shù),如十進制26的二進制表示為11010, 26是一個A類數(shù),下列VB程序的功能是:統(tǒng)計前1000個自然數(shù)中A類數(shù)的個 數(shù),并在文本框中輸出。請在劃線處填入合適代碼。 Private Sub Command1_Click() Dim
58、i As Integer, n As Integer Dim s As Integer s 為A類數(shù)的個數(shù) Dim t As Integer t 為二進制數(shù)中"1"的個數(shù) Dim k As Integer k 為二進制數(shù)中"0"的個數(shù) s = 0 For i = 1 To ① n = i t = 0 k = 0 Do While n > 0 If n Mod 2 = 1 Then t = t + 1 Else k = k + 1 n = n \ 2 Loop If ② Then s = s + 1 Next i Text1.Text = Str(s) End Sub
59、 答案①:1000 ;答案②:t>k 習題:馬克思在研究無產(chǎn)階級革命學(xué)說的同時也很重視數(shù)學(xué)科學(xué)學(xué)習,他的數(shù)學(xué)手稿中有這樣一道題:有 30個人,其中有 男人、女人、小孩,在一家小飯館里花 50先令,每個男人3先令,每個女人2先令,每個小孩1先令,為計算男人、女人、 小孩各多少人,編制 Visaul Basic 程序如下,程序中有 2處錯誤,請改正: Private Sub Command1_Click() n = 0 For x = 1 To 29 For y = 1 To 29 z = 30 - x - y m = 3 X + 2 y + z ① If m = 50 Th
60、en Listl.Addltem (" 男人:"& Str(x) & " ;女人:"& Str(y) & " ;小孩:"& Str(z)) n = n + 1 End If Next y Next x Listl.Addltem (" 共有:"& ptr(x) & 口 種答案!") ② End Sub 程序改正為:①;② 答案①:3 * x + 2 * y + z ;答案②:Str(n) 習題:用輾轉(zhuǎn)相除法求兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù) 分析: ⑴對于已知兩數(shù) M N,使得M>N ⑵M除以N得余數(shù)R; (3)若R=0,則N為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行
61、 (4); (4)M-N, N— R,再重復(fù)執(zhí)行(2); (5)原數(shù)M*N/最大公約數(shù) 即為最小公倍數(shù) M = Val(Text1.Text) : N = Val(Text2.Text) MN = M * N If M < N Then t = M: M = N: ① R =② Do While R > 1 M = N : N = R R = M Mod N Loop Text3.Text = Str(N) Text4.Text = Str( ③) 答案①:N = t 答案②:M Mod N 答案③:(MN) / N 2.解析算法及程序?qū)崿F(xiàn) 解析算法的基本
62、思想是用解析的方法找出表示問題的前提條件與所求結(jié)果之間關(guān)系的數(shù)學(xué)表達式, 并通過數(shù)學(xué)表達式的計 算來實現(xiàn)問題的求解。 習題:一元二次方程根判別程序 Dim a, b, c, d, x1, x2 As Double a = Val(Textl.Text) : b = Val(Text2.Text) : c = Val(Text3.Text) d = b人2 - 4 * a * c 關(guān)鍵在于此 If d > 0 Then x1 = (-b + Sqr(d)) / (2 * a) : x2 = (-b - Sqr(d)) / (2 * a) Text4.Text = Str(x
63、1) : Text5.Text = Str(x2) Label6.Caption =" 有兩個不同的實數(shù)根" Elself d = 0 Then x1 = (-b) / (2 * a) : x2 = x1 Text4.Text = Str(x1): Label6.Caption =" Text5.Text = Str(x2) 有兩個相同的實數(shù)根" Else Label6.Caption =" 沒有實數(shù)根" 雞x只兔y只同籠,頭共30只,腳90只,問雞兔各幾只? End If Const head=30, foot=90 Dim x as Integer, y A
64、s Integer Y=① X=② Text1.text=Str(x) Text2.text=Str(y) 答案①:(foot-2*head)\2 答案②:(4*head-foot)\2 習題:雞兔同籠問題一一 分析: (1) X+y=30 (2) 2x+4y=90 (x=15,y=15) 習題:十進制0?255轉(zhuǎn)換為二進制 Dim a , c(1 To 8) As Integer Dim S As String a = Val(Textl.Text) If a < 0 Or a > 255 Then Text2.Text =" 輸入數(shù)據(jù)錯誤,t#重新輸入!"
65、 Else Do While a <.> 0 c(i)= ① a = Int(a / 2) S= ② Loop Text2.Text = S End If 答案①:a Mod 2 答案②:Str(c(i)) + S 習題:不計復(fù)利的銀行存款本息計算的算法如下: ①輸入本金mW年數(shù)y ②用公式計算到期本息 k=m(1+0.0314y),其中年利率為3.14% ③輸出變量k 上述算法屬于 (A)解析算法 (B)排序算法 (C)遞歸算法 (D)枚舉算法 答案:A 一 -E 二 1 1 1 _ 6, 習題:用 —球1 ——…公式求冗的近似值,直到最后一項的絕對值小于
66、 10 為止。 4 3 5 7 i = 1 Do While 1 / i > 0.000001 Sum = Sum + ① i = i + ② Loop Text1.Text = Str(4 * Sum) 答案①:(-1)人((i+3)/2) / i 答案②:2 習題:加密字符串 為字符串(不超過8位)作簡單加密:將輸入的字符串每位字符加密為的 ASCII碼值加上4對應(yīng)的字符,再反方向輸出。如: 對字符串” Abc12%加密 原字符串 A b c 1 2 % 原ASCII碼 65 98 99 49 50 37 修改后的ASCII碼 69 102 103 53 54 41 對應(yīng)的字符 E f g 5 6 ) 密文(反方向輸出) ) 6 5 g f E 流程圖: Dim d(1 To 8) As ① Dim M, X As String Dim L, N As Integer M =② L =③ For i = 1 T
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。