




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
編制電視歌手大賽評分程序,要求評委人數和每位評委的打分從鍵盤輸入,去掉一個最高分,再去掉一個最低分,求評委給出的最后得分。思考與回顧第5章VB編程1—數組應用
(P48,P81~90)任務1(P81-例5-1)隨機產生50個兩位的整數作為一個班學生的考試成績,求平均分,最高分、最低分。問題分析1、隨機數的產生2、每個隨機數的顯示-------圖片框3、結果的顯示-----文本框4、關鍵算法:最高分,最低分,平均分新知識點----圖片框、圖像框圖片框圖像框圖片框主要屬性Name:名稱Picture:顯示圖片和圖像。Autosize屬性:決定圖片框是否自動適應圖片的大小true:圖片框自動調整大小適應圖片。false:圖片框不能自動調整大小,加載的圖形保持其原始尺寸。圖像框的主要屬性Name:名稱Picture:顯示圖片和圖象。Strech屬性:決定圖片是否自動適應控件的大小true:被加載圖形自動調整大小適應圖像框的大小。false:圖像框自動調整大小適應加載的圖形。圖片設置的方法----picture屬性1、設計階段設置----利用屬性窗口2、在程序執行過程中加載。-----------loadpicture()例如:P1.Picture=LoadPicture(“圖片所在的位置及文件名”)
P1.Picture=LoadPicture(″D:\Pic1.jpg″)p1.picture=loadpicture(“”)思考在窗體Form1上畫一個圖片框,名稱為P1,高為1900,寬為2400。請編寫適當的事件過程,使得在運行時,如果單擊窗體,則裝入D盤下的文件名為Pic1.bmp的圖片;如果雙擊窗體,則圖片框中的圖片消失。兩個控件的主要區別①圖片框可以作為其它控件的容器②圖片框可以通過Print方法顯示文本如:圖片框名稱.print表達式③圖像框比圖片框占用內存少,顯示速度快思考與回顧思考主要代碼DimiAsIntegerPicture1.ClsFori=1To7Picture1.PrintString(2*i-1,"*")Next應用Fibonacci數列定義如下:
F1=1
F2=1
Fn=Fn-1+Fn-2(n>2)
求Fibonacci數列的前30項。
要求:數列中的每個數顯示在圖片框中,且每行顯示5個數字。Dimf1&,f2&,f3&,i%f1=1f2=1Picture1.Printf1;f2;Fori=3To30f3=f1+f2Picture1.Printf3;IfiMod5=0ThenPicture1.PrintEndIff1=f2f2=f3Next應用隨機產生50個兩位的整數作為一個班學生的考試成績,求平均分,最高分、最低分。(P82)要求:(1)利用圖片框顯示學生的成績,每行10個。(2)利用文本框顯示平均分,最高分,最低分任務1知識點小結1、隨機數的產生2、圖片框和圖像框的使用3、如何利用圖片框輸出文本信息4、最大數和最小數算法的求解。在若干個數中求最大值,一般先假設一個較小的數為最大值的初值,若無法估計較小的值,則取第一個數為最大值的初值;然后將每一個數與最大值比較,若該數大于最大值,將該數替換為最大值;依次逐一比較。任務2[例5-3]隨機產生50個兩位整數作為一個班某門課程的成績,然后求該門課程的平均分并統計高于平均分的人數。
對比:隨機產生50個兩位的整數作為一個班學生的考試成績,求平均分,最高分、最低分。數組的基本概念(P48)一維數組應用新知識點-----數組數組的基本概念1、數組的定義:數組是由一定數目的同類元素按一定順序排列而成的結構數據類型,是一組具有同一名字(數組名)、不同下標的下標變量(數組元素)的集合例1:一個班60名學生的成績組成一個數組G,每個學生的成績分別表示為:G(1),G(2),G(3),…,G(i),…,G(60)例2:某廠5個車間全年各季度的產量組成數組P,每個車間每季度的產量分別表示為:P(1,1),P(1,2),P(1,3),P(1,4)P(2,1),P(2,2),P(2,3),P(2,4)P(3,1),P(3,2),P(3,3),P(3,4)P(4,1),P(4,2),P(4,3),P(4,4)P(5,1),P(5,2),P(5,3),P(5,4)2、數組的分類:VisualBasic中的數組,按不同的方式可分為以下幾類:按數組的大小(元素個數)是否可以改變來分為:定長數組(靜態數組)、動態(可變長)數組。按元素的數據類型可分為:數值型數組、字符串數組、日期型數組、變體數組等。按數組的維數可分為:一維數組、二維數組、多維數組。對象數組:菜單對象數組、控件數組。3、數組的基本要素(1)數組名:數組和變量一樣,也用符號名來命名。(2)數組的類型:數組的類型由數組元素的類型來決定。(3)數組的維數:數組的維數即為了區分數組元素所需順序號的個數。(4)數組的大小:數組的大小即數組中包含數組元素的個數,由數組每維下標的上界和下界來決定。一維數組基礎知識1、數組聲明定義格式案例方法1:Dim數組名([下界to]上界)as類型方法2:Dim數組名[類型符]([下界to]上界)Dima(1to10)asintegerDima%(1to10)說明:缺省下界,默認下標從0開始缺省類型,為變體類型通用模塊定義:Optionbase0|1數組元素個數:上界-下界+12、數組結構邏輯結構:線性表存儲結構:線性表數組中各元素在內存占一片連續的存儲空間,一維數組在內存中存放的順序是下標大小的順序。例如Dimmark(1To100)AsInteger思考與應用1、輸入50個學生的一門課程的成績,然后求其平均分并統計高于平均分的人數。用數組來存放這50個數,則數組應如何定義?2、輸入10個學生的總分,求每個學生的名次。3、一維數組元素的引用使用形式:數組名(下標)
其中:下標可以是整型變量、常量或表達式。例如:設有下面的數組定義:DimB(10)AsInteger,A(10)AsInteger則下面的語句都是正確的。A(1)=A(2)+B(1)+5'取數組元素運算A(i)=B(i)'下標使用變量B(i+1)=A(i+2)'下標使用表達式一維數組基本操作基本操作方法案例數組元素值的確定利用賦值語句利用輸入函數利用array函數A(1)=5A(1)=val(inputbox(“請輸入數據”))DimbB=array(2,3,4,5)數組元素輸出利用窗體輸出利用文本框輸出利用圖片框輸出Printa(1)Text1.text=a(1)Picture1.printa(1)說明:如果要輸入或輸出整個數組所有元素,一般配合一重循環結構使用Dima(1to10)asinteger,IasintegerForI=1to10a(I)=2*INextForI=1to10a(I)=val(inputbox(“請輸入”+str(I)+”數據“))Next在窗體中輸出數組每個元素:fori=1To10Printa(i);Nexti在文本框中輸出數組每個元素:Fori=1To10Text1.Text=Text1.Text+","+Str(a(i))Next在圖片框中輸出數組每個元素Fori=1To10Picture1.Printa(i);Next
編程求輸入50個學生的一門課程的成績,然后求其平均分并統計高于平均分的人數。應用(p83-例5-3)OptionBase1PrivateSubCommand1_Click()Dimi%,avg!,sum!,a(50)AsSingleDimcount%count=0sum=0Fori=1To50a(i)=InputBox("請輸入第"+Str(i))Text3.Text=Text3+Space(2)+Str(a(i))sum=sum+a(i)Nextiavg=sum/50Fori=1To50Ifa(i)>avgThencount=count+1EndIfNextiText1.Text=avgText2.Text=countEndSub回顧與應用請定義一個包含10個元素的一維數組,按照賦值a(I)=2*I的規律給各元素賦值,計算輸出數組的平均值。隨機產生10個[50,100]的整數,求其和。數組計數器。輸入10名學生一門課程的考試成績,統計各分數段的人數。分數段劃分如下:優:[95,100]良:[80,95)中:[70,80)及格:[60,69)不及格:<60問題1求一組數(假設10個)中最大數及最大數所在的位置。DimMaxAsInteger,iMaxAsInteger Max=A(1):iMax=1Fori=2To10IfA(i)>MaxThen Max=A(i) iMax=iEndIfNextI問題2將一個數組的元素按逆序重新存放。思考從鍵盤輸入10個數,要求按輸入時的逆序輸出。關鍵代碼:Fori=1To10\2t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNextI問題3在有序數組a(1ton)(原有n-1個元素)插入一個值Key元素.算法:查找要插入的位置k(1<=k<=n-1)騰出位置,把最后一個元素開始到第K個元素往后移動一個位置第k個元素的位置騰出,就可將數據Key插入在有序的一組數中,插入一個數后,仍保持有序。思考有一個已排好序的數組,再輸入一個數,要求按原來排序的規律將它插入數組中。Dima(1To11)AsIntegerDimi%,x%'從小到大的一組數據Fori=1To10a(i)=Val(InputBox("請輸入"+Str(i)+"個數據"))Nextx=Val(InputBox("請輸入要插入的數據"))Fori=1To10If(x<a(i))ThenExitFor‘查找位置NextForj=10ToiStep–1‘挪動數據a(j+1)=a(j)Nexta(i)=x‘插入數據Fori=1To11Printa(i)Next問題4算法:A、確定位置(查找)B、挪動位置刪除一個數(假定不存在重復的數據或刪除找到的第一個數)Dimb(1To10)AsInteger,x%Fori=1To10b(i)=Val(InputBox("請輸入數據"))Nextx=Val(InputBox("請輸入要刪除的數據"))Fori=1To10If(x=b(i))ThenExitFor‘查找是否有要刪除的數據及位置“NextForj=i+1To10‘挪動位置b(j-1)=b(j)NextFori=1To9‘輸出Printb(i);Next任務2:知識點小結一維數組的定義一維數組的元素的引用數組的輸入與輸出數組的簡單應用求最大值、最小值及平均值按逆序重新存放數據在一組有序的數組中,插入一個數。刪除一個數綜合應用1、用數組保存隨機產生的10個介于20~50之間的整數,求其中的最大數、最小數和平均值,然后將10個隨機數和最大數以及平均值顯示在窗體上。2、用數組求F數列的前20項,并按照每行5個打印在圖片框控件中。任務3----數據排序實現一組數據從小到大排序實現一組數據從大到小排序排序的實現----兩個常用算法(1)選擇法排序(2)冒泡法排序思想:1)假設某個位置的數是最大/小的。2)驗證是否是最大/小的3)驗證過程中標記最大/小數的位置4)交換選擇法排序問題與思考問題1:利用選擇法求10個數中的最大數,并把找出的最大數放到數組中的第一個數的位置。問題2:將10個數從大到小排列后輸出思考:把一組數從大到小排序Fori=1Ton-1p=iForj=i+1TonIfa(j)>a(p)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNexti選擇法排序(降序)的VB程序:思想:兩兩比較,(數組中相鄰的兩個數進行比較)大數放在后面,小數放在前面。冒泡法排序問題與應用1)利用冒泡法求10個數中的最大數。給出10個數找出最大數輸出最大數2)利用冒泡法把10個數從小到大排序Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thentemp=a(j)a(j)=a(j+1)a(j+1)=tempEndifNextjNexti冒泡法排序(升序)的VB程序:思考PrivateSubCommand1_Click()Dimi%,j%,t%,p%Text2.Text=""Fori=1To9p=iForj=i+1To10Ifa(j)<a(p)Thenp=jNextjIfp<>iThent=a(p)a(p)=a(i)a(i)=tEndIfNextiFori=1To10Text2.Text=Text2+Space(2)+Str(a(i))Nexti
EndSubPrivateSubCommand2_Click()EndEndSubPrivateSubCommand3_Click()Dimi%,j%,t%Text2.Text=""Fori=1To9Forj=1To10-iIfa(j)>a(j+1)Thent=a(j)a(j)=a(j+1)a(j+1)=tEndIfNextjNextiFori=1To10Text2.Text=Text2+Space(2)+Str(a(i))NextiEndSubPrivateSubCommand4_Click()Dimi%Text1.Text=""Text2.Text=""Fori=1To10a(i)=InputBox("請輸入第"+Str(i)+"個數據")Text1.Text=Text1+Space(2)+Str(a(i))NextiEndSub用隨機函數產生50個[10,100]的隨機整數,并按照由小到大的順序打印出來。程序界面如下:應用OptionBase1Dima(50)AsIntegerPrivateSubCommand1_Click()Dimi%RandomizeText1.Text="排序前的數據"+vbCrLfFori=1To50a(i)=Int(91*Rnd+10)Text1.Text=Text1.Text+""+Str(a(i))NextEndSubPrivateSubCommand2_Click()Dimi%,j%Fori=1To49Forj=1To50-iIf(a(j)>a(j+1))Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjNextiText1.Text=Text1.Text+vbCrLfText1.Text=Text1.Text+"排序后的結果"+vbCrLfFori=1To50Text1.Text=Text1.Text+""+Str(a(i))Nexti任務3知識點小結數據排序的常用算法(1)冒泡排序法(2)選擇排序法任務4-----動態數組動態數組:
在聲明時未給出數組的大小。定長數組(靜態數組)是在程序編譯時分配存儲空間,而動態數組是在程序執行時分配存儲空間。動態數組使用
1、建立動態數組,分以下兩個步驟:數組聲明數組大小說明格式:Dim數組名()As數據類型Dim數組名類型符()例:Dima()AsInteger或dima%()(1)使用Dim語句聲明括號內為空的數組(2)在程序中用ReDim語句指明該數組的大小。Preserve參數:保留數組中原來的數據例:
RedimA(10)
RedimPreserveA(20)格式:ReDim[Preserve]數組名(下標1)可以常量或有確定值的變量應用輸入n個數據,求最大數輸入N個數據,從小到大的順序輸出。輸入N個學生的總分,求每個學生的名次。Optionbase1PrivateSubCommand1_Click()Dima()AsIntegerDimn%n=Val(InputBox("請輸入數組的個數"))ReDima(n)a(1)=Val(InputBox("請輸入第一個數"))Text2.Text=Text2.Text+Str(a(1))Max=a(1)Fori=2Tona(i)=Val(InputBox("請輸入第"&i&"個數"))Text2.Text=Text2.Text+Space(2)+Str(a(i))Ifa(i)>MaxThenMax=a(i)EndIfNexti任務5給定5個學生4門課程的成績,求其每個學生的總分及每門課程的平均分.新知識:二維數組及多維數組1、二維數組的聲明聲明格式如下:Dim數組名([<下界>]to<上界>,[<下界>to]<上界>)[As<數據類型>]其中的參數與一維數組完全相同。例如:Dima(3,3)AsSingle
邏輯結構:表格/矩陣物理結構:線性表二維數組在內存的存放順序是“先行后列”。2、二維數組的存儲形式A(1,1)A(1,2)A(1,3)A(2,1)A(2,2)A(2,3)A(3,1)A(3,2)A(3,3)3、二維數組元素的引用引用形式:數組名(下標1,下標2)例如:
a(1,2)=10a(i+2,j)=a(2,3)*2在程序中來說,通過二重循環來操作使用二維數組元素。4、二維數組的基本操作(1)二維數組數據值的確定(賦值語句或輸入函數)(2)求最大元素及其所在的行和列1)二維數組數據的輸入Dima(1to4,1to5)AsInteger,i%,j%A、給二維數組a輸入數據的程序段如下:Fori=1to4Forj=1to5A(i,j)=Val(InputBox("a("&I&","&j&")=?"))NextjNexti2)求最大元素及其所在的行和列
Max=a(1,1):row=1:Column=1Fori=1ToNForj=1ToMIfa(i,j)>a(row,Column)ThenMax=a(i,j)row=iColumn=jEndIfNextjNextiPrint"最大元素是";MaxPrint"在第"&row&"行,";"第"&Column&"列"應用1給定5個學生4門課程的成績,求其每個學生的總分及每門課程的平均分.應用2(P89)打印楊輝三角形。11112113311464115101051應用3計算n行n列組成的二維數組的兩個對角線上各元素之和OptionBase1PrivateSubCommand1_Click()Dima()AsIntegerDimi%,j%,sum%,n%n=Val(InputBox("請輸入二維數組的大小"))ReDima(n,n)Fori=1TonForj=1Tona(i,j)=Int(11*Rnd+10)Printa(i,j);NextPrintNextsum=0Fori=1TonForj=1TonIf(i=j)Thensum=sum+a(i,j)If(i+j=n+1)Thensum=sum+a(i,j)
NextNextPrintsumEndSub任務5—知識點小結二維數組的定義二維數組元素的引用二維數組的輸入和輸出二維數組的基本操作求最大數等等給定M個學生N門課程的成績,求其每個學生的總分及每門課程的平均分.應用OptionBase1PrivateSubCommand1_Click()Dimgrade()AsSingleDimzong()AsSingleDimpin()AsSingleDimi%,j%,m%,n%m=Val(InputBox("請輸入數組的行數"))n=Val(InputBox("請輸入數組的列數"))ReDimgrade(m,n)ReDimzong(m)ReDimpin(n)Fori=1TomForj=1Tongrade(i,j)=Val(InputBox("請輸入每個同學成績"))NextjNextiFori=1Tomzong(i)=0Forj=1Tonzong(i)=zong(i)+grade(i,j)NextjNextiForj=1Tonpin(j)=0Fori=1Tompin(j)=pin(j)+grade(i,j)Nextpin(j)=pin(j)/mNextFori=1TomForj=1TonPrintgrade(i,j);NextPrintzong(i)NextForj=1TonPrintpin(j);NextEndSub任務6:與數組操作有關的函數及語句1、Array函數Array函數可方便地對數組整體賦值,但它只能給聲明Variant的變量或僅由括號括起的動態數組賦值。賦值后的數組大小由賦值的個數決定。例如,要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工園區工業固廢填埋場項目實施方案(模板)
- 供水管網升級改造工程可行性研究報告(僅供參考)
- 初中生交通安全教育
- 唯美美術教育課件
- 行為規范教育主題班會
- 電子科技大學中山學院《新聞傳播學類專業導論》2023-2024學年第二學期期末試卷
- 天津天獅學院《獸醫病理解剖學》2023-2024學年第二學期期末試卷
- 南華大學船山學院《互換性與測量基礎》2023-2024學年第二學期期末試卷
- 清遠職業技術學院《主任級管理的藝術》2023-2024學年第二學期期末試卷
- 重慶城市科技學院《園林工程(園林水景工程)》2023-2024學年第二學期期末試卷
- 2024年小學生航空航天知識競賽題庫附答案 (共150題)
- 大學物理波動光學復習課件講義
- 教育系統后備干部考試題庫及答案
- DB36T 1899-2023 水運工程大臨建設指南
- 護理文獻分享匯報
- 機械制造行業質量控制制度
- 國際交流項目意識形態工作方案
- 《冠心病》課件(完整版)
- 醫療風險免責協議書
- 1.6醫學影像科-重點專科-實施方案
- 2024年委托招商代理合同范本(三篇)
評論
0/150
提交評論