欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Matlab交互式程序設計教程及舉例

      時間:2019-05-13 01:09:17下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《Matlab交互式程序設計教程及舉例》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Matlab交互式程序設計教程及舉例》。

      第一篇:Matlab交互式程序設計教程及舉例

      Matlab交互式程序設計教程及舉例

      一、創(chuàng)建GUI(Graphics User Interface)新文件和編輯已經存在的GUI文件

      1、在matlab命令窗口中鍵入guide,彈出如下的對話框:

      這是一個雙頁面對話框,分別用于創(chuàng)建新文件和打開已存在的GUI文件,鼠標點擊相應的標題即可切換。

      2、圖中可見“創(chuàng)建新的GUI”有四種模版選項,不管其它幾個,點選第一項,按“OK‘按鈕可打開如圖所示的GUI編輯器

      其中左邊是控件工具欄,用戶可根據(jù)自己的程序將所需要的控件用鼠標拖至右側的編輯區(qū)域進行布局。(用戶可將鼠標懸停在各個控件圖表上查看各個對象的名稱)菜單欄下邊是工具條,其中常用的有“”(保存當前GUI文件和相應的m文件)、“

      ”(編寫相應協(xié)調運行的m文件、“”(編輯當前控件的相應屬性)、“”(創(chuàng)建和修改用戶自己的程序菜單)、“”(保存當前文件并運行改程序)。右下方主要區(qū)域是程序的界面布局窗口(灰色網(wǎng)格區(qū)域是布局區(qū)域,用戶可根據(jù)程序需要用鼠標拖動該區(qū)域的右下角調整該區(qū)域的大?。?。

      3、此時可以按下“”圖標保存該文件(自然此時程序沒有任何功能,只有一個主框架),彈出文件保存對話框,在文件名處輸入一個文件名(英文字母開頭),如“my1”等,擴展名自動設置為“.fig”。系統(tǒng)除了保存當前的界面文件外,還自動生成一個與該界面一起協(xié)調運行的“my1.m”文件,并在m文件編輯窗口中打開它。

      4、瀏覽一下該文件,可以看到該文件中目前自動創(chuàng)建了3個函數(shù): function varargout = my1(varargin)function my1_OpeningFcn(hObject, eventdata, handles, varargin)function varargout = my1_OutputFcn(hObject, eventdata, handles)這些函數(shù)聲明和參數(shù)在后續(xù)的程序設計中不要做任何修改,切記?。?/p>

      對我們目前的應用來說第一個函數(shù)和第三個函數(shù)的程序體也不要做任何修改。根據(jù)自己的程序涉及需要只需修改第二個函數(shù)的程序體部分。(具體的修改方式可以通過我的例子程序加以體會。)

      注意第二個函數(shù)程序體的最后一條語句 guidata(hObject, handles);該語句在后續(xù)的程序設計中將會頻繁使用,現(xiàn)在請先記住它。

      5、祝賀你!你現(xiàn)在已經有了一個名為“my1.m”和“my1.fig”的可以運行的文件了!

      現(xiàn)在可以在matlab命令窗口中鍵入“my1”運行改程序,自然,除了顯示一個標題為“my1”的空白窗口外,你還不能進行任何交互式控制操作(自然除了關閉該窗口外),因為你還沒有寫任何控制程序和添加任何控件。

      二、增加控件及編寫相應的執(zhí)行程序

      1、現(xiàn)在可以編輯運行窗口的標題欄——即將“my1”修改為自己希望的標題,本例中我改為“參數(shù)a,b,n對r=acos(nt+b)的影響”。在GUI設計窗口中點擊“

      ”工具條圖標,彈出如下的“屬性編輯框”

      該窗口對于后續(xù)設計中的每個控件都可以打開(通過點擊“”工具條圖標),它共有2列,左列是當前對象的用戶可以修改的屬性名(按首字母順序排列),右列是每個屬性的可以編輯的屬性值,現(xiàn)在在左列找到“name”一項,將右側的自動生成的“my1”改為“參數(shù)a,b,n對r=acos(nt+b)的影響”。關閉此窗口,點擊“”以保存當前修改并運行程序。OK!窗口的標題欄已經變成了“參數(shù)a,b,n對r=acos(nt+b)的影響”。

      2、現(xiàn)在開始程序的布局及控制設計,先從最簡單的一個控制按鈕開始。

      拖動GUI設計窗口左側的“Push Button”控件至右側設計區(qū)域中的自己希望的位置,放開鼠標,然后可以點選并拖動該控件的右下角改變該控件的大小,則界面中的第一個控件就緒。目前可以點擊“”以保存當前修改并運行程序。發(fā)生了什么事情?運行窗口的響應位置處有了這個交互式控制按鈕!點擊這個按鈕,除了按鈕自動界面上有個形象的動態(tài)響應外,不會有任何響應,因為目前我們還沒有編寫任何控制程序。

      3、現(xiàn)在我們開始編寫該控制程序。點擊“”工具欄圖標,打開m文件編輯器,瀏覽相應的文件,會發(fā)現(xiàn)文件末尾多了一個函數(shù)頭:

      function pushbutton1_Callback(hObject, eventdata, handles)這是系統(tǒng)自動生成的相應按鈕控件的回調函數(shù),系統(tǒng)自動將其命名為pushbutton1,其中pushbutton代表該控件的類別是“Push Button”,后面的阿拉伯數(shù)字代表這是用戶在界面設計中所創(chuàng)建的第幾個(該控件名稱用戶可以進行修改,具體修改方法見下一條說明)?,F(xiàn)在用戶可以在該函數(shù)頭下邊填寫相應的自己所希望的控制程序。

      目前我們只希望用戶點擊按鈕時進行一個簡單的操作:結束當前程序并關閉該窗口。這只需如下的一條語句即可:(將之寫在該函數(shù)頭的下面)close;保存修改后的m文件,回到GUI設計窗口,再次點擊“”運行程序,然后在運行后的窗口中點擊該按鈕。哈哈!如我所愿,程序安全退出了!So Easy!!

      4、下面我們可以調整該按鈕的界面顯示和將自動生成的“pushbutton1”名稱改為自己容易記住的個性化名字。

      在GUI設計窗口中點擊此按鈕,然后點擊工具條上的“”工具條圖標,彈出相應的“屬性編輯框”已調整它的名稱和運行時的界面屬性(任選)。本例中我的調整如下:(1)找到“tag”屬性,將其后的“pushbutton1”改為“jieshu”;(此時如果保存修改,然后進入相應的m文件編輯窗口,可以驚喜地看到其中的最后一個函數(shù)也進行了相應的修改:(將函數(shù)頭中的“pushbutton1”變成了“jieshu”)function jieshu_Callback(hObject, eventdata, handles)% hObject handle to jieshu(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)

      % Hints: get(hObject,'Value')returns position of slider % get(hObject,'Min')and get(hObject,'Max')to determine range of slider %---Executes during object creation, after setting all properties.function slider1_CreateFcn(hObject, eventdata, handles)% hObject handle to slider1(see GCBO)% eventdata reservedhandles not created until after all CreateFcns called

      % Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default.See ISPC and COMPUTER.usewhitebg = 1;if usewhitebg set(hObject,'BackgroundColor',[.9.9.9]);else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end

      %---Executes on slider movement.function slider2_Callback(hObject, eventdata, handles)% hObject handle to slider2(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles empty-handles not created until after all CreateFcns called

      % Hint: slider controls usually have a light gray background, change % 'usewhitebg' to 0 to use default.See ISPC and COMPUTER.usewhitebg = 1;if usewhitebg set(hObject,'BackgroundColor',[.9.9.9]);else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end 其中的兩個_CreateFcn我們后續(xù)不需任何操作,所以也不需要任何修改,現(xiàn)在先記住我們需要對于兩個_Callback函數(shù)進行程序的填寫操作,以響應當程序執(zhí)行時當用戶拖動滾動條時應該引起何種響應,具體的響應程序也在后續(xù)填寫,現(xiàn)在先在GUI界面中修改其屬性值。選中“Slider1”,打開相應的屬性編輯器,找到其中的“Max”一欄,將后面的內容改為“8”(本例我的“a”值最大值為8),找到其中的“Min”一欄,將后面的內容改為“1”(本例我的“a”值最小值為1),找到“Value”一欄,點擊后面的圖標,在彈出的對話框中將“0.0”改為“5”,以指定在程序進行運行時將該滾動條的值設置為5。此時可以運行程序,觀察第一個滾動條中的滑塊位置應該在中間偏右的位置,這說明上述設定已經成功。

      “Slider2”我在這里先不做調整,系統(tǒng)自動默認最小值為0,最大值為1,當前值為0,邏輯上本例的“b”值應該在0與2π之間,作為示例,我在后續(xù)的程序書寫中將獲得的該滾動條上的當前值乘以2π來進行相應的調整。

      作為示例,我對于本程序中參數(shù)n用一個“Edit Text”進行程序運行中的輸入控制,所以在界面上再產生一個“Edit Text”,系統(tǒng)自動將其“Tag”設置為“edit1”,我對此不作修改,只是將其“FontSize”屬性調整為“16”,將‘String’屬性改為“1”。此時檢查m文件,可以觀察到系統(tǒng)又自動創(chuàng)建了2個函數(shù):

      function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)同樣其中的edit1_CreateFcn我們也不要進行任何改動,目前先記住日后在edit1_Callback中編寫程序以響應用戶在程序運行時響應的輸入即可。

      到此,本示例程序的控制對象和2個繪圖區(qū)域已經完全建立完畢,目前我安排的界面如圖所示。

      8、下面再進行一些程序界面的輔助工作,用“Static Text”控件對界面增加一些說明,以增加界面的友好性。

      在第一個圖形窗口上方的空隙中放置一個“Static Text”,將“String”改為“參數(shù)a,b,n對r=acos(nt+b)的影響”,按自己的意愿設置好位置,顏色,字體大小,字體名稱等屬性值,具體設置詳細大家可以通過屬性編輯器窗口查看。

      在兩個滾動條和編輯框的左側依次放置3個“Static Text”,分別用于說明后續(xù)的3個控件分別用于控制哪個參數(shù),為此,將它們的“String”屬性分別設置為“a”、“b”、“n”,大小和顏色等外觀形象進行適當?shù)恼{整。

      在第一個滾動條下的左右兩端各放置一個“Static Text”,分別用于說明該滾動條的最大值和最小值,為此將它們的“String”屬性分別設置為“1”、“8”;在第二個滾動條下的左右兩端各放置一個“Static Text”,分別用于說明該滾動條的最大值和最小值,為此將它們的“String”屬性分別設置為“0”、“2π”。

      最后,在兩個滾動條下方中部分別放置一個“Static Text”對象,分別用于實時顯示對應的滾動條在程序運行時被用戶拉動時當前的具體數(shù)值,所以其“String”屬性值將來在程序中即時獲取,因此在目前設計階段不進行調整,但為了避免混淆,將二者的“Tag”屬性分別修改為“texta”和“textb”以便于進行程序控制,具體實現(xiàn)方式參見后續(xù)程序的編寫。這樣設計完成時得到的界面如下圖。

      三、完整程序的編寫。

      目前本例所希望的界面布局已經全部完成(除菜單外,此功能后續(xù)介紹),現(xiàn)在開始程序的編寫工作,寫具體的程序前,必須來了解matlab的各function(函數(shù))間的數(shù)據(jù)傳輸機制。我們先來考察一下已經完成的m文件,在目前系統(tǒng)自動生成的所有function中,除第一個(相當于C語言中的main函數(shù))外,其它的所有函數(shù)的輸入?yún)?shù)中都有一個名為handles的變量,這是matlab為GUI程序開發(fā)者提供的一個數(shù)據(jù)結構,用于各個函數(shù)之間的數(shù)據(jù)傳輸,handles是結構名,程序中的每個各function間的數(shù)據(jù)都必須以handles.***的形式存在,才能實現(xiàn)各協(xié)調工作的各函數(shù)之間的數(shù)據(jù)傳輸,目前當我們完成設計后,我們已經有了一批形如handles.***的變量,如在添加了第一個顯示為“結 束”的按鈕并將其“Tag”屬性值設置為“jieshu”后系統(tǒng)已經自動地為程序開發(fā)者創(chuàng)建了名為handles.jieshu的變量,如果我們在程序中希望訪問這個按鈕對象,我們就可通過這個handles.jieshu變量找到它,具體的訪問程序編寫后續(xù)寫程序時不難學會。接著我們創(chuàng)建“Tag”屬性分別為“help”和“jump”第二個、第三個按鈕時,系統(tǒng)馬上為我們也創(chuàng)建了相應的兩個變量handles.help和handles.jump。接著我們建立兩個圖形窗口時,系統(tǒng)也依次建立了handles.axe1和handles.axes2兩個變量用于程序中訪問這兩個圖形窗口,在設置好兩個滾動條后,系統(tǒng)也立即建立了handles.slider1和handles.slider2兩個變量,然后再建立滾動條下面的編輯框時也建立了handles.edit1變量?,F(xiàn)在相信你明白“Tag”屬性值的作用了吧?該屬性值是什么,系統(tǒng)就在其前加上handles.而產生可以訪問該控件的一個變量,所以界面設計階段如果自己想修改“Tag”屬性值,必須保證和其它的不能相同,且符合matlab變量的命名規(guī)則——必須英文字母開頭,由字母數(shù)字和下劃線組成。接著我們在界面上布置的每個“Static Text”(靜態(tài)文本)都依次產生一個前綴為handels.的與相應的“Tag”屬性一樣的變量,本例程序中我們所設置的那些靜態(tài)文本變量除最后2個外(即分別位于兩個滾動條下方中間的文本框)都不需要進行控制,所以不用理睬它們,只需記住最后兩個變量名分別是handles.texta和handles.textb,(它們的“Tag”屬性在設計階段我們分別已經改為了texta 和textb。

      除了上述的在界面設計階段所自動建立的前綴為handles.的變量外,如果在每個函數(shù)中還需要創(chuàng)建新的變量,并希望這些變量值能為其它function共享,那么在定義新變量時一定也要建立形如handles.***的變量,如本例程序中我們要用到的handles.a,handles.b,handles.hh,handles.linewidth等。

      明白了數(shù)據(jù)變量命名機制后,我們現(xiàn)在開始完善我們本例的程序編寫。

      1、填寫系統(tǒng)已經生成的my1_OpeningFcn函數(shù)

      在m文件中找到函數(shù):

      function my1_OpeningFcn(hObject, eventdata, handles, varargin)該函數(shù)名稱“_”前的名字與創(chuàng)建GUI時保存的文件名相同,“_”后的“OpeningFcn”由系統(tǒng)自動生成,是固定不變的,開發(fā)者也不可進行修改,該函數(shù)用于執(zhí)行用戶所希望的程序運行時的matlab語句。本例中我希望獲取在設計階段中兩個滾動條中設置好的當前值作為函數(shù)r=acos(nt+b)中的a,b,n的值在左邊大圖像窗口中繪制該函數(shù)的圖像,并作為花絮在第二個圖像窗口中顯示名為“dance_29.gif”的圖像文件(該文件存放在當前目錄下)。

      目前的該函數(shù)文件系統(tǒng)已經自動生成了兩條語句 % Choose default command line output for my1 handles.output = hObject;

      % Update handles structure guidata(hObject, handles);不要修改它們,在兩行語句之間插入自己的語句。本例中我所鍵入的語句和簡單功能說明如下:

      handles.linewidth=2;%定義畫圖的線寬 handles.color='b';%定義畫圖的顏色 handles.a=get(handles.slider1,'value');%獲取第一個滾動條當前值,并將其賦給變量handles.a %注意此句的語法,get(界面中的控件名稱,’所希望獲取的屬性名’ %還記得嗎?我們在設計階段該控件的’value’已經設置為5 %所以此句執(zhí)行后handles.a=5 handles.b=2*pi*get(handles.slider2,'value');%原理與語法上句相同,稍有差異的是我們在設計階段此控件的最小值和最大值 %分別設置為0和1,即用戶在拉動滾動條時此值介于0和1之間

      %而我們希望該函數(shù)中b值的變化在0和2*pi之間,所以對獲得的滾動條的值 %乘以2*pi以達到我們的要求,不過在設計階段該值為0,所以此句執(zhí)行后 % handles.b=0 handles.n=str2double(get(handles.edit1,'string'));%原理和前句相同,獲取handles.edit1的字符串內容,設計階段設置為5 %但其數(shù)據(jù)類型為字符串,所以用str2double函數(shù)轉化為浮點數(shù)賦值給handles.n handles.t=linspace(0,2*pi,1000);%對極坐標函數(shù)r=acos(nt+b)中的自變量t進行采點,0和2*pi之間等間距采 %1000個點(呵呵,數(shù)目顯得比較多,辛苦計算機了)r=handles.a*cos(handles.b+handles.n*handles.t);% 對函數(shù)r=acos(nt+b)由獲取的常數(shù)a,b,n計算對應t的1000個點處的函數(shù)值 %注意此時的變量r我沒有加前綴handles.,因為此變量僅僅在該函數(shù)內部使用 %不需要其它函數(shù)共享,所以我們可以不把它放在handles結構中 [x,y]=pol2cart(handles.t,r);%本來可以直接用polar函數(shù)畫該函數(shù)的圖像,但實驗一中的實驗大家也看到了會

      %出現(xiàn)極坐標網(wǎng)格線,我希望不要它們,所以用pol2cart將這組極坐標數(shù)據(jù)轉化為直角 %坐標,后面用plot函數(shù)在直角坐標系下畫出等效的圖像

      %同樣變量x,y僅僅用于本函數(shù),所以也不需要加上handles.前綴 axes(handles.axes1);%用axes函數(shù)通知系統(tǒng)執(zhí)行后續(xù)畫圖操作在名為handles.axes1的圖形窗口內 %(即在設計時建立的左邊較大的圖形窗口內畫圖)

      handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);%用plot函數(shù)畫由變量handles.linewidth指定線寬的圖像,目前其值為2 %注意該操作返回一個圖像指針值,將其值賦給變量handles.hh,用于其它函數(shù)操作 axis([-8.1 8.1-8.1 8.1]);%調整顯示窗口坐標范圍 axes(handles.axes2);%用axes函數(shù)通知系統(tǒng)執(zhí)行后續(xù)畫圖操作在名為handles.axes2的圖形窗口內 %(即在設計時建立的右邊較大的圖形窗口內畫圖)

      [handles.m1,handles.map1]=imread('dance_29.gif',1:10);%用imread函數(shù)讀取圖像文件dance_29.gif中的數(shù)據(jù)放入handles.m1(4維矩陣)%彩色圖像的顏色索引表放入handles.map1變量中

      %相應的語法和邏輯較為復雜,如果大家有興趣,可查閱matlab幫助系統(tǒng)中的 %image processing toolbox(圖像處理工具箱)中的內容

      %為與后面的語句相結合,大家形式上這樣理解:圖像文件dance_29.gif作為一個 %動態(tài)圖像文件,里面包含了10張靜態(tài)文件(當連續(xù)播放時可產生動畫效果)

      %現(xiàn)在數(shù)據(jù)經上條語句放在了4維矩陣(試著想象一下該矩陣的組成)handles.m1中 %其中三維子陣handles.m1(:,:,:,1)放置第一張圖片信息,??,三維子陣 %handles.m1(:,:,:,10)中依次防止了10幅其中的靜態(tài)圖片文件 imshow(handles.m1(:,:,:,1),handles.map1);%用imshow函數(shù)將上述的第一幅圖像顯示在當前的圖形窗口內 axes(handles.axes1);%由于本程序運行的后續(xù)大部分操作都在第一個圖形窗口內,所以執(zhí)行該語句通知系統(tǒng) %此后再出現(xiàn)的繪圖命令都放在第一個圖形窗口內,即handles.axes1中。保存文件,此時運行程序,結果如下圖所示。

      左邊圖形窗口中顯示的是a=5,b=0,n=1時極坐標函數(shù)r=acos(nt+b)的圖像,右邊圖形窗口中是腦白金老太婆跳舞時的一個瞬間定格畫面。

      現(xiàn)在不難注意程序運行窗口中的一點令人不舒服的地方:兩個滾動條下方的中央位置處還沒有滿足我們的要求——顯示當前滾動條所處位置之值。那么我們繼續(xù)回到m文件的這個函數(shù)中,在剛剛完成的語句后繼續(xù)實現(xiàn)該功能:

      set(handles.texta,'string',num2str(handles.a));%邏輯上該函數(shù)(set)的功能與前述GUI設計中對每個對象填寫屬性值的功能一樣 %唯一的差異是在程序進行中用語句實現(xiàn),其語法為: %set(所要設置的對象變量名,’屬性名’,屬性值)%本語句是將handles.texta這個對象的'string'設置為變量handles.a的值 %細節(jié)方面需注意handles.a是數(shù)值類型,需要用num2str轉化為字符串 set(handles.textb,'string',num2str(handles.b));%與前一條語句功能一樣,只是所修改的對象和屬性值滿足我們的要求。此時再次運行程序,界面如下,實現(xiàn)了我們的顯示目地

      下面介紹一下該函數(shù)內系統(tǒng)自動生成的語句 guidata(hObject, handles);的語法功能。

      為了讓程序內的各函數(shù)共享handles數(shù)據(jù)結構中的每個變量的最新數(shù)據(jù),在每個函數(shù)中,如果用戶修改或新定義了至少一個handles.***變量,那么切記在該函數(shù)的最后一條語句中一定要寫上該語句,以通知其它所有函數(shù):各位函數(shù)筒子們,我在工作中修改了共享數(shù)據(jù),日后工作中請訪問新的數(shù)據(jù),以免數(shù)據(jù)使用舊數(shù)據(jù)而發(fā)生錯誤!所以在日后其它函數(shù)中別忘了加上該語句。

      現(xiàn)在我們拖拉運行程序的滾動條或點擊“跳起來”按鈕,我們會發(fā)現(xiàn)沒有所希望的響應,這是正常的,因為我們還沒有編寫相應的程序語句,下面我們開始逐個編寫各個對象發(fā)生交互性操作時所希望的程序相應。

      2、填寫function slider1_Callback(hObject, eventdata, handles)函數(shù)體

      找到m文件中的function slider1_Callback(hObject, eventdata, handles)書寫下列語句:

      handles.a=get(handles.slider1,'value');%獲取新的滾動條位置值,賦給handles.a set(handles.texta,'string',num2str(handles.a))%在滾動條下方顯示新的相應數(shù)值

      r=handles.a*cos(handles.b+handles.n*handles.t);%用新的a,和已知的b,n和向量t計算新的r [x,y]=pol2cart(handles.t,r);%轉換為直角坐標

      handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);axis([-8.1 8.1-8.1 8.1]);%調整顯示范圍

      guidata(hObject, handles);%通知其它函數(shù)handles結構發(fā)生了變化

      如何?這些語句都不陌生吧?所以進行相應的調整時只需要簡單的復制——粘貼操作。現(xiàn)在重新運行程序,拖動第一個滾動條,發(fā)生了什么變化?很興奮吧?

      3、填寫function slider2_Callback(hObject, eventdata, handles)函數(shù)體

      找到m文件中的function slider2_Callback(hObject, eventdata, handles)書寫下列語句:

      handles.b=2*pi*get(handles.slider2,'value');%獲取新的滾動條位置值,賦給handles.b,注意要乘以2*pi的set(handles.textb,'string',num2str(handles.b))%在滾動條下方顯示新的相應數(shù)值

      r=handles.a*cos(handles.b+handles.n*handles.t);%用新的b,和已知的a,n和向量t計算新的r [x,y]=pol2cart(handles.t,r);%轉換為直角坐標

      handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);axis([-8.1 8.1-8.1 8.1]);%調整顯示范圍

      guidata(hObject, handles);%通知其它函數(shù)handles結構發(fā)生了變化

      4、完成function edit1_Callback(hObject, eventdata, handles)函數(shù)體

      找到m文件中的function edit1_Callback(hObject, eventdata, handles)書寫下列語句:

      handles.n=str2double(get(handles.edit1,'string'));r=handles.a*cos(handles.b+handles.n*handles.t);[x,y]=pol2cart(handles.t,r);handles.hh=plot(x,y,'linewidth',handles.linewidth,'color',handles.color);axis([-8.1 8.1-8.1 8.1]);guidata(hObject, handles);這些語句的語法和邏輯功能我們都熟悉了,就不添加注釋了。

      保存程序,再次運行程序,特別是修改數(shù)據(jù)編輯窗口中的n值,觀察運行結果。下面我們完成小花絮——在右側的圖像窗口中讓老太婆跳舞。

      5、完成function jump_Callback(hObject, eventdata, handles)程序體

      找到函數(shù)function jump_Callback(hObject, eventdata, handles)書寫下列語句

      axes(handles.axes2);%下面的繪圖操作在第二個圖形窗口中進行 for nn=0:49 n=rem(nn,10)+1;%找到循環(huán)變量被10除后的余數(shù),將余數(shù)加1,賦給n imshow(handles.m1(:,:,:,n),handles.map1);%在圖形窗口內顯示程序運行時四圍圖片矩陣的第n個三維矩陣數(shù)據(jù) pause(.05);%暫停0.05秒 end axes(handles.axes1);%循環(huán)結束后通知系統(tǒng)日后繪圖操作在第一個圖形窗口內 注意到此函數(shù)中我們沒有修改handles數(shù)據(jù)結構之值,所以不需要用 guidata(hObject, handles);通知其它函數(shù)。

      介紹一個編程實用小技巧,隨著GUI界面中控件的增加,m文件的function個數(shù)也越來越多,為了快速找到自己希望的函數(shù),技巧如下:

      在m文件編輯器菜單欄“”中的圖標“”,點擊它,會出現(xiàn)一個下拉菜單,里面列出了本m文件中所有的函數(shù),點擊自己希望的函數(shù)名,則編輯窗口中光標會自動跳轉到此函數(shù)頭部分。如何?很人性化吧?

      三、為系統(tǒng)控制添加菜單控制

      除了用我們已經看到的“按鈕”等控件增加程序的交互性手段外,也可以象我們常見的很多程序一樣,通過窗口頂部區(qū)域的菜單進行程序的交互式控制。本例中我們建立兩個簡單的菜單,其功能是第一個用于當前圖像的顏色和圖形線寬的控制,第二個用于打開此文檔。

      1、建立兩個主菜單

      回到GUI界面設計環(huán)境,在工具條上點擊“標,打開如下圖所示的菜單編輯器。

      ”(創(chuàng)建和修改用戶自己的程序菜單)圖

      我們可以用它們編輯兩類菜單:“Menu Bar”和“Context Menu”(上下文菜單),本文檔只介紹前者,大家如果有性趣第二類菜單,可以查閱matlab的幫助系統(tǒng)。

      連續(xù)點擊兩次上方的工具條中的第一個圖標,下面的窗口中增加了兩項,如圖所示。

      系統(tǒng)自動將其顯示內容和變量名“Tag”(這個不陌生吧?)分別命名為“Untitiled 1”和“Untitiled 2”,現(xiàn)在點選其中的一個,如“Untitiled 1”,編輯器右邊會出現(xiàn)該菜單的顯示和控制屬性編輯器如左圖,編輯其屬性如右圖

      點選第二個菜單項“Untitled 2”,分別設置兩個屬性如下圖。

      點擊“OK”按鈕?,F(xiàn)在保存并運行程序,可以看到運行窗口上方出現(xiàn)了兩個菜單條,這時再查閱一下m文件,我們會發(fā)現(xiàn)系統(tǒng)又自動生成了兩個函數(shù)頭

      function m1_Callback(hObject, eventdata, handles)function m2_Callback(hObject, eventdata, handles)其命名邏輯是我們剛才在設計時將兩個菜單對象的的“Tag”屬性分別修改為了m1和m2。

      現(xiàn)在在function m2_Callback(hObject, eventdata, handles)下書寫如下語句 Winopen('Matlab交互式程序設計教程及舉例.doc');保存文件,再次運行,如果當前目錄下有該文件,則windows系統(tǒng)接受指令,打開該文件。

      2、建立第一個主菜單下分別用于控制顏色和線寬的兩個子菜單

      回到GUI編輯環(huán)境,點擊“”圖標,再次打開菜單編輯器,選擇第一個菜單項。

      然后連續(xù)點擊左上方的第二個圖標,建立該菜單的兩個子菜單項。分別重復1中的操作,在右方編輯窗修改它們的“Label”和“Tag”兩個屬性如下圖所示。

      對第一個子菜單項同樣分別建立三個子菜單項,“Label”屬性依次改為“1”、“2”、“3”,“Tag”屬性依次改為“m111”、“m112”、“m113”(大家自己可以任意取個性化的名字,我命名的原則是m代表“菜單”,“m113”是第1個主菜單下的第1個子菜單下的第3個菜單項,這樣日后在m文件下寫程序時不至于混亂);對第二個子菜單項同樣分別建立三個子菜單項,“Label”屬性依次改為“紅色”、“綠色”、“藍色”,“Tag”屬性依次改為“m121”、“m122”、“m123”。注意用鼠標點擊其中的名為“2”和“藍色”的兩個菜單項的第5個屬性前的框,出現(xiàn)“√”,用于在程序運行時給用戶指示當前的畫圖操作是用線寬為“2”的“藍色”繪制曲線,選擇后如圖

      。修改完后菜單編輯器顯示如下圖。

      點擊“OK”按鈕,結束菜單編輯。保存程序并運行之,在程序運行窗口中瀏覽觀察菜單和子菜單的變化。查看m文件,發(fā)現(xiàn)系統(tǒng)又自動生成了8個函數(shù)頭,后續(xù)我們編程控制需要的幾個函數(shù)分別是:

      function m111_Callback(hObject, eventdata, handles)function m112_Callback(hObject, eventdata, handles)function m113_Callback(hObject, eventdata, handles)function m121_Callback(hObject, eventdata, handles)function m122_Callback(hObject, eventdata, handles)function m123_Callback(hObject, eventdata, handles)其中前3個是用戶選擇“線寬”的3個菜單項的響應函數(shù),后3個是用戶選擇“顏色”的3個菜單項的響應函數(shù)。

      3、控制“線寬”的函數(shù)編輯

      在m文件中找到函數(shù)function m111_Callback(hObject, eventdata, handles)在其后書寫下列語句

      handles.linewidth=1;set(handles.hh,'linewidth',handles.linewidth);%改變名為handles.hh的圖形的線寬為1 set(handles.m111,'checked','on');%將該菜單項點選上“√”以指示當前畫圖線寬為1 set(handles.m112,'checked','off');set(handles.m113,'checked','off');%另兩項菜單項如果之前有“√”,將其去掉 guidata(hObject, handles);%通知系統(tǒng)其它函數(shù)handles數(shù)據(jù)結構發(fā)生了變化

      在m文件中找到函數(shù)function m112_Callback(hObject, eventdata, handles)在其后書寫下列語句

      handles.linewidth=2;set(handles.hh,'linewidth',handles.linewidth);%改變名為handles.hh的圖形的線寬為2 set(handles.m112,'checked','on');%將該菜單項點選上“√”以指示當前畫圖線寬為2 set(handles.m111,'checked','off');set(handles.m113,'checked','off');%另兩項菜單項如果之前有“√”,將其去掉 guidata(hObject, handles);%通知系統(tǒng)其它函數(shù)handles數(shù)據(jù)結構發(fā)生了變化

      在m文件中找到函數(shù)function m113_Callback(hObject, eventdata, handles)在其后書寫下列語句

      handles.linewidth=3;set(handles.hh,'linewidth',handles.linewidth);%改變名為handles.hh的圖形的線寬為3 set(handles.m113,'checked','on');%將該菜單項點選上“√”以指示當前畫圖線寬為3 set(handles.m111,'checked','off');set(handles.m112,'checked','off');%另兩項菜單項如果之前有“√”,將其去掉 guidata(hObject, handles);%通知系統(tǒng)其它函數(shù)handles數(shù)據(jù)結構發(fā)生了變化

      保存程序,運行它們,隨意點選“線寬”的3個子菜單項,觀察菜單和圖形的變化,體會相應的程序控制邏輯。

      4、控制“顏色”的函數(shù)編輯

      在m文件中找到函數(shù)function m121_Callback(hObject, eventdata, handles)在其后書寫下列語句 handles.color='r';set(handles.hh,'color',handles.color);%改變名為handles.hh的圖形的顏色為紅色 set(handles.m121,'checked','on');%將該菜單項點選上“√”以指示當前畫圖顏色為紅色 set(handles.m122,'checked','off');set(handles.m123,'checked','off');%另兩項菜單項如果之前有“√”,將其去掉 guidata(hObject, handles);%通知系統(tǒng)其它函數(shù)handles數(shù)據(jù)結構發(fā)生了變化 在m文件中找到函數(shù)function m122_Callback(hObject, eventdata, handles)在其后書寫下列語句 handles.color='g';set(handles.hh,'color',handles.color);%改變名為handles.hh的圖形的顏色為綠色 set(handles.m122,'checked','on');%將該菜單項點選上“√”以指示當前畫圖顏色為綠色 set(handles.m121,'checked','off');set(handles.m123,'checked','off');%另兩項菜單項如果之前有“√”,將其去掉 guidata(hObject, handles);%通知系統(tǒng)其它函數(shù)handles數(shù)據(jù)結構發(fā)生了變化

      在m文件中找到函數(shù)function m123_Callback(hObject, eventdata, handles)在其后書寫下列語句 handles.color='b';set(handles.hh,'color',handles.color);%改變名為handles.hh的圖形的顏色為藍色 set(handles.m123,'checked','on');%將該菜單項點選上“√”以指示當前畫圖顏色為藍色 set(handles.m121,'checked','off');set(handles.m122,'checked','off');%另兩項菜單項如果之前有“√”,將其去掉 guidata(hObject, handles);%通知系統(tǒng)其它函數(shù)handles數(shù)據(jù)結構發(fā)生了變化

      保存程序,運行它們,隨意點選“顏色”的3個子菜單項,觀察菜單和圖形的變化,體會相應的程序控制邏輯。

      第二篇:MATLAB程序設計教學大綱

      《MATLAB程序設計教學大綱》

      課程代碼:1010330 實驗教學:24學時+16學時 課程學分:2.5 先修課程:C/C++程序設計語言或VB程序設計語言 ? 課程的性質和教學目標

      《MATLAB程序設計》是工科大學非計算機類理、工、管理專業(yè)學生的一門計算機必修基礎課。MATLAB 作為一種高級科學計算軟件,是進行算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的交互式應用開發(fā)環(huán)境。本課程注重實際能力的培養(yǎng),使學生能夠運用MATLAB進行一般的工程計算,掌握MATLAB的基本技術。

      二、教學要求:

      課程的指導思想是“學以致用”,課程知識點系統(tǒng)全面,能鍛煉學生的動手能力。課堂教學講述了MATLAB基本技術,包括基本計算、矩陣處理、符號運算、計算結果可視化等,結合實際問題,探索 “理論結合實踐”的教學模式,注重精講多練,培養(yǎng)學生利用MATLAB解決專業(yè)實際工程問題的能力。課堂教學覆蓋不到之處通過實驗課讓學生在實踐中學習,力求實現(xiàn)“教學與自學相結合”的教學原則,重視創(chuàng)新能力和綜合能力的培養(yǎng)。

      三、教學內容

      第一章 MATLAB課程概述()

      1.MATLAB開發(fā)環(huán)境介紹 2.MATLAB環(huán)境設置和路徑設置 3.MATLAB的安裝與激活 第二章 MATLAB程序設計基礎()1.常量與變量的使用方法; 2.數(shù)組的創(chuàng)建和使用方法; 3.各種運算符的使用方法;

      4.函數(shù)文件的創(chuàng)立和使用:m文件的創(chuàng)建和調用方法; 5.三種控制結構(順序結構、分支結構和循環(huán)結構)6.調試技巧

      第三章 MATLAB數(shù)值計算()

      1.矩陣運算(矩陣的構造,矩陣的基本運算和高級運算)2.多項式運算(多項式的構造和運算)3.其他數(shù)值計算

      4.數(shù)據(jù)處理(數(shù)據(jù)插值和曲線擬合)第四章 MATLAB符號計算 1.符號定義

      2.符號運算(初等代數(shù)運算,復合函數(shù),反函數(shù),極限,泰勒展開,級數(shù)求和,符號微分,符號積分等)第五章 圖形處理 1.2D圖形處理 2.3D圖形處理 3.聲音與動畫的實現(xiàn) 第六章 圖形用戶界面編程簡介 第七章 工具箱的使用介紹

      四、教材與參考書

      教材:《MATLAB基礎教程》(2011年第一版)清華大學出版社

      叢書名

      第三篇:matlab程序設計及心得體會

      1.編寫程序,建立向量n=〔1,2,3,4,5〕,并利用n產生下列向量:(1)2 , 4 , 6 , 8 , 10

      (2)1/2 , 1 , 3/2 , 2 , 5/2(3)1, 1/2 , 1/3 , 1/4 , 1/5

      (4)1 , 1/4 , 1/9, 1/16, 1/25。

      注意:向量n=1:5,/是傳統(tǒng)意義上的矩陣的除法,而./是兩個矩陣的對應元素相除,同理相乘。此處是對應元素相除,所以一定要記住應該用點除,而非除法。2.從鍵盤輸入一個三位數(shù),將它反向輸出。例如輸入639,輸出為936。

      注意:輸出函數(shù):disp(),取整用fix(),取余函數(shù)mod(x,y)與rem(x,y)一樣。3.輸入一個百分制成績,要求輸出成績等級A,B,C,D,E。其中90-100分為A,80-89分為B,70-79分為C,60-69分為D,60分以下為E。

      要求:(1)分別用if語句和switch語句實現(xiàn)。

      (2)輸入百分制成績后要判斷該成績的合理性,對不合理的成績應輸出出錯信息。注意:switch語句中的case最好用0~9的數(shù)字表示而不是表達式!不可用break!后不可用表達式!!為了表示另一種情況,記住用if與其搭配~不要太死板,學會靈活。4.建立5*6的矩陣,要求輸出矩陣第n行元素。當n的值超過矩陣的行數(shù)時,自動轉為輸出矩陣最后一行元素,并給出出錯信息。

      注意:隨機產生一個0~1矩陣可以用rand函數(shù),整數(shù)矩陣便用fix(100*rand(m,n))函數(shù)。產生m*n 階[a,b]均勻分布U(a,b)的隨機數(shù)矩陣:

      unifrnd(a,b,m, n)

      5.產生20個兩位隨機整數(shù),輸出其中小于平均值的偶數(shù)。

      注意:fix(100*rand(m,n))與round(100*rand(m,n))幾乎一樣的,隨機產生m*n階矩陣,學會變通,隨機產生兩位隨機整數(shù)。fix是指向0靠攏取整。fix(3.7)=3,fix(-3.7)=-3。floor指向下取整,ceil指向上取整。round指四舍五入取整!round最常用~記住a=o指賦值,而a==0指判斷,與c語言一樣~當矩陣只有一行時,可用a(i)表示每一個數(shù)。用k(i)表示來輸出每一個數(shù)!表示矩陣中的每一列時用a(:,i),表每一行時用a(i,:)。

      6.輸入20個數(shù),求其中的最大數(shù)和最小數(shù)。要求分別用循環(huán)結構和調用MATLAB的max函數(shù)、min函數(shù)來實現(xiàn)。注意:熟記其中的函數(shù)將對編程的速度有很大的提高!孩子,加油!

      e0.3a?e?0.3a0.3?asin(a?0.3)?ln7.y?,當a?。?0.,-2.9,……,2.9,3.0時,求各點22的函數(shù)值。要求分別用順序結構和循環(huán)結構實現(xiàn)。

      注意:用size返回向量元素的個數(shù),如果是矩陣,size(a,2)指返回矩陣的豎的個數(shù),即多少列。其中一維是指行,二維指列。記住表示一個向量時,步長放中間。!

      8.當n分別取100、1000、10000時,求下列各式的值:(要求分別用循環(huán)結構和向量運算(使用sum函數(shù))來實現(xiàn))

      1111??????? 2222123n111(2)1?????

      3571111(3)?????n??

      416644(1)

      ?2n?2n?2?2??4?4??6?6???(4)?注意:使用while循環(huán)時,注意對n初始化,??????????1?3??3?5??5?7???2n?1???2n?1??與c語言較象。普通指數(shù)時直接用^,自然指數(shù)時,若x已知,用y=exp(x)。

      9.若兩個連續(xù)自然數(shù)的乘積減1是素數(shù),則稱這兩個連續(xù)自然數(shù)是親密數(shù)對,該素數(shù)是親密素數(shù)。例如:2*3-1=5,由于5是素數(shù),所以2和3是親密數(shù)對,5是親密素數(shù)。求〔2,50〕區(qū)間內,(1)親密數(shù)對的對數(shù);

      (2)與上述親密數(shù)對對應的所有親密素數(shù)之和。

      注意:x=primes(n)輸出不超過n整數(shù)的素數(shù),a=length(x)表示輸出素數(shù)的個數(shù)。用b=isprime(n)來判斷n是否為素數(shù),若為素數(shù)則b=1,反之為0。學會變通,求和用if循環(huán)就好。

      111110.根據(jù)1??????,求:

      3572n?1(1)y<3時的最大n值;(2)與(1)的n值對應的y值。

      注意:不能被題目嚇跑~~·很簡單的,耶耶!

      11.已知y?f(40)

      f(30)?f(20)(1)當f(n)=n+10ln(n2+5)時,y的值是多少?

      (2)當f(n)=1*2+2*3+3*4+……+n*(n+1)時,y的值是多少?

      12.編寫一個函數(shù)文件,用于求兩個矩陣的乘積和點乘,然后在命令文件中調用該函數(shù)。13.定義一個函數(shù)文件,求給定復數(shù)的指數(shù)、對數(shù)、正弦、余弦,并在命令文件中調用該函數(shù)文件。

      14.先用函數(shù)的遞歸調用定義一個函數(shù)文件求1005010?i,然后調用該函數(shù)文件求

      i?1n1zhuyi:yaoxunzaoyigehanshubiannnengjiejue defangfa~~ k?k????kk?1k?1k?1215.寫出下列程序的輸出結果。(1)

      s=0;a=[12 13 14;15 16 17;18 19 20;21 22 23];for k=a

      for j=1:4

      if rem(k(j),2)~=0

      s=s+k(j);

      end

      end end s

      (2)命令文件 global x x=1:2:5;y=2:2:6;sub(y);x y 函數(shù)文件sub.m function fun=sub(z)global x z=3*x;x=x+z;16已知:?1111n?1????????1?,編程求?的近似值。

      43572n?1 注意:在編程過程中,一個小小的乘號將導致很難查出錯誤,很會影響心情,所以不能忽略小問題,必須仔細小心!

      ?1?517.輸入下面的矩陣,A???9??13?234??678?101112??141516??求該矩陣的對角線元素之和,并找出最大和最小的元素的值以及其所在的行、列號。將最大值替換成inf,最小值替換成-inf。注意:①找出矩陣中具體某個元素的具體位置的方法: ind=find(a==max)siz=[4,4]

      [I,J] = ind2sub(siz,ind)便可以找到最大元素的位置![I1,I2,I3,...,In] = ind2sub(siz,ind)②對角線元素用diag函數(shù)~~ ③要找出一個很大矩陣的最大最小元素用兩個for循環(huán)。!加油~寫出這道題好興奮啊,這種感覺真好!

      18.求解猴子吃桃問題。猴子在第一天摘下若干個桃子,當即吃了一半,又感覺不過癮,于是就多吃了一個。以后每天如此,到第10天再想吃時,卻發(fā)現(xiàn)就只剩一個桃子。請編程計算第一天猴子摘的桃子個數(shù)。

      注意:不要被問題嚇到,很簡單的一個問題罷了~當順著不行時,試著倒著來解答編程。19.求n階勒讓德多項式的值,其遞歸公式為:

      p(n,x)?((2*n?1)*x*p(n?1,x)?(n?1)*p(n?2,x))/n

      p(0,x)?1;p(1,x)?x注意;它要的僅僅只是一個定義函數(shù)~并沒有需要一個確切的值。20.利用恒等式?26??k?1?1計算圓周率的近似值。k2注意:sqrtm(a):矩陣a開平方根;sqrt(a):矩陣a對應的元素開平方根。

      21.輸入一個正整數(shù),如果它是偶數(shù)就除以2,是奇數(shù)就乘以3加上1,如此一直變化,直到最后變成1。

      注意:判斷一個數(shù)是否為整數(shù)可以用判斷語句a==round(a)!在matlab中,用~=表示不等于,與c語言不同。22.(1)用遞歸調用求Fibonacci數(shù)列定義如下: f1=f2=1 , f(n+1)=f(n)+f(n-1)。

      (2)求Fibonacci數(shù)列大于4000的最小項。

      注意:這道題目很簡單,卻花了很長的時間~·主要是題目意思沒弄清便動筆,要學會分清題意,冷靜分析。另外還要注意while的條件,1便執(zhí)行,0則跳出~。

      23.列出所有的水仙花數(shù)。水仙花數(shù)是一個三位數(shù),其各位數(shù)字的立方和等于該書本身。例如:153=13+53+33 注意:當輸出的不僅僅是一個數(shù)時,需要定義一個數(shù)組a(i),i=i+1,輸出為a。if語句中,判斷條件中為==,而不是賦值語句=??!別總犯相同的錯誤~~·

      24.試編一個m程序,將一維數(shù)組x中的N個數(shù)按顛倒的次序重新存儲。如N=5,原來x為:而經過顛倒處理后x中數(shù)據(jù)的次序應該為:x=[ 9 7 5 3 1 ]

      25.已知某班的5名學生的三門課成績列表如下:

      學生序號1 2 3 4 5 高等數(shù)學78 89 64 73 68 外語83 77 80 78 70 MATLAB語言82 91 78 82 68 試寫出有關命令,先分別找出三門課的最高分及其學生序號;然后找出三門課總分的最高分及其學生序號。針對上述的成績表,求出其三門課總分存入數(shù)組ZF,再利用SORT命令對之按降序排序,同時把相應的學生序號存入數(shù)組XH。

      第四篇:PPT程序設計教程

      PPT程序設計教程 文章列表

      http://004km.cn/Article/ShowClass.asp?ClassID=455 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ·用PowerPoint制作試卷(235)

      ·PowerPoint制作自動交互問答課件(145)·妙用Office VBA制作交互式幻燈片(133)·用PowerPoint制作比賽評分系統(tǒng)(119)·在PowerPoint中制作精確坐標系(103)·用VBA實現(xiàn)課件中的智能交互(114)·控件的應用(102)

      ·用C#實現(xiàn)在PowerPoint文檔中搜索文本(59)·使用數(shù)據(jù)庫做PPT交互式試題基礎(509)·PowerPoint 2002 vba開發(fā)對象詳解(78)

      ·PowerPoint中利用VBA調用、插入、引用ActiveX控件方法(309)·用PPT制作評分系統(tǒng)(154)·VBA開發(fā)實用指南(652)

      ·在PPT中實現(xiàn)Flash播放控制(117)·VBA開發(fā)共用對象詳解(5)(48)·VBA開發(fā)共用對象詳解(4)(34)·VBA開發(fā)共用對象詳解(3)(65)·VBA開發(fā)共用對象詳解(2)(27)·VBA開發(fā)共用對象詳解(1)(35)·PowerPoint 控件的使用(30)

      ·給想學用VBA在PPT中做交互的網(wǎng)友的三點建議(57)

      第五篇:C程序設計算法總結舉例

      C程序設計算法總結舉例

      1.順序結構舉例

      (該類題目,通常輸入一些數(shù)據(jù),再通過使用一個或幾個數(shù)學公式求解,通過賦值表達式得到結果,并輸出。包括求三角形面積,相關物體體積,求溫度,解二元一次方程組、一元二次方程等)

      1-1.求溫度轉換 華氏-攝氏溫度轉換公式:c=5/9(f-32)#include main(){ float c, f;scanf(“%f”, &f);c = 5.0 / 9 *(fi + 1);//pow(x,y)計算x的y次方 }...3-5.求 s=a+aa+aaa+aaaa+a...a(n個a),a,n由鍵盤輸入!。如輸入a=3 n=5 則 s=3+33+333+3333+33333 ……

      k = s = a;for(i = 1;i <= nyy1;j >= 0;j--){ printf(“%c”, 'A' + j);} printf(“n”);

      } }

      #include main(){ int i, j, n;scanf(“%d”, &n);for(i = 0;i < n;i++){ for(j = 0;j < n1;j++){ printf(“%c”, '*');} printf(“n”);

      } }

      4.數(shù)組

      包括:排序、查找、字符串長度、字符串大小寫轉換、比較字符串大小、字符串連接、字符串拷貝、數(shù)列前n項、統(tǒng)計字符串中單詞個數(shù)、求數(shù)組元素最值、二維數(shù)組輸入、輸出、轉置、數(shù)字(字符串)逆序輸出。數(shù)組中統(tǒng)計奇數(shù)偶數(shù),二維數(shù)組對角線元素,行列元素的相關處理。

      4-1排序(選擇法、冒泡法)冒泡法

      (1)冒泡法排序算法

      將一個數(shù)字序列存放在數(shù)組中,相鄰的兩個數(shù)進行比較,若前一個數(shù)大則交換,...一趟下來最大數(shù)必然在最后,然后對于剩下元素反復執(zhí)行上面操作 #include main(){ int a[10], i, j, x;for(i = 0;i <= 9;i++)scanf(“%d”, &a[i]);for(i = 0;i <= 8;i++)for(j = 0;j <= 8-i;j++)if(a[j] > a[j + 1]){ x = a[j];a[j] = a[j + 1];a[j + 1] = x;} printf(“n”);for(i = 0;i <= 9;i++)printf(“%5d”, a[i]);}(2)函數(shù)冒泡法

      編寫自定義函數(shù),實現(xiàn)冒泡法排序

      #include main(){ void qipao(int a[]);int a[10], i;for(i = 0;i <= 9;i++){ scanf(“%d”, &a[i]);} qipao(a);printf(“n”);for(i = 0;i <= 9;i++)printf(“%5d”, a[i]);} void qipao(int a[]){ int i, j, x;for(i = 0;i <= 8;i++)for(j = 0;j <= 8-i;j++)if(a[j] > a[j + 1])

      {

      x = a[j];

      a[j] = a[j + 1];

      a[j + 1] = x;} }(3)選擇排序算法

      將一個數(shù)字序列存放在數(shù)組中,假設“剩下的序列中第一個元素”為最小值,將其與數(shù)組中其它元素進行比較,找到最小值,將該最小值與“剩下的序列中第一個元素”進行交換,最小元素放到剩下序列的第一個位置,反復做這個操作……

      #include main(){ int a[10], i, j, m, x;for(i = 0;i <= 9;i++)scanf(“%d”, &a[i]);for(i = 0;i <= 8;i++){ m = i;for(j = i + 1;j <= 9;j++)if(a[m] > a[j])m = j;x = a[m];a[m] = a[i];a[i] = x;} printf(“n”);for(i = 0;i <= 9;i++)printf(“%5d”, a[i]);}(4)函數(shù)選擇法排序算法

      #include main(){ void xuanze(int a[]);int a[10], i, j;for(i = 0;i <= 9;i++)scanf(“%d”, &a[i]);xuanze(a);printf(“n”);for(i = 0;i <= 9;i++)printf(“%5d”, a[i]);}

      void xuanze(int a[]){ int i, j, x, m;for(i = 0;i <= 8;i++){ m = i;for(j = i + 1;j <= 9;j++)if(a[m] > a[j])m = j;x = a[m];a[m] = a[i];a[i] = x;} } 4-2查找

      順序查找:數(shù)字序列放到數(shù)組中,不要求數(shù)組元素本身有序,查找x是否在數(shù)列中: ……

      for(i=0;i<=9;i++)if(x==a[i])printf(“zhaodaole %d ,%d”,x,i+1);

      折半查找:1.要求數(shù)列必須有序的;2.比較數(shù)列中間元素;3.縮小范圍,重復2…… 4-3數(shù)列前n項

      若已知 f1=1,f2=2,f3=3, fn=fn-1+3fn-2+fn-3 n>=4,用數(shù)組的方法求數(shù)列前n項(n由鍵盤輸入)及前n項和。

      #include main(){ int f[100], n, i, s;scanf(“%d”, &n);f[1] = 1, f[2] = 2, f[3] = 3;s = f[1] + f[2] + f[3];for(i = 4;i <= n;i++){ f[i] = f[i2] + f[i1;j++){ a[i][j] = a[i1] + a[ia[1][1];printf(“n最大值%3d,下標%d,%d”, max, m, n);printf(“n數(shù)組和%3d,對角線和%3d”, s, c);

      //輸出所有列下標大于行下標的數(shù)組元素 for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++)if(j > i){ printf(“n行標: %d,列標: %d,元素: %d”, i, j, a[i][j]);} //數(shù)組f里元素均初始化為0 for(i = 0;i <= 2;i++)f[i] = 0;//求每列元素的和,并將其放入數(shù)組f中 for(i = 0;i <= 2;i++){ for(j = 0;j <= 2;j++)f[i] = f[i] + a[j][i];printf(“列下標為 %d的元素和為: %3d”, i, f[i]);}

      //求所有能被2,3,5整除的數(shù)組元素的平方和 for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++){ if(a[i][j] %(2 *3 * 5)== 0)s1 = s1 + a[i][j] *a[i][j];} printf(“能被2,3,5整除的數(shù)組元素的平方和:%5dn”, s1);

      //將二維數(shù)組賦值給一維數(shù)組,并輸出 n = 0;for(i = 0;i <= 2;i++)for(j = 0;j <= 2;j++){ b[n] = a[i][j];printf(“%5d”, b[n]);n++;} } 4-8 字符串應用舉例

      #include #include main(){ char a[100], b[30], c[4][100];int i, j, k;//編程序實現(xiàn)gets函數(shù)功能如下: puts(“請輸入字符串a:n”);i = 0;while((a[i] = getchar())!= 'n'){ i++;} a[i] = '