篇一 c++實(shí)踐報(bào)告書3300字
本科生課程設(shè)計(jì)(實(shí)踐)設(shè)計(jì)報(bào)告
(程序設(shè)計(jì)基礎(chǔ))
題 目
學(xué)生學(xué)號(hào) 學(xué)生姓名
指導(dǎo)教師 學(xué) 院 專業(yè)班級(jí) mfc課程設(shè)計(jì)
計(jì)算機(jī)基礎(chǔ)教學(xué)實(shí)驗(yàn)中心
2023年 06月 14 日
一、引言
mfc(microsoft foundation class library, 微軟基礎(chǔ)類庫)是微軟基
windows平臺(tái)下的c++類庫集合。mfc包含了所有與系統(tǒng)相關(guān)的類,其中封裝了大多數(shù)的api(application program interface)函數(shù),提供了應(yīng)用程序框架和開發(fā)應(yīng)用程序的工具,如應(yīng)用程序向?qū)?、類向?qū)?、可視化資源設(shè)計(jì)等高效工具,用消息映射處理消息響應(yīng),大大簡化了windows應(yīng)用程序的開發(fā)工作,使程序員可以從繁重的編程工作中解脫出來,提高了工作效率。
程序設(shè)計(jì)實(shí)踐旨在課堂學(xué)習(xí)的基礎(chǔ)上幫助學(xué)生掌握c++應(yīng)用系統(tǒng)的開發(fā)方法和技巧。在系統(tǒng)學(xué)習(xí)完《c++程序設(shè)計(jì)》這門課程后,通過實(shí)踐對(duì)幾個(gè)小型c++應(yīng)用程序?qū)嵗O(shè)計(jì)與實(shí)現(xiàn)過程分析,幫助學(xué)生利用c++開發(fā)應(yīng)用系統(tǒng)的一般方法和步驟,掌握mfc的基本知識(shí)。
這次實(shí)踐采用學(xué)生上機(jī)與老師集體輔導(dǎo)的方式,以完成老師下發(fā)的《c++語言課程設(shè)計(jì)任務(wù)書》為要求和目的,運(yùn)用課堂上學(xué)習(xí)的c++基礎(chǔ)知識(shí),采用visual c++ mfc編程系統(tǒng),以全新的角度和感知去認(rèn)識(shí)c++語言在編程方面的優(yōu)越性。在實(shí)踐過程中,基于對(duì)話框的mfc應(yīng)用程序,達(dá)到了解基本控件,如靜態(tài)文本框、命令按鈕、編輯框、列表框、組合框等的使用的目的。還有理解windows應(yīng)用程序采用“消息傳遞、事件驅(qū)動(dòng)”的運(yùn)行機(jī)制。
本次實(shí)踐的任務(wù)主要分為兩個(gè)部分:
(一) 使用visual c++ mfc編程實(shí)現(xiàn)以下功能:
1. 輸入一元二次方程a_2+b_+c=0 的系數(shù)a、b、c,計(jì)算并輸出兩個(gè)根_1、_2.
2. 編寫一個(gè)能對(duì)列表框進(jìn)行項(xiàng)目添加、修改和刪除操作的應(yīng)用程序。
3. 編寫一個(gè)程序,繪制-2π~2π之間的sin曲線。
4. 用定時(shí)器控制蝴蝶在窗口中飛舞。等共10道。
(二) 將第一部分中選擇3~5題,做一個(gè)綜合程序,要求有登陸界面和調(diào)
用各部分的功能。
二、總體設(shè)計(jì)
本次實(shí)踐的主要目的就是了解和掌握運(yùn)用mfc編程的一般思想和具體的操作步驟。實(shí)踐主要是基于mfc的多文檔對(duì)話框和單文檔視圖,通過實(shí)踐完成第一大部分的任務(wù)之后,還要完成第二部分的綜合題目。第二部分的任務(wù)由學(xué)生自主發(fā)揮,自主找資料,詢問同學(xué)和老師。
第一部分的任務(wù)比較簡單,具體的就不再描述。關(guān)于第二部分,我做了一個(gè)基于對(duì)文檔對(duì)話框。首頁為一個(gè)登陸頁面,需要輸入用戶名和密碼才能登陸,登陸后的頁面是把第一大部分的幾個(gè)題目連接起來。達(dá)到預(yù)覽的目的。
三、詳細(xì)設(shè)計(jì)
實(shí)踐前首先要認(rèn)識(shí)appwizard的工作環(huán)境。其項(xiàng)目工作區(qū)一共有三個(gè)選項(xiàng)卡分別為“resourceview”“classview”“fileview”,中間是對(duì)話框設(shè)計(jì)界面,右邊是控件工具欄。
實(shí)踐過程中,我們是先完成第一大部分的任務(wù)。雖然在第一次上機(jī)實(shí)踐前,我仔細(xì)地閱讀了老師給我們下發(fā)的資料,并且結(jié)合《c++程序設(shè)計(jì)實(shí)踐教程》了
解相關(guān)知識(shí),但是在實(shí)踐時(shí)結(jié)果不理想。主要是對(duì)創(chuàng)建對(duì)話框程序的步驟沒有掌握。在經(jīng)過幾次嘗試失敗后,總結(jié)其一般步驟為:(1)建立基于對(duì)話框的mfc應(yīng)用程序框架;(2)放置控件;(3)設(shè)置控件屬性;(4)為控件連接變量,即為控件命名;(5)添加并且編寫消息處理函數(shù)。
基于對(duì)話框的mfc程序設(shè)計(jì),對(duì)各種控件的了解和使用顯得特別重要。這里就不一一詳細(xì)介紹它們的功能。控件控制欄一個(gè)有26個(gè)控件圖標(biāo),每一個(gè)圖標(biāo)都可以看做一個(gè)對(duì)象,消息便是通過函數(shù)對(duì)它們進(jìn)行操作。每一個(gè)控件都有兩個(gè)重要而且必不可少的基本屬性:id和標(biāo)題。id便是該控件的標(biāo)識(shí),某些函數(shù)需要通過id對(duì)控件進(jìn)行操作。
了解一定相關(guān)知識(shí)后,對(duì)課程實(shí)踐有了很大的'幫助。其中“輸入一元二次方程a_2+b_+c=0 的系數(shù)a、b、c,計(jì)算并輸出兩個(gè)根_1、_2”這個(gè)題目比較復(fù)雜,而且與c++連續(xù)很緊密。其中的有這樣的語句m__1=(-b+sqrt(b_b-4_a_c))/(2_a); m__2=(-b-sqrt(b_b-4_a_c))/(2_a),這就是我們?cè)谡n堂上學(xué)習(xí)的c++基本語句,在實(shí)踐過程中考驗(yàn)學(xué)生的靈活運(yùn)用能力。完成這個(gè)題目的關(guān)鍵是把每個(gè)編輯框(控件)連接好變量和選的數(shù)據(jù)類型,接下來的就是編寫消息處理函數(shù)。這道題很全面地體現(xiàn)了mfc的“消息傳遞、事件驅(qū)動(dòng)”的思想,在操作步驟方面也在很多地方得到了實(shí)踐。
mfc編程除了基于多文本對(duì)話框以外,還有很重要的一部分是基于單文檔界面的應(yīng)用程序,如windows自帶的notepad程序。在本次實(shí)踐的第一大部分的后5個(gè)小題就是基于單文檔的。那么首先要對(duì)其有一定的了解:文檔/視圖結(jié)構(gòu)的思想是將數(shù)據(jù)的管理與顯示分離,其中文檔用于管理應(yīng)用程序的數(shù)據(jù),而視圖是用戶界面,用于顯示、打印文檔中的數(shù)據(jù),并管理與用戶的交互。sdi具有文檔/視圖結(jié)構(gòu)的應(yīng)用程序框架,該框架包括應(yīng)用程序類、窗口框架類、文檔類和視圖類,編程的任務(wù)是在文檔類和視圖類中添加適當(dāng)?shù)拇a。其中文檔類中一個(gè)重要的成員函數(shù)是onnewdocument,用戶在此添加代碼完成對(duì)數(shù)據(jù)的初始化;而視圖類中最重要的成員函數(shù)是ondraw,通過在該函數(shù)中添加代碼實(shí)現(xiàn)窗口內(nèi)容的輸出。
本次實(shí)踐是對(duì)單文檔的典型實(shí)例,包括:
? 利用畫筆、畫刷等工具及位圖處理的方法實(shí)現(xiàn)文字和圖形的輸出。
? 利用定時(shí)器控件制作動(dòng)畫程序。
? 對(duì)鼠標(biāo)和鍵盤進(jìn)行編程的基本方法。
? 文件、字體、顏色等幾種通用對(duì)話框的使用方法及自定義對(duì)話框的設(shè)計(jì)、調(diào)用方法。 ? 菜單的設(shè)計(jì)方法。
雖然進(jìn)行充分的準(zhǔn)備,實(shí)踐中還是遇到了很多的困難和問題。在完成題目“用定時(shí)器控制蝴蝶在窗口中飛舞”時(shí),主要的問題就是在插入蝴蝶圖片的,嘗試了幾次都沒有編譯成功。最終再詢問同學(xué)后,才知道是要把gif格式的圖片分割成一幀一幀,然后才能插入。最后用定時(shí)器控制,達(dá)到動(dòng)態(tài)的效果。
在完成了第一大部分的任務(wù)后,第二部分的綜合題是一個(gè)不小的挑戰(zhàn)對(duì)我來說。要靠自己去網(wǎng)上或者圖書館查找資料。在經(jīng)過一番準(zhǔn)備后,最終決定做一個(gè)相對(duì)簡單的基于多文檔對(duì)話框的登陸界面,把幾個(gè)原來的程序文件連接起來。但是在這個(gè)過程中,完全要靠自己一步一步去探索,當(dāng)然也遇到了各種各樣的困難和挑戰(zhàn)。
關(guān)鍵是在連接各部分對(duì)話框,經(jīng)過不斷的實(shí)驗(yàn),不斷的調(diào)試程序,總結(jié)的操作步驟如下:(1)創(chuàng)建工程,mfc application(e_e),工程命名按要求命名;(2)工程建立后有如圖對(duì)話框,將途中的靜態(tài)文本框和按鈕都刪掉,留下空白,再使用靜
態(tài)文本,編輯框,按鈕和靜態(tài)圖片重新排版,并進(jìn)行命名。注意靜態(tài)圖框應(yīng)該第一個(gè)布置,不然運(yùn)行時(shí)圖片會(huì)將其他控件覆蓋;(3)右擊密碼對(duì)應(yīng)的編輯框,選擇屬性,選樣式中的密碼;(4)在dialog上右擊選擇插入dig,重復(fù)插入4個(gè),依次作為菜單,題目1,題目2和題目3的對(duì)話框,并對(duì)其分別創(chuàng)建類,以菜單對(duì)話框?yàn)槔?,改一下表頭為“菜單”,在對(duì)話框空白處雙擊,點(diǎn)ok創(chuàng)建類,并對(duì)其命名(假如命名為mymenu);(5)回到登錄界面的對(duì)話框,雙擊登錄控件,出現(xiàn)如圖按鈕,點(diǎn)擊ok,在頂端添加#include”mymenu.h”,并onbutton1下添加以下代碼cstring c_user,c_password;
m_user.getwindowte_t(c_user);
m_password.getwindowte_t(c_password);
if(c_user.isempty||c_password.isempty)
{
messagebo_('用戶名或密碼不能為空','用戶登錄信息');
return;
}
if(c_user=='123'&&c_password=='123')
{
cmymenu dlg;
dlg.domodal;//這兩段代碼是用于調(diào)用菜單對(duì)話框
}
else
{
messagebo_('用戶名或密碼不正確','提示',mb_iconinformation); return;
(6)對(duì)對(duì)話框添加背景圖片。在如下圖文件上右擊,選擇引入,然后導(dǎo)入已準(zhǔn)備好的bmp格式的圖片,然后選擇登錄界面的靜態(tài)圖框右擊,進(jìn)行如圖操作,這樣圖片就加入了,它會(huì)改掉按鈕和編輯框,這沒關(guān)系,運(yùn)行后會(huì)顯示出來的;
(7)通過以上操作,已經(jīng)做好了登錄界面和實(shí)現(xiàn)和登錄界面與菜單對(duì)話框的連接,現(xiàn)在進(jìn)行菜單對(duì)話框的編輯。將原有的按鈕刪除,自己加入按鈕并命名;(8)雙擊題目1,點(diǎn)ok,在代碼頁的頂端加入如圖代碼,并在onbutton1下加入以下代碼 ct1 dlg; dlg.domodal;其他的按相同操作。
四、設(shè)計(jì)總結(jié)
為期為兩周的課程實(shí)踐中,我體會(huì)頗多,學(xué)到的東西也很多。我懂得了如何運(yùn)用mfc編寫可視化界面的應(yīng)用程序,加強(qiáng)了對(duì)c++的認(rèn)識(shí),復(fù)習(xí)了以前的知識(shí),自己的邏輯思考能力,解決問題的能力也提高了不少。從而對(duì)microsoft visual c++有了更加深刻的認(rèn)識(shí)和體會(huì)!在這次課程設(shè)計(jì)實(shí)踐過程中我還懂得了一些程序開發(fā)的重要步驟,總之,在這次課程設(shè)計(jì)實(shí)踐中,我收獲頗豐。
對(duì)于對(duì)任務(wù)的完成情況,第一部分主要按老師的步驟完成。第二部分,由學(xué)生自主選題,自主設(shè)計(jì)完成??偟膩碚f,我個(gè)人對(duì)自己的完成情況感覺良好。當(dāng)然,老師的悉心指導(dǎo)和同學(xué)的幫助是不能忽視的,在此感謝所有在本次課程設(shè)計(jì)實(shí)踐過程中對(duì)我細(xì)心指導(dǎo)的老師和不斷鼓勵(lì)和幫助我的同學(xué)們。
總之,此次課程實(shí)踐是對(duì)學(xué)生動(dòng)手動(dòng)腦的一次很好的鍛煉,為學(xué)生的今后發(fā)展奠定基礎(chǔ)。
篇二 c++課程實(shí)踐報(bào)告1100字
為期一個(gè)星期的c++實(shí)訓(xùn)已經(jīng)基本結(jié)束,但是給了我很大的影響。通過這次實(shí)訓(xùn),使我明白c++語言這門課程光僅僅是聽課是遠(yuǎn)遠(yuǎn)不夠的,上機(jī)訓(xùn)練也不容忽視。
通過上機(jī)訓(xùn)練,才能夠明白自己知識(shí)的不足,才能夠有的放矢,更加深刻的理解c語言中的知識(shí)點(diǎn)。 通過實(shí)訓(xùn),我找到了許多知識(shí)漏點(diǎn),學(xué)到了很多以前不懂的知識(shí),以前認(rèn)為自己已經(jīng)懂了的知識(shí)點(diǎn)也理解更加深刻了。
尤其是遇到了自己當(dāng)時(shí)不知道如何編寫的c++語言題目如何編寫,通過自己的學(xué)習(xí)和同同學(xué)的交流后,試編和改錯(cuò),最后能夠順利的編寫出來,帶來的也有成就感。并增加了我們對(duì)c++語言的興趣和學(xué)好c++語言的信心。
與同學(xué)們交流的過程中,了解了程序的多種解決方法,知道了不同編寫方法有不同的特點(diǎn)??偨Y(jié)c++語言實(shí)訓(xùn)的幾個(gè)重要作用:
1.加深對(duì)課堂講授內(nèi)容的理解
課堂上要講授許多關(guān)于c++語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c++語言這個(gè)工具解決實(shí)際問題,又必須掌握它。通過多次上機(jī)練習(xí),對(duì)于語法知識(shí)有了感性的認(rèn)識(shí),加深對(duì)它的理解,在理解的基礎(chǔ)上就會(huì)自然而然地掌握c++語言的語法規(guī)定。對(duì)于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會(huì)發(fā)現(xiàn)原來理解的偏差。
學(xué)習(xí)c++語言不能停留在學(xué)習(xí)它的語法規(guī)則,而是利用學(xué)到的知識(shí)編寫c++語言程序,解決實(shí)際問題。即把c++語言作為工具,描述解決實(shí)際問題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過上機(jī)才能檢驗(yàn)自己是否掌握c++語言、自己編寫的程序是否能夠正確地解題。
自己編好程序上機(jī)調(diào)試運(yùn)行時(shí),可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對(duì)c++語言的理解和程序開發(fā)能力。
2.熟悉程序開發(fā)環(huán)境、學(xué)習(xí)計(jì)算機(jī)系統(tǒng)的操作方法
一個(gè)c++語言程序從編輯、編譯、連接到運(yùn)行,都要在一定的外部操作環(huán)境下才能進(jìn)行。所謂'環(huán)境'就是所用的計(jì)算機(jī)系統(tǒng)硬件、軟件條件,只有學(xué)會(huì)使用這些環(huán)境,才能進(jìn)行程序開發(fā)工作。通過上機(jī)實(shí)驗(yàn),熟練地掌握c++語言開發(fā)環(huán)境,為以后真正編寫計(jì)算機(jī)程序解決實(shí)際問題打下基礎(chǔ)。同時(shí),在今后遇到其它開發(fā)環(huán)境時(shí)就會(huì)觸類旁通,很快掌握新系統(tǒng)的使用。
3.學(xué)習(xí)上機(jī)調(diào)試程序
完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)可能不斷出現(xiàn)麻煩。如編譯程序檢測(cè)出一大堆錯(cuò)誤。有時(shí)程序本身不存在語法錯(cuò)誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯(cuò)誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯(cuò)誤,只能靠自己的上機(jī)經(jīng)驗(yàn)分析判斷錯(cuò)誤所在。
通過這次為數(shù)不多的幾天計(jì)算機(jī)實(shí)踐學(xué)習(xí),我們更好的了解了一些關(guān)于c++語言的知識(shí),理解鞏固了我們c++語言的理論知識(shí)。 c++語言這門課程對(duì)于我們應(yīng)用電子專業(yè)的同學(xué)也相當(dāng)重要,我們會(huì)再將來繼續(xù)學(xué)習(xí)并熟悉這門課程。
篇三 c++課程設(shè)計(jì)實(shí)踐報(bào)告1700字
c++課程設(shè)計(jì)實(shí)踐報(bào)告
班級(jí):83121
姓名:張弛
學(xué)號(hào):20121000491
題目一、 題目描述: 已知銀行整存整取存款不同期限的月息利率(采用復(fù)利 方式,即利滾利)分別為 0.63% 期限一年 0.66% 期限二年 月息利率= 0.69% 期限三年
0.75% 期限五年 0.85% 期限八年 要求輸入存錢的本金和期限(以整數(shù)年為單位) ,求到期時(shí)能從銀行 得到的利息與本金的合計(jì)。 提示:可以用嵌套的 if-else 結(jié)構(gòu)或 switch 結(jié)構(gòu)實(shí)現(xiàn),核心函數(shù) pow(1+月利率,月份)。 請(qǐng)思考年份是四、六、七或八年以上的情況。
設(shè)計(jì)思路: (一)使用 switch 選擇語句 對(duì)應(yīng)年份
(二)明確核心函數(shù) pow 是計(jì)算復(fù)利的(例如:_ 的 n 次方 ) ;由于 是以年為計(jì)算期限的,而所給的利率是月利率,所以計(jì)算時(shí) 應(yīng)該在年的基礎(chǔ)上乘以 12; (三)復(fù)利計(jì)算就是一種冪運(yùn)算,i=px(1+i)^n,本金和利率都是變
動(dòng)的 (四)在除了 1、2、3、5 和 8 年之外的其他年份中,要注意“就低 不就高”的原則,尤其是在 8 年之后,也是套用期限八年的利率。
附源程序如下: #include #include void main { int years; float capital,sum;
scanf('%f %d',&capital,&years); switch(years) { case 1:sum=capital_pow(1+0.63_0.01,12);break; case 2:sum=capital_pow(1+0.66_0.01,24);break; case 3:sum=capital_pow(1+0.69_0.01,36);break;
case 4:sum=capital_pow(1+0.69_0.01,48);break;
case 5:sum=capital_pow(1+0.75_0.01,60);break; case 6:sum=capital_pow(1+0.75_0.01,72);break; case 7:sum=capital_pow(1+0.75_0.01,84);break; case 8:sum=capital_pow(1+0.85_0.01,96);break; default:sum=capital_pow(1+0.85_0.01,12_years); } printf('%f',sum); }
題目二、 題目描述: 簡單計(jì)算器。用 switch 語句編寫一個(gè)程序計(jì)算表達(dá)式: data1 op data2 的值。其中 op 為運(yùn)算符+、-、_、/。
設(shè)計(jì)思路: (一)明確計(jì)算器是怎樣進(jìn)行計(jì)算的; (二) 細(xì)節(jié), 比如很多地方需要分號(hào), 在遇到字符時(shí), 我們應(yīng)該用 ‘’ , 而不是“” ; (三 switch 語句主要用于多分支選擇,此題有+、-、_、/,這就是 選擇。使用 switch 每個(gè) case 對(duì)應(yīng)+ - _ /符號(hào) 程序涉及到至
少三個(gè)量,運(yùn)算符 op 和兩個(gè)數(shù)字;先讓用戶輸入兩個(gè)數(shù)字和運(yùn)算符, 兩個(gè)數(shù)字的計(jì)算在后面的程序中用 swith 結(jié)構(gòu)運(yùn)行。 運(yùn) 行 效 果 截 圖 :
附源程序如下:#include int main { float data1,data2,c;
char op; printf('請(qǐng)輸入表達(dá)式中兩個(gè)數(shù)字 data1 和 data2 '); //打印 scanf('%f%c%f',&data1,&op,&data2); //輸入
printf('請(qǐng)輸入運(yùn)算符+、-、_、/ ');// 打印 switch(op) //switch {case stick:break;} 這個(gè)是個(gè)選擇結(jié)構(gòu)
如果 op = stick 則執(zhí)行這一句 如果沒有 則執(zhí)行 default 后面 的語句 { case '+':c=data1+data2;break; case '-':c=data1-data2;break; case '_':c=data1_data2;break; case '/':c=data1/data2;break; default:printf('輸入錯(cuò)誤');break; } printf('%f',c); return 0; } 題目三 題目描述:編寫程序,用二分法求方程 2_3-4_2+3_-6=0 在(-10,10) 之間的根。 提示: ① 用 do-while 語句實(shí)現(xiàn)。
② 二分法的計(jì)算步驟: (1) 準(zhǔn)備 計(jì)算 f(_)在有根區(qū)間[a,b]端點(diǎn)處的值 f(a),f(b) (2) 二分 計(jì)算 f(_)在區(qū)間中點(diǎn)(a+b)/2 處的值 f[(a+b)/2] (3) 判斷若 f[(a+b)/2]=0,則即是根,計(jì)算過程結(jié)束。 否則,檢測(cè): a. 若 f[(a+b)/2]與 f(a)異號(hào), 則根位于區(qū)間[a,(a+b)/2]內(nèi), 這時(shí)以(a+b)/2 代替 b; b. 若 f[(a+b)/2]與 f(a)同號(hào), 則根位于區(qū)間[(a+b)/2,b]內(nèi), 這時(shí)以(a+b)/2 代替 a; 反復(fù)執(zhí)行步驟 2 和 3,直到區(qū)間[a,b]長度縮小到允許的誤差范圍之 內(nèi),此時(shí)中點(diǎn)(a+b)/2 即為所求的根 設(shè)計(jì)思路: (一)二分法是指在整個(gè)算法中,讓計(jì)算值無限趨近于根的值,利用 數(shù)學(xué)知識(shí)可知,當(dāng)了兩個(gè)點(diǎn)的結(jié)果異號(hào)時(shí),函數(shù)的根就在這兩個(gè)數(shù)之 間,利用二分法可以無限的把根的范圍縮小,直到可以確定為止; (二)do-while 是循環(huán)語句,先執(zhí)行一次指定的循環(huán)體語句,然后 判別表達(dá)式, 當(dāng)表達(dá)式的值為非零 (真) 時(shí), 返回重新執(zhí)行循環(huán)語句, 如此反復(fù),直到表達(dá)式的值等于 0(假)為止才結(jié)束。 (三)void main是聲明函數(shù),并且是對(duì)主函數(shù)的聲明。題目所 給的范圍是(-10,10) ,因此在聲明函數(shù)中定義一個(gè) a 和 b 來代替區(qū) 間的范圍,而用 c 來代指中間指也是最后的結(jié)果,在這個(gè)程序中 a、 b、c 都是隨著范圍不斷變化的變量。如果(-10,10)的范圍過大,
就需要循環(huán)語句來縮小區(qū)間范圍, 即 a=c 或 b=c。 當(dāng)函數(shù)值在 (-10,10) 中任意一點(diǎn)取得 0 時(shí),就正是我們所要的結(jié)果。循環(huán)條件是當(dāng)區(qū)間 a 和 b 的函數(shù)值小于精度 0.01。 運(yùn)行效果截圖:
附源程序如下: #include 'stdio.h' float f(float _) { float y; y=2______-4____+3__-6; return y; } void main { float a=-10,b=10,c;
do{c=f((a+b)/2); if(c==0) break; if(c_f(a)>;0) a=c; else b=c; } while(f(b)_f(a)<0.01); /_解的精度為 0.01_/ printf('方程的解是:%f',c); }
題目四 題目描述:編寫程序,給定一個(gè)整數(shù) i,請(qǐng)求出另一個(gè)整數(shù) j,使 i 和 j 在用 8 位二進(jìn)制表示時(shí)互為逆序。例如:給定 i=3 時(shí),應(yīng)得到 j=192(3 的二進(jìn)制為:00000011,192 的二進(jìn)制為 11000000) 。 提示: ① 十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)用“除 2 求余”法。 ② 二進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù)用“按權(quán)相加”法。
設(shè)計(jì)思路: (一)二進(jìn)制整數(shù)轉(zhuǎn)化為十進(jìn)制整數(shù)用“按權(quán)相加”法 (二)二十進(jìn)制整數(shù)轉(zhuǎn)化為二進(jìn)制整數(shù)用“除 2 求余” ,用&轉(zhuǎn)化。
(三)運(yùn)算符:<<是指左移一位,>;>;是指右移一位,<<=結(jié)合時(shí)從右 到左運(yùn)算, 其中 a;a 是指 b 向右移 a 位, 左移一位相當(dāng)于乘 2 右移 1 位相當(dāng)于除 2 (四)在交換時(shí),用的是中間法
運(yùn)行效果截圖: 附源程序如下:#include 'stdio.h' void main { int i,j,s=1,a[8]; printf('請(qǐng)輸入一個(gè)整數(shù) i: '); scanf('%d',&i); for(j=0;j<8;j++,s<<=1) { a[j]=i & s; } printf('所得到的 j 為: ');
printf('%d ',(a[0]<<7) | (a<<5) | (a<<3) | (a[3]<<1) | (a[4]>;>;1) | (a[5]>;>;3) | (a[6]>;>;5) | (a[7]>;>;7)); }
題目五 題目描述:編寫程序,抓交通肇事犯。 一輛卡車違反交通規(guī)則,撞人后逃跑?,F(xiàn)場(chǎng)有三人目擊事件,但都沒 有記住車號(hào),只記下車號(hào)的一些特征。甲說:牌照的前兩位數(shù)字是相 同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是位 數(shù)學(xué)家,他說:四位的車號(hào)剛好是一個(gè)整數(shù)的平方。根據(jù)以上線索求 出車號(hào)。 提示: ① 按照題目的要求,造出一個(gè)前兩位數(shù)相同、后兩位數(shù)相同且相互 間又不同的整數(shù),然后判斷該整數(shù)是否是另一個(gè)整數(shù)的平方。 ② 用窮舉法解此題。窮舉法是最簡單、最常見的一種程序設(shè)計(jì)方法, 它充分利用了計(jì)算機(jī)處理的高速特征。窮舉法的關(guān)鍵是要確定窮 舉的范圍,既不能過分?jǐn)U大窮舉的范圍,也不能過分縮小窮舉的 范圍,否則程序的運(yùn)行效率會(huì)很低,或有可能遺漏正確的結(jié)果而 產(chǎn)生錯(cuò)誤。
設(shè)計(jì)思路:
(一)11 11
到 11
99
在
99 11 這樣 窮舉
判斷是否一個(gè)
數(shù)的平方 則是 將這個(gè)數(shù)開方
取整 再取平方 是否還是原來的數(shù)
(二)此題需要滿足三個(gè)條件:①前兩個(gè)數(shù)相同,后兩個(gè)數(shù)相同;② 前后兩數(shù)分別不相同;③這個(gè)數(shù)是一個(gè)整數(shù)的平方。需要每個(gè)條件都 滿足,if 才為真。 (三)主要思路是窮舉。窮舉是指在適當(dāng)?shù)姆秶鷥?nèi)舉出一個(gè)數(shù)。 運(yùn) 行 效 果 截 圖 :
附源程序如下: #include void main { int a,b; for(a=32;a<=99;a++)
{ b=a_a; if(b/1000==b%1000/100 b%100!=(b/1000)_10+b%1000/100) printf('the license plate is:%d ',b); } } && b%100/10==b%10 &&
題目六 題 目 描 述 : 從 終 端 輸 入 實(shí) 數(shù) e_=1+_+_2/2!+_3/3!+?+_n/n!的值。 設(shè)計(jì)思路: 先輸入一個(gè) _ 的值; 再設(shè)計(jì)一個(gè)子函數(shù), 計(jì)算 1! , 2! , 3! ?n! 的值;之后用 sum 函數(shù),和 pow 函數(shù)處理分子,用累加的方式進(jìn)行分 子計(jì)算,并形成等式;最后輸出結(jié)果。 _ , 用 遞 推 法 求
附源程序如下:#include 'stdio.h' int f(int _,int n) { int i,m=0; for(i=0;i
for(i=0,s=0;f(_,i)<0.001;i++) s+=f(_,i); printf('其結(jié)果為:%d ',s); }
題目七 題目描述:打印出以下的楊輝三角形(要求打印出 10 行) 。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ?? ?? ??
設(shè)計(jì)思路: (一)二維數(shù)組主要用于處理多行的問題,而且第一行在數(shù)組之中是 第 0 行。 (二)楊輝三角有一個(gè)明顯的特點(diǎn):每一行的最后一個(gè)數(shù)字與第一個(gè) 數(shù)是相同的,此外,下 (三)一行的第二個(gè)數(shù)是由上一行的第一個(gè)數(shù)和第二個(gè)數(shù)相加之和, 以此類推。
定義指針是為了讓整個(gè)程序不那么復(fù)雜。 運(yùn)行效果截圖:
附源程序如下: #include int main(void) { int a[10][10],(_p)[10]=a,i,j; for(i=0;i<10;i++) {
_(_(p+i)+0)=1; _(_(p+i)+i)=1; } for(i=2;i<10;i++) for(j=1;j
題目八 題目描述:找出一個(gè)二維數(shù)組的“鞍點(diǎn)” ,即該位置上的元素在該行 上最大,在該列上最小。 提示: ① 一個(gè)二維數(shù)組可能有鞍點(diǎn)也可能沒有鞍點(diǎn),若有鞍點(diǎn),則只有一 個(gè)。
② 準(zhǔn)備兩組測(cè)試數(shù)據(jù): (1) 二維數(shù)組有鞍點(diǎn): 9 80 205 90 -60 210 40
96 1 89
-3 101
(2) 二維數(shù)組沒有鞍點(diǎn): 9 80 205 90 -60 210 40 1 89
196
-3 101 7
45 54 156
③用 scanf 函數(shù)從鍵盤輸入數(shù)組各元素的值,檢查結(jié)果是否正確。如 果已指定了數(shù)組的行數(shù)和列數(shù),可以在程序中對(duì)數(shù)組元素賦初值,而 不必用 scanf 函數(shù)。請(qǐng)同學(xué)們修改程序以實(shí)現(xiàn)之。
設(shè)計(jì)思路: (一) 先找出一行中值最大的元素,然后看它是不是該列中的最小值,由于 一個(gè)二維數(shù)組最多有一個(gè)鞍點(diǎn),所以如果是則鞍點(diǎn)存在且它就是鞍 點(diǎn),輸出該鞍點(diǎn);如果不是,則再找下一行的最 大數(shù),以此類推。如果每一行的最大數(shù)都不是鞍點(diǎn),則此數(shù)組無鞍點(diǎn) (二) 在程序中,先令 a[i][0]最大賦值給 ma_i,在 for 循環(huán)的比較中,把
符合條件的行的最大值賦給 ma_i,將每一次比較后的最大的列數(shù)賦 值給 ma_j,從而找出 i 行最大的那個(gè)。 再假設(shè)那個(gè)數(shù)就是鞍點(diǎn),將最大數(shù)和同列的數(shù)值相比,如果 ma_j 不 是最小的,則不是鞍點(diǎn),繼續(xù)找。 (三)引入一個(gè)參數(shù) flag=1,若不存在鞍點(diǎn)則 flag 為 0,若存在鞍 點(diǎn)則 flag 依舊為 1
運(yùn)行效果截圖:
附源程序如下:#include 'stdio.h' #define s 80 #define t 80 void main { int m,n,i,j,t,ma_h,ma_l,flag,a[s][t]; printf('請(qǐng)輸入二維數(shù)組的行數(shù) m 和列數(shù) n: '); scanf('%d %d',&m,&n); printf('請(qǐng)輸入二維數(shù)組的各個(gè)元素: ');
for(i=0;ia[i][0]) t=a[i][j];ma_h=i;ma_l=j; } for(i=0;i
a[%d][%d]=%d ',ma_h,ma_l,a[ma_h][ma_l]); }
題目九 題目描述:某班期終考試科目為高數(shù) mt、英語 en 和物理 ph,有 30
個(gè)人參加考試。為評(píng)定獎(jiǎng)學(xué)金,要求統(tǒng)計(jì)并輸出一個(gè)表格,表格內(nèi)容 包括學(xué)好、各科分屬、總分和平均分,并標(biāo)出 3 門課均在 90 分以上 者(該欄標(biāo)志輸出為 y,否則為 n) ,表格形式如下: no mt en ph sum v >;90 1 2 3 97 87 92 276 92 92 91 90 273 91 90 81 82 253 84 ...... n y n
#include 'stdio.h' void main
設(shè)計(jì)思路:由于是對(duì) 30 個(gè)學(xué)生的數(shù)據(jù)進(jìn)行輸入與統(tǒng)計(jì),所以建立二 維數(shù)組, 根據(jù)各位置的條件來定義其內(nèi)容, 第 8 個(gè)數(shù)據(jù)是字符型數(shù)據(jù), 所以另設(shè)一數(shù)組進(jìn)行存儲(chǔ),最后在將數(shù)據(jù)整合輸出。
附源程序如下:#include 'stdio.h' void main { int i,j,sum,flag,a[30][7]; printf('請(qǐng)輸入 30 個(gè)考生的三科成績: ');
for(i=0;i<30;i++) { a[i][0]=i+1; for(sum=0,j=1;j<4;j++) {scanf('%d',&a[i][j]); sum+=a[i][j]; if(a[i][j]>;90) flag=1; else flag=0; } a[i][4]=sum; a[i][5]=sum/3; if(flag=1) a[i][6]='y'; else a[i][6]='n';
} printf('no mt en ph sum v >;90 '); for(i=0;i<30;i++) for(j=0;j<6;j++) { printf('%5d',a[i][j]); printf(' %c ',a[i][6]); }
}
題目十 題目描述下面是一個(gè) 5_5 階的螺旋方陣,試編程打印出此形式的 n_n (n<10)階的方陣(順時(shí)針旋進(jìn)) 。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 提示:用二維數(shù)組實(shí)現(xiàn)。
設(shè)計(jì)思路:定義一個(gè) n_n 維數(shù)組存放該方陣,m 為該方陣的圈數(shù),一個(gè)大循環(huán)中嵌套了
四個(gè)小循環(huán),每一圈為一個(gè)大循環(huán),第一個(gè)小循環(huán)按順序?qū)懗龅谝恍械臄?shù),第二個(gè)小循環(huán)按 順序?qū)懗鲎詈笠涣械臄?shù), 第三個(gè)小循環(huán)按順序?qū)懗鲎詈笠恍械臄?shù), 第四個(gè)小循環(huán)按順序?qū)懗?第一列的數(shù),再進(jìn)行第二次大循環(huán),循環(huán)完畢后再進(jìn)行循環(huán)輸出數(shù)組中的 n_n 個(gè)數(shù),該螺旋 方陣就出來了。
附源程序如下: #include 'stdio.h' void main { int i, j, k = 0, m, n,a[10][10]; printf('請(qǐng)輸入方陣行列數(shù) n(n<10): '); scanf('%d',&n); if(n%2==0) m = n / 2; else m = n / 2 + 1; for(i=0;i
k++; a[i][j]=k; } for (j=i+1;j=i;j--) { k++; a[n-i-1][j] =k; } for (j=n-i-2;j>;=i+1;j--) { k++; a[j][i]=k; } } for (i=0;i
printf('%5d', a[i][j]); printf(' '); } } 附:
實(shí)習(xí)總結(jié)與心得體會(huì)
經(jīng)過 c 語言實(shí)習(xí),讓我加深了對(duì) c 語言的了解,而不只是單單 的在課本中學(xué)到的那些理論,平時(shí)乏味的課程,通過自己動(dòng)手親自編 寫,變的生動(dòng)有趣,而在自己動(dòng)手的過程中,出現(xiàn)的問題很多,比理 論要難的多,當(dāng)一個(gè)程序?qū)懲暌院螅?jīng)常會(huì)有很多錯(cuò)誤而沒法解決。 不過,通過幾天的實(shí)習(xí),逐漸積攢了一些經(jīng)驗(yàn),有些錯(cuò)誤可以很快就 看出來。 這次實(shí)習(xí)有很大的收獲,讓我對(duì) c 語言有了更深的認(rèn)識(shí),平時(shí) 在課堂上學(xué)到的.東西可以自己動(dòng)手編寫,將其轉(zhuǎn)化成一些實(shí)用的技 能。如果是一個(gè)程序?qū)懲暌惶庡e(cuò)誤也沒有,會(huì)有種成就感,于是興趣 就來了,興趣來了,自然學(xué)的東西也就多了,能把理論變成實(shí)際的技 能,讓我對(duì) c 語言有了濃厚的興趣和更深層的認(rèn)識(shí)。 c 語言是一個(gè)有序的學(xué)習(xí), 學(xué)了最基本的替換, 然后擴(kuò)展到循環(huán), 嵌套, 條理很清楚, 不是一個(gè)零散的知識(shí), 實(shí)際上所有的課程都如此, 不過通過實(shí)習(xí)我也知道了自己的不足,存在的很多問題。比如自己寫 的寫的小程序出了問題,不會(huì)解決了就叫老師幫忙,但是會(huì)養(yǎng)成一種 依賴的心理,碰到問題了個(gè)想到的是求助而不是自己獨(dú)立解決,所以
以后要多多鍛煉自己的信心和增加自己的能力, 爭取做到老師不在身 邊的時(shí)候也可以完成一些簡單的程序編寫與錯(cuò)誤排除。 還有自己的基礎(chǔ)知識(shí)不扎實(shí), 遇到的問題, 沒有很好的邏輯思維, 親自編寫一個(gè)陌生的程序的時(shí)候會(huì)有種無法下手的感覺, 找不到突破 口。通過實(shí)習(xí),逐漸理清了順序,對(duì)于簡單的程序和一些相對(duì)比較繁 瑣的嵌套,循環(huán),不在是看著一頭霧水。其實(shí)只要理清了思路,把基 礎(chǔ)知識(shí)掌握了,然后有條不紊的分析,一步一步理解,c 語言還是很 有意思的課程。 自己親自動(dòng)手編寫程序讓我增加了對(duì) c 語言程序開發(fā)環(huán)境的了 解,在上課的時(shí)候老師就講,學(xué)習(xí) c 語言最重要的是學(xué)習(xí) c 語言的 邏輯思維,不管以后從事什么行業(yè),學(xué)習(xí) c 語言都對(duì)自己的職業(yè)很 有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以后的 編程工作可能不用 c 語言,但是擁有扎實(shí)的 c 語言基礎(chǔ)是對(duì)工作很 有用的。 當(dāng)初在初步接觸 c 語言的時(shí)候,看著一堆“奇形怪狀”的符號(hào), 覺得甚是無聊,通過這次實(shí)訓(xùn),擺脫了那種似懂非懂的狀態(tài)! 感謝學(xué)校安排這次實(shí)習(xí)和老師的耐心講解,讓我學(xué)到了很多知 識(shí),在實(shí)習(xí)過程中,同學(xué)之間的相互探討,老師的循循善誘,最終讓 我們達(dá)到了舉一反三的效果,在學(xué)知識(shí)的同時(shí),也增加了同學(xué)老師之 間的感情。希望以后還會(huì)有更多類似的實(shí)習(xí)課程,在有限的大學(xué)時(shí)間 內(nèi)學(xué)到更多的實(shí)用技能,為以后的生活和工作打下一個(gè)良好的基礎(chǔ)。
篇四 c++計(jì)算器實(shí)踐報(bào)告2300字
c++計(jì)算器實(shí)踐報(bào)告
題 目
科學(xué)計(jì)算器應(yīng)用程序系統(tǒng)
學(xué)生姓名
指導(dǎo)教師
學(xué) 院
專業(yè)班級(jí) 學(xué)生學(xué)號(hào) 吳金星 嚴(yán)暉 材料科學(xué)與工程學(xué)院 1206 0607120610
計(jì)算機(jī)基礎(chǔ)教學(xué)實(shí)驗(yàn)中心
2023年 7 月 3 日
科學(xué)計(jì)算器管理信息系統(tǒng)
摘要:本設(shè)計(jì)是簡單計(jì)算器,日常計(jì)算機(jī)使用中,常常涉及到一些有關(guān)計(jì)算的問題,一個(gè)小型的計(jì)算器軟件變得非常有用,該校型計(jì)算器需要空間資源較少,對(duì)電腦其他程序的應(yīng)用影響較小。它的設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。
關(guān)鍵詞:程序設(shè)計(jì);計(jì)算器;mfc;按鈕控件
1. 計(jì)算器系統(tǒng)開發(fā)設(shè)計(jì)思想
⑴實(shí)驗(yàn)?zāi)康?/p>
①通過實(shí)踐加強(qiáng)對(duì)程序設(shè)計(jì)語言課程知識(shí)點(diǎn)的理解和掌握,培養(yǎng)對(duì)課程知識(shí)綜合運(yùn)用能力、實(shí)際分析問題能力及編程能力,養(yǎng)成良好的編程習(xí)慣。
②通過實(shí)踐進(jìn)一步領(lǐng)會(huì)程序設(shè)計(jì)的特點(diǎn)和應(yīng)用,提高運(yùn)用c++ 以及面向?qū)ο笾R(shí)解決實(shí)際問題的能力。
③通過實(shí)踐掌握用c++ 編寫面向?qū)ο蟮膶?shí)用程序的設(shè)計(jì)方法,對(duì)面向?qū)ο蠓椒ê退枷朐黾痈行缘恼J(rèn)識(shí);學(xué)會(huì)利用c++程序設(shè)計(jì)語言編寫出一些短小、可靠的windows實(shí)用程序,切實(shí)提高面向?qū)ο蟮某绦蛟O(shè)計(jì)能力。為后續(xù)的相關(guān)課程的學(xué)習(xí)打下基礎(chǔ)。
⑵實(shí)驗(yàn)要求
①二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制數(shù)的加、減、乘、除、乘方、取模等簡單計(jì)算
②科學(xué)計(jì)算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運(yùn)行
③以角度、弧度兩種方式實(shí)現(xiàn)上述部分函數(shù)
④具備歷史計(jì)算的記憶功能
⑤對(duì)不正確的表達(dá)式能指出其錯(cuò)誤原因
⑥整理上機(jī)步驟,完成實(shí)驗(yàn)報(bào)告、提交可運(yùn)行的程序,給出實(shí)驗(yàn)數(shù)據(jù)和實(shí)驗(yàn)結(jié)果
2、計(jì)算器系統(tǒng)功能及系統(tǒng)設(shè)計(jì)介紹
⑴功能說明
它的設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面;必要的交互信息;簡約美觀的效果。使用人員能快捷簡單地進(jìn)行操作。即可單機(jī)按鈕進(jìn)行操作,也可直接通過鍵盤直接輸入。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。
①包含的功能有:加、減、乘、除運(yùn)算,開方、求倒數(shù)等功能。②計(jì)算器上數(shù)字0—9為一個(gè)控件數(shù)組,加、減、乘、除為一個(gè)控件數(shù)組,其余為單一的控件。③給對(duì)話框添加菜單。④計(jì)算功能基本上是用系統(tǒng)內(nèi)部函數(shù)。⑤程序可以能自動(dòng)判斷輸入數(shù)據(jù)的正確性,保證不出現(xiàn)多于一個(gè)小數(shù)點(diǎn)、以0開頭等不正?,F(xiàn)象。⑥“c”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計(jì)算。
⑵設(shè)計(jì)思路
①算法基本流程,數(shù)值計(jì)算及功能:②主要部分為按鍵后的接受處理
③鍵入為數(shù)字則檢查和增長操作數(shù),有前算符則增長操作數(shù)1,否則增長操作數(shù)
2。計(jì)算器基本按:鍵入操作數(shù)1,鍵入運(yùn)算符(若為單目算符即直接運(yùn)算),鍵入操作數(shù)2,再鍵入算符即運(yùn)算前算符,若為當(dāng)前鍵入為單目算符即再運(yùn)算,結(jié)果保留在操作數(shù)1中,并返回在界面顯示。
④在每次運(yùn)算前將操作數(shù)進(jìn)行進(jìn)制轉(zhuǎn)為十進(jìn)制,在運(yùn)算結(jié)束后操作數(shù)還原進(jìn)制。 ⑤其中鍵入特殊算符和功能鍵作特殊處理,如:退格,進(jìn)制選鍵和”=”,”ce”,”c”等。顯示鍵入的相關(guān)信息,如果鍵入不合法即提示錯(cuò)誤。 ⑶算法流程圖
⑷關(guān)鍵功能實(shí)現(xiàn)
①操作數(shù)的.輸入,編輯框所關(guān)聯(lián)的變量為m_num,程序開始時(shí)為零。每按下一個(gè)數(shù)字鍵按鈕,就把它累加到m_num里并刷新顯示。bool型變量ele來判斷是否有小數(shù)點(diǎn)和一個(gè)整型數(shù)dint來表示小數(shù)點(diǎn)后的數(shù)據(jù)的位數(shù)。當(dāng)ele=true時(shí),表示有小數(shù)點(diǎn),否則則表示無小數(shù)點(diǎn)。按下小數(shù)點(diǎn)按鈕后執(zhí)行ele=true。當(dāng)按下一個(gè)數(shù)字鍵時(shí),首先根據(jù)ele判斷是否按下小數(shù)點(diǎn),若有則把小數(shù)點(diǎn)后數(shù)的位數(shù)加1,dint則為此次鍵入的數(shù)所處的位數(shù),將鍵入的數(shù)除以dint個(gè)10然后累加到編輯框所關(guān)聯(lián)的變量m_num上,若沒有則把m_num乘以10,然后累加到編輯框所關(guān)聯(lián)的變量m_num上。
②單目運(yùn)算符功能的實(shí)現(xiàn),由于單目運(yùn)算符中必須有執(zhí)行運(yùn)算的函數(shù),因而頭文件中要加入math.h,如m_num=sqrt(m_num).按下按鈕即可實(shí)現(xiàn)其功能。為實(shí)現(xiàn)連續(xù)運(yùn)算,程序有所改動(dòng)。
③雙目運(yùn)算符功能的實(shí)現(xiàn),雙目運(yùn)算符需要兩個(gè)操作數(shù)才能運(yùn)算,所以在執(zhí)行雙目運(yùn)算符按鈕的函數(shù)代碼中,要把m_num中的值保存到變量num2中,然后把m_num清零。這樣即可保存第一個(gè)操作數(shù)。另外先定義了一個(gè)整形變量addt,在不同的雙目運(yùn)算符中給addt賦不同的值,然后在等號(hào)中用switch語句來匹配addt值來判斷需要執(zhí)行何種雙目運(yùn)算。為實(shí)現(xiàn)連續(xù)運(yùn)算,程序有所改動(dòng)。 ④退格鍵功能的實(shí)現(xiàn),當(dāng)按下一次退格按鈕時(shí),若m_num為整數(shù),只需對(duì)其中數(shù)據(jù)除以10再取整即可,若按下一次退格按鈕為小數(shù),則根據(jù)小數(shù)點(diǎn)后數(shù)據(jù)的位數(shù)dint進(jìn)行操作,先對(duì)m_num執(zhí)行(dint-1)次乘以10運(yùn)算,然后取整,接著執(zhí)行(dint-1)次除以10的運(yùn)算即可。完成后需要把dint將減小1。
⑤正負(fù)號(hào)功能的實(shí)現(xiàn),在頭文件中定義一個(gè)bool型變量ele2來判斷m_num的正負(fù)。ele2=true時(shí)表示為正。在鍵入操作數(shù)時(shí)需要用到ele2。在正負(fù)號(hào)按鈕的消息響應(yīng)函數(shù)內(nèi)容為m_num=-m_num;ele2=!ele2。
3.計(jì)算器系統(tǒng)開發(fā)的體會(huì)
實(shí)踐是獲取知識(shí)的一個(gè)極其重要的途徑,無論是過去還是現(xiàn)在抑或是將來,我都堅(jiān)信這一點(diǎn)。在這個(gè)實(shí)驗(yàn)中,我堅(jiān)持以實(shí)踐為導(dǎo)向,雖然,我沒有對(duì)clr與.net的系統(tǒng)的學(xué)習(xí),理論理解并不多,但是在實(shí)際摸索應(yīng)用的過程中,我還是學(xué)到很多東西,特別是理解了一個(gè)功能的使用方法之后,這種快樂的心情是無法描述的?,F(xiàn)在可以靈活運(yùn)用一些常用的屬性,進(jìn)行一些基本操作,以實(shí)現(xiàn)預(yù)期目標(biāo)。
實(shí)現(xiàn)該計(jì)算器,當(dāng)時(shí)的想法是盡量向windows計(jì)算器靠攏??梢钥吹?,這個(gè)計(jì)算器有很多windows計(jì)算器的影子。雖然這個(gè)計(jì)算器還有很多不足,比如表達(dá)式的處理。 這個(gè)計(jì)算器的代碼都是自己思考過后寫出來的,特別是錯(cuò)誤排除部分,經(jīng)歷了很多bug的時(shí)期。由于時(shí)間限制,可視化計(jì)算器的基本實(shí)現(xiàn)告一段落,在時(shí)間允許的以后再進(jìn)一步完善計(jì)算器功能。
篇五 c++工程實(shí)踐報(bào)告1050字
通過c語言實(shí)訓(xùn),讓我加深了對(duì)c語言的了解,而不只是單單的在課本中學(xué)到的那些理論,平時(shí)乏味的課程,通過自己動(dòng)手親自編寫,變的生動(dòng)有趣,而在自己動(dòng)手的過程中,出現(xiàn)的問題很多,比理論要難的多,當(dāng)一個(gè)程序?qū)懲暌院?,?jīng)常會(huì)有很多錯(cuò)誤而沒法解決。不過,通過幾天的實(shí)訓(xùn),逐漸積攢了一些經(jīng)驗(yàn),有些錯(cuò)誤可以很快就看出來。
這次實(shí)訓(xùn)有很大的收獲,讓我對(duì)c語言有了更深的認(rèn)識(shí),平時(shí)在課堂上學(xué)到的東西可以自己動(dòng)手編寫,將其轉(zhuǎn)化成一些實(shí)用的技能。如果是一個(gè)程序?qū)懲暌惶庡e(cuò)誤也沒有,會(huì)有種成就感,于是興趣就來了,興趣來了,自然學(xué)的東西也就多了,能把理論變成實(shí)際的技能,讓我對(duì)c語言有了濃厚的興趣和更深層的認(rèn)識(shí)。
c語言是一個(gè)有序的學(xué)習(xí),學(xué)了最基本的替換,然后擴(kuò)展到循環(huán),嵌套,條理很清楚,不是一個(gè)零散的知識(shí),實(shí)際上所有的課程都如此,不過通過實(shí)訓(xùn)我也知道了自己的不足,存在的很多問題。
比如自己寫的寫的小程序出了問題,不會(huì)解決了就叫老師幫忙,雖然說一定意義上增加了師生之間的感情,但是會(huì)養(yǎng)成一種依賴的心理,碰到問題了第一個(gè)想到的是求助而不是自己獨(dú)立解決,所以以后要多多鍛煉自己的信心和增加自己的能力,爭取做到老師不在身邊的時(shí)候也可以完成一些簡單的程序編寫與錯(cuò)誤排除。
還有自己的基礎(chǔ)知識(shí)不扎實(shí),遇到的問題,沒有很好的邏輯思維,親自編寫一個(gè)陌生的程序的時(shí)候會(huì)有種無法下手的感覺,找不到突破口。通過實(shí)訓(xùn),逐漸理清了順序,對(duì)于簡單的程序和一些相對(duì)比較繁瑣的嵌套,循環(huán),不在是看著一頭霧水。其實(shí)只要理清了思路,把基礎(chǔ)知識(shí)掌握了,然后有條不紊的分析,一步一步理解,c語言還是很有意思的課程。
自己親自動(dòng)手編寫程序讓我增加了對(duì)c語言程序開發(fā)環(huán)境的了解,在上課的時(shí)候老師就講,學(xué)習(xí)c語言最重要的是學(xué)習(xí)c語言的邏輯思維,不管以后從事什么行業(yè),學(xué)習(xí)c語言都對(duì)自己的職業(yè)很有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以后的編程工作可能不用c語言,但是擁有扎實(shí)的c語言基礎(chǔ)是對(duì)工作很有用的。
當(dāng)初在初步接觸c語言的時(shí)候,看著一堆“奇形怪狀”的符號(hào),覺得甚是無聊,通過這次實(shí)訓(xùn),擺脫了那種似懂非懂的狀態(tài)!
感謝學(xué)校安排這次實(shí)訓(xùn)和老師的耐心講解,讓我學(xué)到了很多知識(shí),在實(shí)訓(xùn)過程中,同學(xué)之間的相互探討,老師的循循善誘,最終讓我們達(dá)到了舉一反三的效果,在學(xué)知識(shí)的同時(shí),也增加了同學(xué)老師之間的感情。希望以后還會(huì)有更多類似的實(shí)訓(xùn)課程,在有限的大學(xué)時(shí)間內(nèi)學(xué)到更多的實(shí)用技能,為以后的工作打下一個(gè)良好的基礎(chǔ)。