




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 30/30工程設(shè)計報告設(shè)計題目: 基于Matlab的簡易計算器 學(xué) 院: 專 業(yè): 班 級: 學(xué) 號: 姓 名: 電子郵件: 日 期: 2015年12 月 成 績: 指導(dǎo)教師: 裝訂線 西 安 電 子 科 技 大 學(xué)電 子 工 程 學(xué) 院工 程 設(shè) 計 任 務(wù) 書學(xué)生姓名 指導(dǎo)教師 職稱 學(xué)生學(xué)號 專業(yè) 題目 基于Matlab的簡易計算器 任務(wù)與要求任務(wù)如下:利用MATLAB GUI設(shè)計實現(xiàn)一個圖形用戶界面的計算器程序,實現(xiàn):A.實現(xiàn)十進制數(shù)的加、減、乘、除、簡單計算。B. 科學(xué)計算函數(shù),包括正弦、余弦、正切、余切、開方、指數(shù)等函數(shù)運行。C. 有清除鍵,能清除操作。 要求如下:A熟練掌握Ma
2、tlab GUI界面的設(shè)計與應(yīng)用B最終計算器能夠?qū)崿F(xiàn)預(yù)期的相關(guān)功能開始日期 2015年 11月 日 完成日期 2016年1月 日 課程設(shè)計所在單位 本表格由電子工程學(xué)院網(wǎng)絡(luò)信息中心 編輯錄入 . 摘要 基于Matlab GUI計算器設(shè)計時利用GUI的創(chuàng)建圖像用戶界面進行計算器設(shè)計。設(shè)計計算器時,主要是考慮到計算器的易用性、功能的常用程度進行計算器界面與功能的設(shè)計。通過調(diào)整控件和文本的布局及顏色,使界面簡單大方、布局合理,達到界面友好的效果。計算器設(shè)計時主要利用到get和set兩個函數(shù)進行各個控件屬性值的傳遞和設(shè)置。計算器實現(xiàn)的功能有:數(shù)字09和小數(shù)點的輸入顯示,平方開方和對數(shù)的輸入顯示。進行四
3、則運算、正弦函數(shù)、余弦函數(shù)、正切函數(shù)以及反正弦函數(shù)、反余弦函數(shù)、反正切函數(shù)的計算等等。最后運行調(diào)試,實現(xiàn)基于Matlab GUI的計算器的設(shè)計。關(guān)鍵詞:Matlab GUI 計算器AbstractsBased on Matlab GUI calculator design using the user interface to create images of GUI calculator design.Design calculator, mainly considering the ease of use, function calculators calculator interface
4、 and function of the common level of design.By adjusting the control and the layout of the text and color, make the interface simple and easy, rational layout, to achieve the effect of friendly interface. Calculator design used to get and set two main function for each attribute value transfer and c
5、ontrol Settings.Calculator the functions are: 0 9, according to input and decimal square root and logarithm of input.Arithmetic, sine function and cosine function, tangent function and the arcsine function,arccosine function, the calculation of the arctangent function and so on.Finally running debug
6、ging, implementation design based on Matlab GUI calculator.Keywords: Matlab GUI calculator目錄 TOC o 1-3 h z u HYPERLINK l _Toc439021559 摘要 PAGEREF _Toc439021559 h 3 HYPERLINK l _Toc439021560 Abstracts PAGEREF _Toc439021560 h 3 HYPERLINK l _Toc439021561 目錄 PAGEREF _Toc439021561 h 4 HYPERLINK l _Toc439
7、021562 第一章 緒論 PAGEREF _Toc439021562 h 5 HYPERLINK l _Toc439021563 1.MATLAB簡介: PAGEREF _Toc439021563 h 5 HYPERLINK l _Toc439021564 2本文安排: PAGEREF _Toc439021564 h 5 HYPERLINK l _Toc439021565 第二章 GUI設(shè)計界面 PAGEREF _Toc439021565 h 6 HYPERLINK l _Toc439021566 2.1打開GUI PAGEREF _Toc439021566 h 7 HYPERLINK l
8、_Toc439021567 2.2.添加按鈕 PAGEREF _Toc439021567 h 7 HYPERLINK l _Toc439021568 2.3.根據(jù)按鈕的作用及視覺效果做一定的修改 PAGEREF _Toc439021568 h 7 HYPERLINK l _Toc439021569 2.4.保存、添加功能函數(shù) PAGEREF _Toc439021569 h 8 HYPERLINK l _Toc439021570 2.4.1 數(shù)字鍵編寫 PAGEREF _Toc439021570 h 8 HYPERLINK l _Toc439021571 2.4.2 符號鍵的編寫 PAGEREF
9、 _Toc439021571 h 8 HYPERLINK l _Toc439021572 2.4.3 運算符“=”的編寫 PAGEREF _Toc439021572 h 9 HYPERLINK l _Toc439021573 2.4.4 按鍵“back”的編寫 PAGEREF _Toc439021573 h 9 HYPERLINK l _Toc439021574 2.4.5 按鍵“清空”的編寫 PAGEREF _Toc439021574 h 9 HYPERLINK l _Toc439021575 2.4.6 按鍵“退出”的編寫 PAGEREF _Toc439021575 h 9 HYPERLI
10、NK l _Toc439021576 第三章 計算器的使用和抽樣檢驗 PAGEREF _Toc439021576 h 10 HYPERLINK l _Toc439021577 3.1 除法運算() PAGEREF _Toc439021577 h 10 HYPERLINK l _Toc439021578 3.2 平方運算(2) PAGEREF _Toc439021578 h 10 HYPERLINK l _Toc439021579 3.3 函數(shù)cos (/3) 的計算 PAGEREF _Toc439021579 h 11 HYPERLINK l _Toc439021580 3.4 函數(shù)arcsi
11、n(/3) 的計算 PAGEREF _Toc439021580 h 11 HYPERLINK l _Toc439021581 3.5 以2為底的對數(shù)(log 2)的計算 PAGEREF _Toc439021581 h 12 HYPERLINK l _Toc439021583 3.6 總結(jié): PAGEREF _Toc439021583 h 12 HYPERLINK l _Toc439021584 第四章 特殊函數(shù)的源代碼及總結(jié) PAGEREF _Toc439021584 h 13 HYPERLINK l _Toc439021585 函數(shù)代碼及思路: PAGEREF _Toc439021585 h
12、 13 HYPERLINK l _Toc439021586 總結(jié):問題及其優(yōu)化 PAGEREF _Toc439021586 h 14 HYPERLINK l _Toc439021587 第五章 心得體會 PAGEREF _Toc439021587 h 16 HYPERLINK l _Toc439021588 參考文獻 PAGEREF _Toc439021588 h 17 第一章 緒論1.MATLAB簡介:MATLAB是matrix和laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=108
13、06030 t _blank mathworks公司發(fā)布的主要面對 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=276760 t _blank 科學(xué)計算、可視化以及交互式 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=107828 t _blank 程序設(shè)計的高科技計算環(huán)境。它將 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=64754459 t _blank 數(shù)值分析、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=53329864
14、 t _blank 矩陣計算、科學(xué)數(shù)據(jù)可視化以及非線性 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8802855 t _blank 動態(tài)系統(tǒng)的 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=116070 t _blank 建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計以及必須進行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8645833 t _blank
15、程序設(shè)計語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計算軟件的先進水平。MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=609078 t _blank 編程語言的程序等,主要應(yīng)用于 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=340258 t _blank 工程計算、控制設(shè)計、 HYPERLINK /lemm
16、a/ShowInnerLink.htm?lemmaId=227678 t _blank 信號處理與通訊、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=226789 t _blank 圖像處理、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=560464 t _blank 信號檢測、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=73836346 t _blank 金融建模設(shè)計與分析等領(lǐng)域。2本文安排:本文第一章是緒論部分,主要是關(guān)于Matlab的一個北京介紹,以及對本文的一
17、個大體上的內(nèi)容上的安排。本文第二章側(cè)重介紹了如何運用Matlab中GUI界面功能設(shè)計一個合理的、實用的簡易計算器,并且介紹了如何在設(shè)計好的計算器中添加功能函數(shù),實現(xiàn)預(yù)期的相關(guān)功能。本文第三章粗略的介紹的計算器的基本使用方法以及相關(guān)的一些計算器功能實現(xiàn)效果的檢驗,并對檢驗結(jié)果作簡單的分析介紹。本文第四章主要對部分特殊函數(shù)的源代碼作簡單的分析與介紹,以及總結(jié)程序在設(shè)計過程中發(fā)現(xiàn)的問題及其相應(yīng)的優(yōu)化方案。本文第五章是對本次作業(yè)的心得體會。本文最后是相關(guān)的參考文獻第二章 GUI設(shè)計界面計算器的效果圖:圖1圖22.1打開GUI輸入Guide 回車或者在工具欄上點擊圖標(biāo)打開Guide 窗口:圖 32.2.
18、添加按鈕圖 42.3.根據(jù)按鈕的作用及視覺效果做一定的修改雙擊按鈕(Puch Button)進入按鍵屬性修改顯示字符串大小、字體和顏色,然后對按鈕的位置進行排布,盡量使按鈕集中在靜態(tài)文本框下面。圖52.4.保存、添加功能函數(shù) 把做好的按鈕及靜態(tài)文本框保存后自動彈出Editor的M文本,對然后對相應(yīng)的pushbutton添加功能函數(shù)。以下是相應(yīng)按鈕的功能函數(shù)。2.4.1 數(shù)字鍵編寫在function pushbutton1_Callback(hObject, eventdata, handles)下輸入:textString = get(handles.text1,String);textStr
19、ing =strcat(textString,0);set(handles.text1,String,textString)這是使用句柄handles指向?qū)ο髏ext1,并以字符串形式來存儲數(shù)據(jù)文本框text1的內(nèi)容,并存儲數(shù)個“0”,然后由set(handles.text1,String,textString在text1中輸出。同理,分別在function pushbutton210_Callback(hObject, eventdata, handles)下給19數(shù)字按鍵下編寫此類程序。2.4.2 符號鍵的編寫function pushbutton12_Callback(hObject,
20、eventdata, handles)textString = get(handles.text1,String);textString =strcat(textString,);set(handles.text1,String,textString)strcat的作用是將兩個字符串連接起來,就是在已輸入的存儲數(shù)據(jù)textString后添加“”進行運算。然后執(zhí)行set(handles.text1,String,textString)。符號鍵-、*、/與的運算函數(shù)類似。“平方運算”,主要是由“2”功能實現(xiàn)。2.4.3 運算符“=”的編寫textString = get(handles.text1
21、,String);ans =eval(textString);“eval”的作用是將符號表達式轉(zhuǎn)換成數(shù)值表達式。再由set(handles.text1,String,ans)輸出。2.4.4 按鍵“back”的編寫textString=get(handles.text1, String)w=length(textString)t=char(textString)textString=t(1:w-1) %將w個字符串轉(zhuǎn)成w-1個,即刪除了末位字符set(handles.text1,String,textString)2.4.5 按鍵“清空”的編寫set(handles.text1,String,
22、)2.4.6 按鍵“退出”的編寫close(gcf);第三章 計算器的使用和抽樣檢驗3.1 除法運算() 圖 6圖 7由結(jié)果可知,除法運算功能正確實現(xiàn)。3.2 平方運算(2)圖 8圖 9由結(jié)果可知,乘方運算功能正確實現(xiàn)。3.3 函數(shù)cos (/3) 的計算 圖 10圖 11由結(jié)果可知,cos()運算功能正確實現(xiàn)。3.4 函數(shù)arcsin(/3) 的計算 圖 12圖 13由結(jié)果可知,arcsin()運算功能正確實現(xiàn)。3.5 以2為底的對數(shù)(log 2)的計算圖 14 圖 15調(diào)試的時候發(fā)現(xiàn)一個問題,發(fā)現(xiàn)以2為底的對數(shù)(log 2)計算需要先輸入數(shù)字,然后點擊log2按鈕鍵直接可以計算出正確的結(jié)果
23、,但是不能按照普通計算器那樣先安log2按鈕鍵然后輸入要計算的數(shù)字,再安=鍵顯示結(jié)果,說明書寫的程序還有一些bug,但是我調(diào)試后仍然沒有能夠發(fā)現(xiàn)問題所在,所以該功能還需謹(jǐn)慎使用。3.6 總結(jié):在對計算器其他功能鍵進行的檢驗結(jié)果顯示,該計算器除了log2的計算功能存在bug外,其他功能計算的結(jié)果均與實際結(jié)果相吻合,計算器的功能實現(xiàn)的基本完好且能實現(xiàn)較大數(shù)值的運算,計算結(jié)果用科學(xué)技術(shù)法表示。第四章 特殊函數(shù)的源代碼及總結(jié)函數(shù)代碼及思路:4.1 按鍵“”:通過get函數(shù)獲得輸入的字符,函數(shù)strread獲得輸入字符,并用sqrt函數(shù)計算結(jié)果,set函數(shù)進行顯示輸出textString = get(h
24、andles.text1,String);if(strcmp(textString,0)=1) set(handles.text1,String,0) ;elsea = strread(textString, %f);a=sqrt(a);set(handles.text1,String,a)end4.2 按鍵“sin”通過get函數(shù)獲得輸入的字符,函數(shù)strread獲得輸入字符,并用sin函數(shù)計算結(jié)果,set函數(shù)進行顯示輸出:textString = get(handles.text1,String);textString = strcat(textString,sin();set(handl
25、es.text1,String,textString)4.3 按鍵“cos” :textString = get(handles.text1,String);textString = strcat(textString,cos();set(handles.text1,String,textString)4.4 按鍵“tan” : textString = get(handles.text1,String);if(strcmp(textString,1.57)=1)|(strcmp(textString,-1.57)=1) set(handles.edit1,String,inf);elsete
26、xtString = strcat(textString,tan();set(handles.text1,String,textString)end4.5 按鍵“arcsin” : textString = get(handles.text1,String);textString = strcat(textString,asin();set(handles.text1,String,textString)4.6 按鍵“arccos” : textString = get(handles.text1,String);textString = strcat(textString,acos();se
27、t(handles.text1,String,textString)4.7 按鍵“arctan” : textString = get(handles.text1,String);textString = strcat(textString,atan();set(handles.text1,String,textString)4.8 按鍵“l(fā)og2” : textString = get(handles.text1,String);if(strcmp(textString,0)=1) set(handles.text1,String,error) ;elsea = strread(textSt
28、ring, %f);a=log2(a);set(handles.text1,String,a)end總結(jié):問題及其優(yōu)化1.本次課程設(shè)計中開始時遇到的問題是數(shù)據(jù)進行清零后,再輸入其他的數(shù)據(jù),清零后的字符0仍會保留,會影響其他數(shù)據(jù),解決辦法是將數(shù)據(jù)用空格替換掉就實現(xiàn)了清空: set(handles.text1,String,)2.在定義正弦余弦等函數(shù)的時候,需要注意其定義域,值域的問題。3開始時我的“sin” 函數(shù)編程如下:textString = get(handles.text1,String);a = strread(textString, %f); a=sin(a);set(handles
29、.text1,String,a)%這樣只能在輸入完數(shù)據(jù)后按“sin”鍵實現(xiàn)運算,很不直觀。修改后可以實現(xiàn)按下sin鍵后顯示 “sin(”再輸入要運算的數(shù)據(jù)之后加上“)”按下“=”鍵后就可以運算出結(jié)果了,這樣相對更直觀明了。textString = get(handles.text1,String);textString = strcat(textString,sin();set(handles.text1,String,textString)4log2()函數(shù)仍然存在bug,需謹(jǐn)慎使用。第五章 心得體會本次課程設(shè)計用MATLAB的GUI接口設(shè)計一個簡單的計算器,主要對數(shù)字及運算“0-9、+、-
30、、.、= 、x2 、sin、arcsin、log2”等的代碼程序的了解,在設(shè)計的過程中也遇到不少的問題,通過和同學(xué)的討論,和老師的交流,讓我知道了自己的錯誤和不足,最終順利地解決了這些問題。這次工程設(shè)計,使我進一步加深了對課本知識的了解和掌握,鞏固了所學(xué)的基本知識,更加體會到了MATLAB功能的豐富,更加深刻的認(rèn)識了MATLAB,熟練了編程設(shè)計。其中對計算器按鍵的顏色、大小和排版,使我的思維更加的縝密,讓我在以后的工作生活中,得到了思維的鍛煉。在以后學(xué)習(xí)中,我會更加刻苦,以鍛煉自己的能力。參考文獻(1)樓順天,姚若玉,沈俊霞.MATLAB7.x程序設(shè)計語言. 西安:西安電子科技大學(xué)出版社(2)
31、張威.MATLAB基礎(chǔ)與編程入門M.西安:西安電子科技大學(xué)出版社(3)羅華飛.MATLAB GUI設(shè)計學(xué)習(xí)手記M.北京:北京航空航天大學(xué)出版社 ( 4 ) 鄭阿奇.MATLAB實用教程M.北京:電子工業(yè)出版社(5)孫屹.MATLAB通信仿真開發(fā)手冊M.北京:國防工業(yè)出版社(6)劉衛(wèi)國.MATLAB程序設(shè)計與應(yīng)用M.北京:高等教育出版含完整的.m文件和.fig文件的百度網(wǎng)盤打包地址/s/1borSMwn附錄資料:不需要的可以自行刪除Pascal/C/C+語句對比(補充版)一、Hello world 先看三種語言的樣例:Pascalbegin writeln(Hello world);end.C#
32、include int main() printf(Hello world!n); return 0;C+#include using namespace std;int main()cout Hello world! endl; return 0; 從這三個程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序沒有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using namespace std,這個是打開命名空間的,NOIP不會
33、考這個,可以不管,只要知道就行了。 此外說明 注釋單行用/,段落的話Pascal為,C/C+為/* */。* 常用頭文件(模板)#include #include #include #include #include #include using namespace std;int main() system(“pause”);return 0;二、數(shù)據(jù)類型及定義 這里只列出常用的類型。1、整型PascalC/C+范圍shortint-128 127integershort-32768 32767longintInt -2147483648 2147483647int64long long-9
34、223372036854775808 9223372036854775807byte-0 255wordunsigned short0 65535longwordunsigned int0 4294967295qwordunsigned long long0 18446744073709551615 * 當(dāng)對long long 變量賦值時,后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I64dn”,x);2、實型PascalC/C+范圍realflo
35、at2.9E-39 1.7E38single-1.5E-45 3.4E38doubledouble5.0E-324 1.7E3083、字符即字符串 字符在三種語言中都為char,C里沒有字符串,只有用字符數(shù)組來代替字符串,Pascal和C+均為string。Pascal中字符串長度有限制,為255,C+則沒有。 字符串和字符在Pascal中均用單引號注明,在C/C+中字符用單引號,字符串用雙引號。4、布爾類型 Pascal 中為 boolean,C/C+ 為 bool。值均為True 或 False。C/C+中除0外bool都為真。5、定義 常量的定義均為 const,只是在C/C+中必須要注
36、明常量的類型。在C/C+中還可以用宏來定義常量,此時不注明類型。PascalC/C+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /這個是宏 * 宏定義其實就是直接在程序相應(yīng)的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a endl;特別說明C+中cin一個字符的話會自動跳過空格和回車,Pa
37、scal和C則會讀入空格和回車。在Pascal中writeln(a:n:m) 表示在n個字符寬的輸出域上輸出a保留m位小數(shù)。例如:pascal write(a:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (繁瑣!) 需要加頭文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用臨時 以下三個進制設(shè)定都是永久作用: cout deca; 相當(dāng) printf(“%d”,a); /十進制 cout hexa; 相當(dāng) pri
38、ntf(“%X”,a); /十六進制 cout octa; 相當(dāng) printf(“%o”,a); /八進制例如:cout 12hex12oct1212endl;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:%hd1個short型整數(shù)%d1個int型整數(shù)%u1個unsigned int型整數(shù)%I64d1個long long型整數(shù)%c1個字符%s1個C字符串%f1個float型實數(shù)%lf1個double型實數(shù)%10.4f輸出1個總寬度為10,保留4位小數(shù)的實數(shù) 文件輸入輸出:Pascalassign(input, test.in);assig
39、n(output, test.out);reset(input);rewrite(output);read(a, b);writeln(a, b);close(input);close(output);CFILE *fin = fopen(“test.in”, “r”);FILE *fout = fopen(“test.out”, “w”);fscanf(fin, “%d%d”, &a, &b);fprintf(fout, “%d%d”, a, b);fclose(fin); fclose(fout);C+#include using namespace std;ifstream fin(“t
40、est.in”);ofstream fout(“test.out”);fin a b;fout a b endl;fin.close(); fout.close();因為C+的讀入較慢,個人建議C+的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C+的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。*中國計算機學(xué)會競賽須知發(fā)布的C讀寫程序:(C+ 也能用,cin,cout,scanf,printf 可混用)#include int main() int a,b; freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout); scanf(“%d%d”,&a
41、,&b); printf(“%dn”,a+b); return 0; 或者:freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout);ios:sync_with_stdio(false); 取消同步,cin,cout的速度就不慢了! cinab;couta+bendl; return 0;以下擴充c/c+混用是可行的:#include #include using namespace std;int main() int a,b,c,d; freopen(sum.in,r,stdin); freopen(sum.out,w,stdout
42、); scanf(%d%d,&a,&b); cincd; printf(%dn,a+b); couta+b+c+dsn).Cwhile(scanf(%s%d,s,&n)!=EOF).四、賦值語句及運算符號 一一對應(yīng)的關(guān)系PascalC/C+賦值運算賦值:=基本運算加+減-乘*除(實數(shù))/ (double)除法取整div(int) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x)x- 在C/C+中對某個變量自身進行運算可以簡寫為 變量名 運
43、算符號= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里還存在一種三目運算 變量名 = 條件 ? 值A(chǔ) : 值B 如 x = x 0 ? x : -x; /表示若x 0 則取 x, 否則取 x, 同 if x 0 then x := x else x := -x;五、條件語句1、if C/C+中if 語句的條件必須要用括號括起來,后面不使用then。PascalC/C+if a b then flag := true else flag := false;if (a b) flag = true;else flag = false;2、多種分支
44、 C/C+中為switch,Pascal為case:PascalC/C+case x of 1: inc(x); 2: dec(x); else x := x * x;end;switch (x) case 1: x +; break; case 2: x -; break; default: x *= x; 切記C/C+中一定要寫break,后果你可以去掉break,運行看看就知道了。六、循環(huán)語句1、forPascalC/C+for 變量名 := 初始值 to(downto) 終止值 dofor (變量名=初始值;條件;改變方式)for i := 5 to 10 do dec(a);/終止值
45、大于初始值用 tofor i := 5 downto 1 do dec(a);/終止值小于于初始值用 downtofor (i = 5; i = 1; i-) a-;/*只要i 滿足條件就會一直循環(huán)。C/C+中i是實數(shù)、指針都可以*/C/C+中for的特殊用法:/變量為實數(shù)for (double i = 1; i 符號為間接引用,后面會提到。for (type1 *p = head - next; p; p = p - next) printf(“%d”, p - k);2、whilePascalC/C+while 條件 dowhile (條件)while i 0 do dec(i);whil
46、e (i != 0) i-;/也可寫作 while (i) i-;/在C/C+中非0即為真。3、repeat-until & do-whilePascalC/C+repeat 語句 until 結(jié)束條件;do while (運行條件)repeat int(i) until i 100;do i+; while (i = 100);七、數(shù)組 Pascal中數(shù)組的下標(biāo)可以隨意定義,而C/C+下標(biāo)始終為從0開始到(數(shù)組大小1)。PascalC/C+定義a : array 1.100 of integer;b :array 1.10,1.10 of int64;int a100;int b1010;含
47、義a 為大小為100的integer數(shù)組,合法下標(biāo)為1到100b 為大小為10*10的int64數(shù)組,合法下標(biāo)為1,1到10,10a 為大小為100的int數(shù)組,合法下標(biāo)為0到99b 為大小為10*10的int數(shù)組,合法下標(biāo)為0,0到9,9;使用inc(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=b01+b00+b10; 數(shù)組清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/頭文件包含 string.h*如果要填最大: memset(a,127,sizeof(a) (但達不到 INT_MAX)
48、如果要填最?。?memset(a,128,sizeof(a) (但達不到 INT_MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1: memset(a,-1,sizeof(a)八、字符串 C風(fēng)格的字符串就是字符數(shù)組。 C+和Pascal的字符串使用基本相同,只是C+中字符串下標(biāo)以0開始,Pascal以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個。PascalC (包含)定義用:char sC+(包含)定義用:string s輸入輸出Readln(s);Writeln(s);Scanf(“%s”,s);Printf(“%sn”,s);注:不能輸入輸出c+的字符
49、串Cins;Couts = s 的區(qū)別: getline(cin,s)cins一次性整行讀入,直至行末尾。只讀入一個“單詞”,遇空格和行末停止。例如輸入;How are you?s=” How are you?”讀入整串含空格例如輸入;How are you?s=”How”如果三個都讀:cins1s2s3*C+ 數(shù)字與數(shù)值之間的轉(zhuǎn)換:#include #include #include /必須加入using namespace std;int main() string text = 152; int number; stringstream ss;ss number; /string - i
50、nt coutnumber+100endl; ss string string str = ss.str(); return 0;九、過程和函數(shù)1、過程 在C/C+中沒有過程,但可以把返回值為“空”的函數(shù)理解為過程。PascalC/C+無參過程procedure 過程名;說明部分begin 語句部分 end;/說明部分、begin、end語句部分統(tǒng)稱為過程體void 函數(shù)名(); 主體部分; return ;帶參過程procedure 過程名(形參表)過程體void 函數(shù)名(形參表)過程體 值傳和址傳:當(dāng)一個參數(shù)是值傳時,形參在子過程中相當(dāng)于一個局部變量,對它的改變不影響實在的參數(shù)值。址傳則會
51、影響。下例中a為值傳,b為址傳。初始a = 5,b = 5,運行后a = 5,b = 10;PascalC/C+var a, b:integer;procedure doit(a:integer; var b:integer);begin b := a + b; a := a + b;end;begina := 5;b := 5;doit(a, b);writeln(a, , b);end.void doit(int a, int &b) HYPERLINK a a認(rèn)為值參,b認(rèn)為變量傳參 b += a; a += b; return ;int main()int a = 5, b = 5;d
52、oit(a, b);cout a b;return 0;* 用若干地址傳參可以給調(diào)用者傳回若干值 Void tryit(int &x,int &y,int &z) 調(diào)用時: tryit(a,b,c) ,可以傳回 a,b,c的值。* 用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù) Void tryit( int a) 調(diào)用時: tryit(x),可以傳回整個數(shù)組。例如:void tryit(int a) for(int i=0;i=10;i+) ai=i*2; return; int main() int x10; tryit(x); for(int i=0;i=10;i+) coutxiendl;
53、 system(pause); return 0;*用指向函數(shù)的指針作為參數(shù),可以執(zhí)行指定的函數(shù)。(略)STL 的兩個應(yīng)用:* C+ 快排函數(shù)#include Bool com(int a,int b) Return ab;Int main() Int a10=5,7,3,2,6,8,4,3,5,7;Sort(a,a+10,com); /如果升序可以省略com.For(int i=0;i10;i+) Coutai” “;* 優(yōu)先隊列(以堆排為例)#include #include using namespace std;priority_queue Q;int main() int n,a; cinn; while
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 度校企合作合同書(三):人才培養(yǎng)與交流
- 兒童健康食品供應(yīng)合同
- 醫(yī)療中心服務(wù)合同樣本
- 環(huán)保工程項目內(nèi)部承包合同范本
- 北京市全日制用工勞動合同模板
- 標(biāo)準(zhǔn)版租賃與購銷合同范本
- 雙方合作經(jīng)營合同示范文本
- 城市住宅房屋買賣合同范本
- 文化機械產(chǎn)品用戶體驗評估方法考核試卷
- 工業(yè)機器人協(xié)作機器人技術(shù)考核試卷
- 醫(yī)院護理人文關(guān)懷實踐規(guī)范專家共識課件
- DeepSeek在自然災(zāi)害預(yù)警中的潛力
- 2025年專利技術(shù)保密協(xié)議書模板
- 《研學(xué)旅行課程設(shè)計》課件-研學(xué)課程設(shè)計計劃
- 中醫(yī)痹癥-課件
- 表面粗糙度等級對照表模板.doc
- GMP講課教案簡述
- 東莞虎門架空線路拆除施工方案
- 尿液結(jié)晶教學(xué)課件
- 繪本《你很特別》
- 茶葉揉捻機總體設(shè)計方案的擬定
評論
0/150
提交評論