




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 30/30工程設(shè)計(jì)報(bào)告設(shè)計(jì)題目: 基于Matlab的簡(jiǎn)易計(jì)算器 學(xué) 院: 專 業(yè): 班 級(jí): 學(xué) 號(hào): 姓 名: 電子郵件: 日 期: 2015年12 月 成 績(jī): 指導(dǎo)教師: 裝訂線 西 安 電 子 科 技 大 學(xué)電 子 工 程 學(xué) 院工 程 設(shè) 計(jì) 任 務(wù) 書學(xué)生姓名 指導(dǎo)教師 職稱 學(xué)生學(xué)號(hào) 專業(yè) 題目 基于Matlab的簡(jiǎn)易計(jì)算器 任務(wù)與要求任務(wù)如下:利用MATLAB GUI設(shè)計(jì)實(shí)現(xiàn)一個(gè)圖形用戶界面的計(jì)算器程序,實(shí)現(xiàn):A.實(shí)現(xiàn)十進(jìn)制數(shù)的加、減、乘、除、簡(jiǎn)單計(jì)算。B. 科學(xué)計(jì)算函數(shù),包括正弦、余弦、正切、余切、開方、指數(shù)等函數(shù)運(yùn)行。C. 有清除鍵,能清除操作。 要求如下:A熟練掌握Ma
2、tlab GUI界面的設(shè)計(jì)與應(yīng)用B最終計(jì)算器能夠?qū)崿F(xiàn)預(yù)期的相關(guān)功能開始日期 2015年 11月 日 完成日期 2016年1月 日 課程設(shè)計(jì)所在單位 本表格由電子工程學(xué)院網(wǎng)絡(luò)信息中心 編輯錄入 . 摘要 基于Matlab GUI計(jì)算器設(shè)計(jì)時(shí)利用GUI的創(chuàng)建圖像用戶界面進(jìn)行計(jì)算器設(shè)計(jì)。設(shè)計(jì)計(jì)算器時(shí),主要是考慮到計(jì)算器的易用性、功能的常用程度進(jìn)行計(jì)算器界面與功能的設(shè)計(jì)。通過調(diào)整控件和文本的布局及顏色,使界面簡(jiǎn)單大方、布局合理,達(dá)到界面友好的效果。計(jì)算器設(shè)計(jì)時(shí)主要利用到get和set兩個(gè)函數(shù)進(jìn)行各個(gè)控件屬性值的傳遞和設(shè)置。計(jì)算器實(shí)現(xiàn)的功能有:數(shù)字09和小數(shù)點(diǎn)的輸入顯示,平方開方和對(duì)數(shù)的輸入顯示。進(jìn)行四
3、則運(yùn)算、正弦函數(shù)、余弦函數(shù)、正切函數(shù)以及反正弦函數(shù)、反余弦函數(shù)、反正切函數(shù)的計(jì)算等等。最后運(yùn)行調(diào)試,實(shí)現(xiàn)基于Matlab GUI的計(jì)算器的設(shè)計(jì)。關(guān)鍵詞:Matlab GUI 計(jì)算器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簡(jiǎn)介: PAGEREF _Toc439021563 h 5 HYPERLINK l _Toc439021564 2本文安排: PAGEREF _Toc439021564 h 5 HYPERLINK l _Toc439021565 第二章 GUI設(shè)計(jì)界面 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 符號(hào)鍵的編寫 PAGEREF
9、 _Toc439021571 h 8 HYPERLINK l _Toc439021572 2.4.3 運(yùn)算符“=”的編寫 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 第三章 計(jì)算器的使用和抽樣檢驗(yàn) PAGEREF _Toc439021576 h 10 HYPERLINK l _Toc439021577 3.1 除法運(yùn)算() PAGEREF _Toc439021577 h 10 HYPERLINK l _Toc439021578 3.2 平方運(yùn)算(2) PAGEREF _Toc439021578 h 10 HYPERLINK l _Toc439021579 3.3 函數(shù)cos (/3) 的計(jì)算 PAGEREF _Toc439021579 h 11 HYPERLINK l _Toc439021580 3.4 函數(shù)arcsi
11、n(/3) 的計(jì)算 PAGEREF _Toc439021580 h 11 HYPERLINK l _Toc439021581 3.5 以2為底的對(duì)數(shù)(log 2)的計(jì)算 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é):?jiǎn)栴}及其優(yōu)化 PAGEREF _Toc439021586 h 14 HYPERLINK l _Toc439021587 第五章 心得體會(huì) PAGEREF _Toc439021587 h 16 HYPERLINK l _Toc439021588 參考文獻(xiàn) PAGEREF _Toc439021588 h 17 第一章 緒論1.MATLAB簡(jiǎn)介:MATLAB是matrix和laboratory兩個(gè)詞的組合,意為矩陣工廠(矩陣實(shí)驗(yàn)室)。是由美國 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=108
13、06030 t _blank mathworks公司發(fā)布的主要面對(duì) HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=276760 t _blank 科學(xué)計(jì)算、可視化以及交互式 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=107828 t _blank 程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=64754459 t _blank 數(shù)值分析、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=53329864
14、 t _blank 矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8802855 t _blank 動(dòng)態(tài)系統(tǒng)的 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=116070 t _blank 建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=8645833 t _blank
15、程序設(shè)計(jì)語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平。MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=609078 t _blank 編程語言的程序等,主要應(yīng)用于 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=340258 t _blank 工程計(jì)算、控制設(shè)計(jì)、 HYPERLINK /lemm
16、a/ShowInnerLink.htm?lemmaId=227678 t _blank 信號(hào)處理與通訊、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=226789 t _blank 圖像處理、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=560464 t _blank 信號(hào)檢測(cè)、 HYPERLINK /lemma/ShowInnerLink.htm?lemmaId=73836346 t _blank 金融建模設(shè)計(jì)與分析等領(lǐng)域。2本文安排:本文第一章是緒論部分,主要是關(guān)于Matlab的一個(gè)北京介紹,以及對(duì)本文的一
17、個(gè)大體上的內(nèi)容上的安排。本文第二章側(cè)重介紹了如何運(yùn)用Matlab中GUI界面功能設(shè)計(jì)一個(gè)合理的、實(shí)用的簡(jiǎn)易計(jì)算器,并且介紹了如何在設(shè)計(jì)好的計(jì)算器中添加功能函數(shù),實(shí)現(xiàn)預(yù)期的相關(guān)功能。本文第三章粗略的介紹的計(jì)算器的基本使用方法以及相關(guān)的一些計(jì)算器功能實(shí)現(xiàn)效果的檢驗(yàn),并對(duì)檢驗(yàn)結(jié)果作簡(jiǎn)單的分析介紹。本文第四章主要對(duì)部分特殊函數(shù)的源代碼作簡(jiǎn)單的分析與介紹,以及總結(jié)程序在設(shè)計(jì)過程中發(fā)現(xiàn)的問題及其相應(yīng)的優(yōu)化方案。本文第五章是對(duì)本次作業(yè)的心得體會(huì)。本文最后是相關(guān)的參考文獻(xiàn)第二章 GUI設(shè)計(jì)界面計(jì)算器的效果圖:圖1圖22.1打開GUI輸入Guide 回車或者在工具欄上點(diǎn)擊圖標(biāo)打開Guide 窗口:圖 32.2.
18、添加按鈕圖 42.3.根據(jù)按鈕的作用及視覺效果做一定的修改雙擊按鈕(Puch Button)進(jìn)入按鍵屬性修改顯示字符串大小、字體和顏色,然后對(duì)按鈕的位置進(jìn)行排布,盡量使按鈕集中在靜態(tài)文本框下面。圖52.4.保存、添加功能函數(shù) 把做好的按鈕及靜態(tài)文本框保存后自動(dòng)彈出Editor的M文本,對(duì)然后對(duì)相應(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,并以字符串形式來存儲(chǔ)數(shù)據(jù)文本框text1的內(nèi)容,并存儲(chǔ)數(shù)個(gè)“0”,然后由set(handles.text1,String,textString在text1中輸出。同理,分別在function pushbutton210_Callback(hObject, eventdata, handles)下給19數(shù)字按鍵下編寫此類程序。2.4.2 符號(hào)鍵的編寫function pushbutton12_Callback(hObject,
20、eventdata, handles)textString = get(handles.text1,String);textString =strcat(textString,);set(handles.text1,String,textString)strcat的作用是將兩個(gè)字符串連接起來,就是在已輸入的存儲(chǔ)數(shù)據(jù)textString后添加“”進(jìn)行運(yùn)算。然后執(zhí)行set(handles.text1,String,textString)。符號(hào)鍵-、*、/與的運(yùn)算函數(shù)類似?!捌椒竭\(yùn)算”,主要是由“2”功能實(shí)現(xiàn)。2.4.3 運(yùn)算符“=”的編寫textString = get(handles.text1
21、,String);ans =eval(textString);“eval”的作用是將符號(hào)表達(dá)式轉(zhuǎn)換成數(shù)值表達(dá)式。再由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個(gè)字符串轉(zhuǎn)成w-1個(gè),即刪除了末位字符set(handles.text1,String,textString)2.4.5 按鍵“清空”的編寫set(handles.text1,String,
22、)2.4.6 按鍵“退出”的編寫close(gcf);第三章 計(jì)算器的使用和抽樣檢驗(yàn)3.1 除法運(yùn)算() 圖 6圖 7由結(jié)果可知,除法運(yùn)算功能正確實(shí)現(xiàn)。3.2 平方運(yùn)算(2)圖 8圖 9由結(jié)果可知,乘方運(yùn)算功能正確實(shí)現(xiàn)。3.3 函數(shù)cos (/3) 的計(jì)算 圖 10圖 11由結(jié)果可知,cos()運(yùn)算功能正確實(shí)現(xiàn)。3.4 函數(shù)arcsin(/3) 的計(jì)算 圖 12圖 13由結(jié)果可知,arcsin()運(yùn)算功能正確實(shí)現(xiàn)。3.5 以2為底的對(duì)數(shù)(log 2)的計(jì)算圖 14 圖 15調(diào)試的時(shí)候發(fā)現(xiàn)一個(gè)問題,發(fā)現(xiàn)以2為底的對(duì)數(shù)(log 2)計(jì)算需要先輸入數(shù)字,然后點(diǎn)擊log2按鈕鍵直接可以計(jì)算出正確的結(jié)果
23、,但是不能按照普通計(jì)算器那樣先安log2按鈕鍵然后輸入要計(jì)算的數(shù)字,再安=鍵顯示結(jié)果,說明書寫的程序還有一些bug,但是我調(diào)試后仍然沒有能夠發(fā)現(xiàn)問題所在,所以該功能還需謹(jǐn)慎使用。3.6 總結(jié):在對(duì)計(jì)算器其他功能鍵進(jìn)行的檢驗(yàn)結(jié)果顯示,該計(jì)算器除了log2的計(jì)算功能存在bug外,其他功能計(jì)算的結(jié)果均與實(shí)際結(jié)果相吻合,計(jì)算器的功能實(shí)現(xiàn)的基本完好且能實(shí)現(xiàn)較大數(shù)值的運(yùn)算,計(jì)算結(jié)果用科學(xué)技術(shù)法表示。第四章 特殊函數(shù)的源代碼及總結(jié)函數(shù)代碼及思路:4.1 按鍵“”:通過get函數(shù)獲得輸入的字符,函數(shù)strread獲得輸入字符,并用sqrt函數(shù)計(jì)算結(jié)果,set函數(shù)進(jìn)行顯示輸出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ù)計(jì)算結(jié)果,set函數(shù)進(jìn)行顯示輸出: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é):?jiǎn)栴}及其優(yōu)化1.本次課程設(shè)計(jì)中開始時(shí)遇到的問題是數(shù)據(jù)進(jìn)行清零后,再輸入其他的數(shù)據(jù),清零后的字符0仍會(huì)保留,會(huì)影響其他數(shù)據(jù),解決辦法是將數(shù)據(jù)用空格替換掉就實(shí)現(xiàn)了清空: set(handles.text1,String,)2.在定義正弦余弦等函數(shù)的時(shí)候,需要注意其定義域,值域的問題。3開始時(shí)我的“sin” 函數(shù)編程如下:textString = get(handles.text1,String);a = strread(textString, %f); a=sin(a);set(handles
29、.text1,String,a)%這樣只能在輸入完數(shù)據(jù)后按“sin”鍵實(shí)現(xiàn)運(yùn)算,很不直觀。修改后可以實(shí)現(xiàn)按下sin鍵后顯示 “sin(”再輸入要運(yùn)算的數(shù)據(jù)之后加上“)”按下“=”鍵后就可以運(yùn)算出結(jié)果了,這樣相對(duì)更直觀明了。textString = get(handles.text1,String);textString = strcat(textString,sin();set(handles.text1,String,textString)4log2()函數(shù)仍然存在bug,需謹(jǐn)慎使用。第五章 心得體會(huì)本次課程設(shè)計(jì)用MATLAB的GUI接口設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器,主要對(duì)數(shù)字及運(yùn)算“0-9、+、-
30、、.、= 、x2 、sin、arcsin、log2”等的代碼程序的了解,在設(shè)計(jì)的過程中也遇到不少的問題,通過和同學(xué)的討論,和老師的交流,讓我知道了自己的錯(cuò)誤和不足,最終順利地解決了這些問題。這次工程設(shè)計(jì),使我進(jìn)一步加深了對(duì)課本知識(shí)的了解和掌握,鞏固了所學(xué)的基本知識(shí),更加體會(huì)到了MATLAB功能的豐富,更加深刻的認(rèn)識(shí)了MATLAB,熟練了編程設(shè)計(jì)。其中對(duì)計(jì)算器按鍵的顏色、大小和排版,使我的思維更加的縝密,讓我在以后的工作生活中,得到了思維的鍛煉。在以后學(xué)習(xí)中,我會(huì)更加刻苦,以鍛煉自己的能力。參考文獻(xiàn)(1)樓順天,姚若玉,沈俊霞.MATLAB7.x程序設(shè)計(jì)語言. 西安:西安電子科技大學(xué)出版社(2)
31、張威.MATLAB基礎(chǔ)與編程入門M.西安:西安電子科技大學(xué)出版社(3)羅華飛.MATLAB GUI設(shè)計(jì)學(xué)習(xí)手記M.北京:北京航空航天大學(xué)出版社 ( 4 ) 鄭阿奇.MATLAB實(shí)用教程M.北京:電子工業(yè)出版社(5)孫屹.MATLAB通信仿真開發(fā)手冊(cè)M.北京:國防工業(yè)出版社(6)劉衛(wèi)國.MATLAB程序設(shè)計(jì)與應(yīng)用M.北京:高等教育出版含完整的.m文件和.fig文件的百度網(wǎng)盤打包地址/s/1borSMwn附錄資料:不需要的可以自行刪除Pascal/C/C+語句對(duì)比(補(bǔ)充版)一、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; 從這三個(gè)程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序沒有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using namespace std,這個(gè)是打開命名空間的,NOIP不會(huì)
33、考這個(gè),可以不管,只要知道就行了。 此外說明 注釋單行用/,段落的話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)對(duì)long long 變量賦值時(shí),后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I64dn”,x);2、實(shí)型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中字符串長(zhǎng)度有限制,為255,C+則沒有。 字符串和字符在Pascal中均用單引號(hào)注明,在C/C+中字符用單引號(hào),字符串用雙引號(hào)。4、布爾類型 Pascal 中為 boolean,C/C+ 為 bool。值均為True 或 False。C/C+中除0外bool都為真。5、定義 常量的定義均為 const,只是在C/C+中必須要注
36、明常量的類型。在C/C+中還可以用宏來定義常量,此時(shí)不注明類型。PascalC/C+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /這個(gè)是宏 * 宏定義其實(shí)就是直接在程序相應(yīng)的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a endl;特別說明C+中cin一個(gè)字符的話會(huì)自動(dòng)跳過空格和回車,Pa
37、scal和C則會(huì)讀入空格和回車。在Pascal中writeln(a:n:m) 表示在n個(gè)字符寬的輸出域上輸出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í) 以下三個(gè)進(jìn)制設(shè)定都是永久作用: cout deca; 相當(dāng) printf(“%d”,a); /十進(jìn)制 cout hexa; 相當(dāng) pri
38、ntf(“%X”,a); /十六進(jìn)制 cout octa; 相當(dāng) printf(“%o”,a); /八進(jìn)制例如:cout 12hex12oct1212endl;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:%hd1個(gè)short型整數(shù)%d1個(gè)int型整數(shù)%u1個(gè)unsigned int型整數(shù)%I64d1個(gè)long long型整數(shù)%c1個(gè)字符%s1個(gè)C字符串%f1個(gè)float型實(shí)數(shù)%lf1個(gè)double型實(shí)數(shù)%10.4f輸出1個(gè)總寬度為10,保留4位小數(shù)的實(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();因?yàn)镃+的讀入較慢,個(gè)人建議C+的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C+的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。*中國計(jì)算機(jī)學(xué)會(huì)競(jìng)賽須知發(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;以下擴(kuò)充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ùn)算符號(hào) 一一對(duì)應(yīng)的關(guān)系PascalC/C+賦值運(yùn)算賦值:=基本運(yùn)算加+減-乘*除(實(shí)數(shù))/ (double)除法取整div(int) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運(yùn)算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x)x- 在C/C+中對(duì)某個(gè)變量自身進(jìn)行運(yùn)算可以簡(jiǎn)寫為 變量名 運(yùn)
43、算符號(hào)= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里還存在一種三目運(yùn)算 變量名 = 條件 ? 值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 語句的條件必須要用括號(hào)括起來,后面不使用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,運(yùn)行看看就知道了。六、循環(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ì)一直循環(huán)。C/C+中i是實(shí)數(shù)、指針都可以*/C/C+中for的特殊用法:/變量為實(shí)數(shù)for (double i = 1; i 符號(hào)為間接引用,后面會(huì)提到。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 (運(yùn)行條件)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) (但達(dá)不到 INT_MAX)
48、如果要填最?。?memset(a,128,sizeof(a) (但達(dá)不到 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開始。字符串處理很多這里不一一列舉,只寫最常用的幾個(gè)。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一次性整行讀入,直至行末尾。只讀入一個(gè)“單詞”,遇空格和行末停止。例如輸入;How are you?s=” How are you?”讀入整串含空格例如輸入;How are you?s=”How”如果三個(gè)都讀: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)一個(gè)參數(shù)是值傳時(shí),形參在子過程中相當(dāng)于一個(gè)局部變量,對(duì)它的改變不影響實(shí)在的參數(shù)值。址傳則會(huì)
51、影響。下例中a為值傳,b為址傳。初始a = 5,b = 5,運(yùn)行后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)用時(shí): tryit(a,b,c) ,可以傳回 a,b,c的值。* 用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù) Void tryit( int a) 調(diào)用時(shí): tryit(x),可以傳回整個(gè)數(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 的兩個(gè)應(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)先隊(duì)列(以堆排為例)#include #include using namespace std;priority_queue Q;int main() int n,a; cinn; while
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 度校企合作合同書(三):人才培養(yǎng)與交流
- 兒童健康食品供應(yīng)合同
- 醫(yī)療中心服務(wù)合同樣本
- 環(huán)保工程項(xiàng)目?jī)?nèi)部承包合同范本
- 北京市全日制用工勞動(dòng)合同模板
- 標(biāo)準(zhǔn)版租賃與購銷合同范本
- 雙方合作經(jīng)營合同示范文本
- 城市住宅房屋買賣合同范本
- 文化機(jī)械產(chǎn)品用戶體驗(yàn)評(píng)估方法考核試卷
- 工業(yè)機(jī)器人協(xié)作機(jī)器人技術(shù)考核試卷
- 醫(yī)院護(hù)理人文關(guān)懷實(shí)踐規(guī)范專家共識(shí)課件
- DeepSeek在自然災(zāi)害預(yù)警中的潛力
- 2025年專利技術(shù)保密協(xié)議書模板
- 《研學(xué)旅行課程設(shè)計(jì)》課件-研學(xué)課程設(shè)計(jì)計(jì)劃
- 中醫(yī)痹癥-課件
- 表面粗糙度等級(jí)對(duì)照表模板.doc
- GMP講課教案簡(jiǎn)述
- 東莞虎門架空線路拆除施工方案
- 尿液結(jié)晶教學(xué)課件
- 繪本《你很特別》
- 茶葉揉捻機(jī)總體設(shè)計(jì)方案的擬定
評(píng)論
0/150
提交評(píng)論