第一篇:(BIT小學期編程題解)9~12經驗總結
【經驗總結】9~12題小總結
在各位大神的提醒和幫助下終于做完了,下面小小的總結一下。第9題《千字文》 大體思路:
主要就是數據的讀入和輸出,進行UTF-8和unicodo以及十進制之間的轉換,轉換完成進行計數然后輸出。其實題目的主體并不難,難的是數據的讀入和輸出。但是需要判斷一下這個字符是用幾個字節表示的,如果讀入的值在0~127之間說明是用一個字節表示的,如果在192~223之間就表示是用兩個字節表示的,根據題意,其他的情況就是用三個字節表示的。具體實現:
輸入用getchar()讀入,然后結束的標記就用!=255,因為getchar()是一個字節一個字節讀的,而UTF-8剛好又是以字節的形式存儲的,所以正好搭配。
至于運用位運算還不是很熟練,所以就先不說位運算那種方法了,說一下一個暴力計算Unicode的方法:對于一個字節表示的字符其UTF-8的表示方式是0×××××××;對于兩個字節表示的字符其表示方式是110×××××
10××××××;對于三個字節表示的字符其表示方式就是1110××××
10××××××
10××××××;依次類推。然后Unicode就是將上面的×號所在的位上的0或1字串鏈接起來所得到的一個大的二進制串的值。下面就是計算了,可以這樣運用純數學的方式計算。比如說對于二進制的符號來說假設第一個字節表示的數是a,第二個字節表示的數是b,那么將后面的×號所在位上的數字鏈接起來所得到的二進制字符串的十進制表示就是(a-2^7-2^6)*2^6+(b-2^7)這個主要就是運用了二進制與十進制的轉化。計算出字符相應的Unicode值之后就把其作為計數數組的下標,然后進行計數,這樣也省去了最后字符要按Unicode的大小進行輸出時的排序那一步。三個字節的計算方法和兩個字節的計算方法一樣就不再說了。然后就是輸出漢字,輸出的時候需要判斷一下Unicode的值以確定該字符是用三個字節表示的還是用兩個字節表示的,兩個字節可以表示的范圍是128~2047,輸出的時候可以采用這樣的輸出方式(“%c%c”,a,b)a,b,就是前面我們讀入時的a,b的值。這里那,對于啊a,b可以有兩種方式來計算,第一種就是在最開始計算的時候就把每一個字符所用的字節表示的數給記錄下來;第二種就是再將Unicode的十進制形式轉換為UTF-8以字節表示的形式,具體轉換時這樣的,假設Unicode的值是t(對于兩個字節表示的字符來說),那么b=t%2^6+2^8,a=t/2^6+2^6+2^7,這樣也可以計算出來啊a,b的值。這樣一個漢字就輸出來了,剩下的就是輸出其十六進制表示就用printf(“0x%04x”,unicode);然后再輸出大于1的字符的個數就好。
第10題找9.整體思路:
整體思路就是以高精度算法為工具,以黃軒成大神的結論:(0,a)中 含9的數字的個數是(a[0]*10^4 + a[1]*10^3 + a[2]*10^2 + a[3]*10 + a[4])減去(a[0]*9^4 + a[1]*9^3 + a[2]*9^2 + 0 + 0)為導向進行計算。分別計算出小于a和小于b的數中含9的數的多少,然后相減就可以了。具體方法:
首先是數據讀入,可以用getchar()讀入然后一位一位的處理,也可以用%s讀入然后再一位一位的處理。中間的一位一位的處理過程主要就運用到了秦九韶算法,(a[0]*10^4 + a[1]*10^3 + a[2]*10^2 + a[3]*10 + a[4])=((((a[0]*10+a[1])*10+a[2])*10+a[3])*10+a[4])也就是每讀一位就 *10+x(a[0]*9^4 + a[1]*9^3 + a[2]*9^2 + 0 + 0)=((((a[0]*9+a[1])*9+a[2])*9+0)*9+0);對于上面的第一步,其實本質含義就是把字符串轉化為整形的數,對于第二個計算式就是用一個數組來計數,每讀一位就進行一次數組乘9然后加上這一位的數值。注意中間需要判斷一下,如果讀入的數里面有9那么以后就只用乘9不用再加每一位上的數字了,這個標記一下就好。這樣就可以把小于a,小于b的數中含9 的數找到相減就可以了,注意一下如果b中含有9那么最后的結果要+1.然后就是編寫高精度加法,減法,高精度乘低精度乘法的函數了,跟前不久寫的高精度很類似,只是把進位改一下,程序微調一下就好了。編寫的時候注意因為最后的結果很大,所以要進行數位壓縮,如果采用100000000進制壓縮的話,最后存結果的數組只用開到1250就夠了(當然實際開的時候要大一些,不然會RE的)
還有需要注意的就是:
(1)存a,b的數組要大一些10005左右,存結果的數組1260左右。
(2)輸出的時候如果結果不是存結果數組的第一個元素,那么其他的元素在輸出的時候需要補0用%08d輸出就好。(3)編寫函數的時候注意進位。第11題,識別條形碼
整體思路:
整體思路就是對給出的數據進行排序,根據最值得情況來判斷改組數據是不是合法,是不是只有寬條,處理好多%5少%5就好了。具體實現:
討論區里面大神們已經用各種不同的方法得到了結果,我這里就不說了就給出幾個判定的等式
寬Max/窄min<=1.05/0.95 窄Max/窄min<=1.05/0.95 寬Max/窄min<=2.1/0.95 寬min/窄Max>=1.9/1.05 因為一共只有20個數所以可以有比較多的方法。第12題 整體思路: 整體思路就是遍搜,找出可以收集到的珠子的最大個數,從開始找斷點然后分別向兩邊進行搜索。珠子的情況大致可以分為三種,一種是全部為W,一種是全部為B或是R,還有一種就是這三種顏色的珠子混合存在。具體方法:
具體方法其實就是怎么實現珠子連在一起的問題,如果直接做的話可以這樣:(1)在循環的時候,循環變量一旦減到負數就加上n,一旦加到n就減去n。(2)也可以把原來的字符串復制一次或是兩次到一個叔組里面,然后就不用考慮最后的鏈接問題了,每一次只要在i~i+n之間循環就可以了。
具體循環的時候就是左邊找一遍然后右邊找一遍,然后把左右兩邊的珠子數加在一起,但是存在全部是R或是全部是B或是全為W和R混或是全為W和B混合,所以在從一邊向另一邊記錄的時候最好設置一個變量,意思就是左邊已經搜索過的,右邊就不用再搜索了,這樣就可以防止最后的結果大于n。然后每次搜索過后的結果都和Max比較,讓Max取最大值就好了,最后輸出Max即可。
希望對還沒有過的有幫助,如果有什么錯誤,希望提出來,謝謝!
第二篇:數控編程經驗總結
一、刀路的總則:
開粗:在機床的最大負荷下,絕大部分情況應選用盡可能大的刀,盡可能大的的進刀量,盡可能快的進給。在同一把刀的情況下,進給與進刀量成反比。一般情況下,機床的負荷不是問題,選刀的原則主要依產品的二維角與三維弧是否過小來考慮。選好刀后,便定刀長,原則是刀長大于加工深度,大工件則要考慮夾頭是否有干涉。光刀:光刀的目的是為了達到滿足工件表面光潔度、預留適當余量的加工要求。同樣,光刀選用盡可能大的刀,盡可能快的時間,因為精刀需要較長的時間,用最合適的進刀與進給。在同一進給下橫向進刀越大越快,曲面進刀量與加工后的光潔度有關,進給的大小與曲面的外表形狀有關,在不傷及面的情況下,留最小的余量、用最大的刀、最快的轉速、適當的進給。
二、裝夾方法:
1、所有的裝夾都是橫長豎短。
2、虎鉗裝夾:裝夾高度不應低于10個毫米,在加工工件時必須指明裝夾高度與加工高度。加工高度應高出虎鉗平面5毫米左右,目的是保證牢固性,同時不傷及虎鉗。此種裝夾屬一般性的裝夾,裝夾高度還與工件大小有關,工件越大,則裝夾高度相應增大。
3、夾板裝夾:夾板用碼仔碼在工作臺上,工件用螺絲鎖在夾板上,此種裝夾適用于裝夾高度不夠及加工力較大的工件,一般中大型工件,效果比較好。
4、碼鐵裝夾:在工件較大、裝夾高度不夠,又不準在底部鎖縲絲時,則用碼鐵裝夾。此種裝夾需二次裝夾,先碼好四角,加工好其它部分,然后再碼四邊,加工四角。二次裝夾時,不要讓工件松動,先碼再松。也可以先碼兩邊,加工另兩邊。
5、刀具的裝夾:直徑10mm以上,裝夾長度不低于30mm;直徑10mm以下,裝夾長度不低于20mm。刀具的裝夾要牢固,嚴防撞刀與直接插入工件。
三、刀具的分類及其適用范圍:
1、按材質分:
白鋼刀:易磨損,用于銅公及小鋼料開粗。鎢鋼刀:用于清角(特別是鋼料)及光刀。合金刀:類似于鎢鋼刀。紫刀:用于高速切削,不易磨損。
2、按刀頭分:
平底刀:用于平面及直身側面,清平面角。球刀:用于各種曲面中光、光刀。
牛鼻刀(有單邊、雙邊及五邊):用于鋼料開粗(R0.8、R0.3、R0.5、R0.4)。粗皮刀:用于開粗,注意余量的留法(0.3)。
3、按刀桿分:
直桿刀:直桿刀適用各種場合。
斜桿刀:但不適用于直身面及斜度小于桿斜度的面。
4、按刀刃分:
兩刃、三刃、四刃,刃數越多,效果越好,但做功越多,轉速及進給相應調整,刃數多壽命長。
5、球刀與飛刀光刀的區別:
球刀:凹面尺小于球尺,平面尺小于球R時,光不到(清不到底角)。
飛刀:優點是能清底角。相同參數的比較:V=R*ω轉速快許多(飛刀),力大光出的東西亮,飛刀較多地用于等高外形,有時用飛刀不需中光。缺點是凹面尺寸及平面尺小于飛刀直徑時光不到。
四、CNC配合電火花加工,銅公的做法:
1、什么情況下需要做銅公:
刀完全下不去要做銅公,在一個銅公中還有下不去的,形狀是凸出需再分。刀能下去,但易斷刀的也需做銅公,這需根據實際情況而定。要求火花紋的產品需做銅公。銅公做不成的,骨位太薄太高,易損公且易變形,加工中變形與打火花變形,此時需鑲件。
銅公加工出的東西表面(特別是曲面會很順很均勻)能克服精鑼中的許多問題與繪圖中的許多問題。要求精確外形或余量多時必須做粗銅公。
2、銅公的做法:
選出要做銅公的面,補全該補的面,或延長該延的面,保證銅公的所有邊緣大于要打的邊緣同時不傷及其它產品的面,去掉不必要的清不到的平面角(與平面角相交處是更深的膠位),補成規則形狀;找出銅公最大外形,用一邊界然后投影到托面;定出基準框大小,剪掉掉托面,到此銅公圖基本完成;備料:長*寬*高,長與寬≥Ymax與Xmax為基準框實際銅料的長寬必須大于圖上基準框。高≥銅公的理論尺寸+基準框高+裝夾高度。
五、圖紙定數問題:
1、在沒有現成的加工面下,平面四面分中,中心對原點,頂面對零,頂面不平時(銅公而言)留0.1的余量,即碰數時,實際對(z),圖上偏低0.1。
2、當有現成的加工面時,使圖上的現成面對0(z),平面能分中則分中,否則以現成邊碰數(單邊)加工面則要校核實際高度,寬,長與圖紙差別,按實際的料來編程。一般情況,先加工成圖上的尺寸再加工圖上形狀。
3、當要多個位加工時,第一個位(標準位),就要把其它幾個位的基準鑼好,長寬高都要鑼,所有下一次加工基準要以上次已加工好的面為準。
4、鑲件的定位:放在整體里面,把下面墊起一定高度然后圖紙也升高此高度,平面按整體分中,高度按圖下面用鏍絲鎖住;是方方正正的則可直分中;粗略一點可用最大外形分中;割一夾具,按夾具分中,鑲件圖與夾具的相對位置確定然后把圖紙原點放在夾具中心點。
六、開粗的刀路選擇:
1、曲面挖槽:
關鍵是范圍的選擇與面的選擇,刀路加工的區域是以所選范圍內所選面為終止面,從最高點到最低點刀具能下得去的所有地方為原則。所選面最好是全體面,邊界則只能是所要加工的區域,無面處延伸小于半個刀徑的距離,因為其它面留有足夠余量所以自動保護;最好延伸最低線,因為最低處有一個R鑼不到。
刀的選擇:如刀具不能螺旋或斜線進刀時或加工不到的區域進不了刀的區域封起,留待二次開粗。光刀之前,一定要把未開粗的區域全部開粗,特別是小角,其中包括二維角,三維角及封起來的區域,不然則會斷刀。
二次開粗:一般用三維挖槽選范圍,平底刀,能用平面挖槽與外形刀路的則用。在不傷及其它面的情況下刀具中心到所選邊界,一般不精修邊界,用快速雙向角度視情況而定,螺旋進刀,角度1.5度,高1,當挖槽形狀為條形,不能螺旋下刀則用斜線進刀,一般打開過濾,特別是曲面開粗,進刀平面不可低,以免撞刀,安全高度不可低。
退刀:一般不用相對退刀,用絕對退刀,當沒有島嶼時則用相對退刀。
2、平面挖槽:銑各種平面,凹平槽,當銑部分開放式平面時,則需定邊界,原則能進刀(大于一個刀徑),開放處偏外大于半個刀徑,封閉外圍。
3、外形:當所選平面適合外形分層,則用外形分層提刀(平面外形),提刀點與下刀點為一點時,不須提刀z平面一般提刀,盡量不用相對高度;補正方向一般右補正(順刀)。
4、機械補正的刀路設置:補正號為21,改電腦補正機械補正,進刀為垂直進刀,刀過不了的地方則改大R不留余量。
5、等高外形:適合于走封閉式的面,走開放式的面若是四圈則要封項面,若是四圈內或非四圈則要選范圍與高度(一定弧形進刀開粗),用于開粗的情況:任一平面內的加工距離小于一個刀徑,若大于一個刀徑則要用更大的刀或兩次等高外形。
6、曲面流線:具有最好的均勻性與干脆性,適合光刀很多時候可取代等高外形。
7、放射刀路:適合中間有大孔的情況(少用)。注意事項:彈刀,刀不鋒利,刀過長,工件過深時要環繞走不可上下走;工件中的利角兩邊的面要分兩個刀路,不可越過去,光刀時的邊緣最好延長(用弧線進退刀)。
七、清角:
1、這里的清角清的是二維死角,是前面工序都未曾走到的部分,如光刀需走到的地方則應先清角再光刀,太小大深的角可分幾把刀清,不要用小刀清太多地方。
2、清三維角:開一些小槽,一些三維轉角處。
3、易斷刀,一定要考慮像細刀、過長,加工量過大(主要是z向,深度方向)的情況。
4、刀路:用二維外形走,只能清小角(R0.8)及二維平面角;用平行刀路;用等高外形;有一種地方刀子去不了的曲面及外形走不到的死角則要先封起來起刀,最后清角,大面中的小缺口一般先封起來。
八、中光:
1、中光:作為曲面的鋼料與細公才中光。
2、原則:大刀開粗時層與層間的余量較多,為使光刀時得到更好效果的一道工序,3、特點:快速清除,大刀飛刀亦可,大進給,大間距;不必顧忌表面質量;平面的工件不必中光;等高外形的工件不用中光,等高外形開粗時可細一點把兩道工序放在一起,細一點指表面余量與層與層的距離;需不需中光,還有一個重要因素是工作的材料,材料越硬,則考慮中光;中光的加工方向與光刀開粗最好相對這樣加工的東西會效果好,均勻。
九、光刀:
光刀是要達到各種產品與模具的裝配要求所以要非常慎重,根據不同的要求給予不同的刀路設置與參數設置。
1、光刀的下刀高度與最后高度都改為0,公差設計1個絲以內,不需過濾(工件越小公差越小,公差影響外型)。
2、前模與分型面要達到最好的光潔度,后模可次,其它非配合及避空位可粗糙點。
3、刀路設計由以下因素決定:
具體外形(如平面與其它面),陡峭面與平坦曲面。兩面之間是否利角(利角則分開)。兩部分是否要求不同(要不要留余量,余量的多少,光潔度的要求不同)。光刀中保護面問題是個大問題,對已加工好的面一定要預到加工中的誤差保護起來,按保護面的要求保護起來。范圍保護,不計誤差的0保護,高度范圍與平面范圍;保護面保護。
刀路的延長問題:光刀中,刀路加工到邊緣時最好作圓弧進退刀否則事先把面稍加延長。
光刀中的提刀問題:提刀浪費時間,所以盡量避免提刀。方法1:設提刀間隙(小缺口)
方法2:封面,把提刀處封起來(小缺口)方法3:避開間隙(大缺口處)
方法4:等高外形時延長到同一高度,光刀中的進刀問題,第一刀進刀一定要從工件外進,避免振動及碰傷工件,所有光刀一定設進刀。刀具的磨損問題:當工件較大時,需多把刀光完同一工件。
第三篇:VC++編程經驗總結(范文)
VC++編程經驗總結
vc++如何實現遠程調試
*假設調試機IP 192.168.0.182 遠程機IP 192.168.0.161
*遠程機為調試機分配權限,使調試機可以使用遠程桌面登陸到遠程機器上(這樣調試起來方便)。
*調試機上安裝visual studio.net 2003
共享調試機上的Visual Studio上的遠程調試目錄(以我的機器為例)
C:Program FilesMicrosoft Visual Studio.NET
2003Common7PackagesDebugger
*遠程機將上面的共享目錄考貝到本地,比如:d:Debugger
*調試機共享要調試的程序所在目錄,比如:
D:importantcvsrootdv-to-dvdbindebug
*遠程機將調試機上的目錄影射為本地目錄。比如:Z:
*遠程機上以命令行形式執行 D:Debuggermsvcmon.exe –tcpip –anyuser
*調試機啟動vc.打開要調試的工程。比如dvtodvd.選擇菜單project->properties 選debuging->remote setting
Connection :Remote via TCP/IP(Native only)
Remote machine: 192.168.0.161
Remote Command: z:dvtodvd.exe
*debug->start
*就可以調試了。
1.如何在Release狀態下進行調試
Project->Setting=>ProjectSetting 對話框,選擇Release狀態。C/C++標簽中的Category選General,Optimizations選 Disable(Debug),Debut info選Program Database。在Link標簽中選中Generate debug info復選框。
注:只是一個介乎Debug和Release的中間狀態,所有的ASSERT、VERIFY都不起作用,函數調用方式已經是真正的調用,而不查表,但是這種狀態下QuickWatch、調用隊列跟蹤功能仍然有效,和Debug版一樣。
2.Release和Debug有什么不同
Release版稱為發行版,Debug版稱為調試版。
Debug中可以單步執行、跟蹤等功能,但生成的可執行文件比較大,代碼運行速度較慢。Release版運行速度較快,可執行文件較小,但在其編譯條件下無法執行調試功能。Release 的exe文件鏈接的是標準的MFC DLL(Use MFC in a shared or static dll)。這些DLL在安裝Windows的時候,已經配置,所以這些程序能夠在沒有安裝Visual C++ 6.0的機器上運行。而Debug版本的exe鏈接了調試版本的MFC DLL文件,在沒有安裝Visual C++6.0的機器上不能運行,因為缺相應的DLL,除非選擇use static dll when link。
3.ASSERT和VERIFY有什么區別
ASSERT里面的內容在Release版本中不編譯,VERIFY里面的內容仍然翻譯,但不再判斷真假。所以后者更安全一點。
例如ASSERT(file.Open(strFileName))。
一旦到了Release版本中,這一行就忽略了,file根本就不Open()了,而且沒有任何出錯的信息。如果用VERIFY()就不會有這個問題。
4.Workspace和Project之間是什么樣的關系
每個Workspace可以包括幾個project,但只有一個處于Active狀態,各個project之間可以有依賴關系,在project的Setting..中可以設定,比如那個Active狀態的project可以依賴于其他的提供其函數調用的靜態庫。
5.如何在非MFC程序中使用ClassWizard
在工程目錄下新建一個空的.RC文件,然后加入到工程中就可以了。
6.如何設置斷點
按F9在當前光標處增加一個斷點和取消一個斷點。
另外,在編輯狀態下,按Ctrl+B組合鍵,彈出斷點設置對話框。然后單擊【Condition…】按鈕彈出設置斷點條件的對話框進行設置。
7.在編輯狀態下發現成員變量或函數不能顯示提示是如何打開顯示功能
這似乎是目前這個Visual C++ 6.0版本的一個bug,可按如下步驟使其正常,如再出現,可如法炮制:
(1)關閉Project
(2)刪除“工程名.ncb”文件
(3)重新打開工程
8.如何將一個通過ClassWizard生成的類徹底刪除
首先在工作區的FileView中選中該類的.h和.cpp文件,按delete刪除,然后在文件管理器中將這兩個文件刪除,再運行ClassWizard,這時出現是否移走該類的提示,選擇remove就可以了。
9.如何將在workspace中消失的類找出來
打開該類對應的頭文件,然后將其類名隨便改一下,這個時候工作區就會出現新的類,再將這個類改回原來的名字就可以了。
10.如何清除所有的斷點
菜單【Edit】->【Breakpoints…】,打開“Breakpoints”對話框,單擊【Remove All】按鈕即可。快捷鍵是“Ctrl + Shift + F8”。
11.如何再ClassWizard中選擇未列出的信息
打開“ClassWizard”對話框,然后切換到“Class Info”頁面。改變“Message filter”,如選擇“Window”,“Message”頁面就會出現Window的信息。
12.如何檢測程序中的括號是否匹配
把光標移動到需要檢測的括號前面,按快捷鍵“Ctrl + ]”。如果括號匹配正確,光標就跳到匹配的括號處,否則光標不移動,并且機箱喇叭還會發出一聲警告。
13.如何查看一個宏(或變量、函數)的定義
把光標移動到要查看的一個宏上,就比如說最常見的DECLARE_MAP_MESSAGE上按一下F12(或右鍵菜單中的相關菜單),如果沒有建立瀏覽文件,就會出現提示對話框,按【確定】按鈕,然后就會跳到該宏(或變量、函數)定義的地方。
14.如何添加Lib文件到當前工程
單擊菜單【Project】->【Settings…】彈出“Project Setting”對話框,切換到“Link”標簽頁,在“Object/library modules”處輸入Lib文件名稱,不同的Lib之間用空格格開。
15.如何快速刪除項目下的Debug文件夾中臨時文件
在工作區的FileView視圖中選中對應的項目,單擊右鍵彈出菜單,選擇【Clean(selection only)】菜單即可。
16.如何快速生成一個現有工程除了工程名外完全相同的新工程
在新建工程的“New”對話框中選擇“Custom Appwizard”項,輸入新工程的名字,單擊
【OK】按鈕。出現“Custom AppWizard”項,輸入新工程的名字,單擊【OK】按鈕。出現“Custom AppWizard-Step 1 of 2”對話框,選擇“An existing Project”項,單擊
【Next】按鈕。出現“Custom AppWizard-Step 2 of 2”對話框,選擇現有工程的工程文件名,最后單擊【Finish】按鈕。編譯后就生成一個與現有工程相同但可以重新取名的工程AppWizard。
現在就可以項用MFC AppWizard一樣用這個定制的向導。如果不想用了,可以在Visual C++ 6.0安裝目錄下CommonMSDev98Template目錄中刪除該Wizard對應的.awx和.pdb文件。
17.如何解決Visual C++ 6.0不正確連接的問題
情景:明明改動了一個文件,卻要把整個項目全部重新編譯鏈接一次。剛剛鏈接好,一運行,又提示重新編譯鏈接一次。
這是因為出現了未來文件(修改時間和創建時間比系統時間晚)的緣故。可以這樣處理:找到工程文件夾下的debug目錄,將創建和修改時間都比系統時間的文件全部刪除,然后再從新“Rebuild All”一次。
18.引起LNK2001的常見錯誤都有哪些
遇到的LNK2001錯誤主要為:unresolved external symbol “symbol”
如果鏈接程序不能在所有的庫和目標文件內找到所引用的函數、變量或標簽,將產生此錯誤信息。
一般來說,發生錯誤的原因有兩個:一是所引用的函數、變量不存在,拼寫不正確或者使用錯誤;其次可能使用了不同版本的鏈接庫。以下是可能產生LNK2001錯誤的原因:
<1>由于編碼錯誤導致的LNK2001錯誤
(1)不相匹配的程序代碼或模塊定義(.DEF)文件導致LNK2001。例如,如果在C++源文件了內聲明了一變量“var1”,卻試圖在另一個文件內以變量“var1”訪問改變量。
(2)如果使用的內聯函數是在.cpp文件內定義的,而不是在頭文件內定義將導致LNK2001錯誤。
(3)調用函數時如果所用的參數類型和頭函數聲明時的類型不符將會產生LNK2001錯誤。
(4)試圖從基類的構造函數或析構函數中調用虛擬函數時將會導致LNK2001錯誤。
(5)要注意函數和變量的可公用性,只有全局變量、函數是可公用的。靜態函數和靜態變量具有相同的使用范圍限制。當試圖從文件外部方位任何沒有在該文件內聲明的靜態變量時將導致編譯錯誤或LNK2001錯誤。
<2>由于編譯和聯機的設置而造成的LNK2001錯誤
(1)如果編譯時使用的是/NOD(/NODERAULTLIB)選項,程序所需要的運行庫和MFC時將得到又編譯器寫入目標文件模塊,但除非在文件中明確包含這些庫名,否則這些庫不會被鏈接進工程文件。這種情況下使用/NOD將導致LNK2001錯誤
(2)如果沒有為wWinMainCRTStartup設定程序入口,在使用Unicode和MFC時將出現“unresolved external on _WinMain@16”的LNK2001錯誤信息。
(3)使用/MD選項編譯時,既然所有的運行庫都被保留在動態鏈接庫之內,源文件中對“func”的引用,在目標文件里即對“__imp__func”的引用。如果試圖使用靜態庫LIBC.LIB或LIBCMT.LIB進行鏈接,將在__imp__func上發生LNK2001錯誤。如果不使用/MD選項編譯,在使用MSVCxx.LIB鏈接時也會發生LNK2001錯誤。
(4)使用/ML選項編譯時,如用LIBCMT.LIB鏈接會在_errno上發生LNK2001錯誤。
(5)當編譯調試版的應用程序時,如果采用發行版模態庫進行鏈接也會產生LNK2001錯誤;同樣,使用調試版模態庫鏈接發行版應用程序時也會產生相同的錯誤。
(6)不同版本的庫和編譯器的混合使用也能產生問題,因為新版的庫里可能包含早先的版本沒有的符號和說明。
(7)在不同的模塊中使用內聯和非內聯的編譯選項能夠導致LNK2001錯誤。如果創建C++庫時打開了函數內聯(/Ob1或/Ob2),但是在描述該函數的相應頭文件里卻關閉了函數內聯(沒有inline關鍵字),只是將得到錯誤信息。為避免該問題的發生,應該在相應的頭文件中用inline關鍵字標志為內聯函數。
(8)不正確的/SUBSYSTEM或ENTRY設置也能導致LNK2001錯誤。
19.如何調試一個沒有源碼的exe文件調用的dll
在Visual C++ 6.0中,進入“Project Setting”對話框然后選擇Debug標簽頁。通常Visual Studio默認“executable for debug session”為可執行文件名,但可以將他改成任何你想要的程序。甚至可以指定不同的工作目錄以及傳遞參數到你的程序。這個技術常用來調試Dlls、名字空間擴展、COM對象和其他從某些EXE以及從第三方的EXE中調用的plug-in程序。
20.Visual C++ 6.0工程中的項目文件都表示什么
.opt:工程關于開發環境的參數文件。如工具條位置等信息。
.aps(AppStudio File)資源輔助文件,二進制格式,一般不用去管它。
.clw:ClassWizard信息文件,實際上是INI文件格式,有興趣可以研究一下。有時候ClassWizard出了問題,手工修改CLW文件可以解決。如果此文件不存在的話,每次用ClassWizard的時候回提示是否重建。
.dsp(DevelopStudio Project):項目文件,文本格式,不過不熟悉的不要手工修改。.dsw(DevelopStudio Workspace):是工作區文件,其他特點和.dsp差不多。
.plg:是編譯信息文件,編譯時的error和warning信息文件(實際上是一個html文件),一般用處不大。在單擊菜單【Tool】->【Option】彈出的對話框里面有個選項可以控制這個文件的生成。
.hpj(Help Project):是生成幫助文件的工程,用microsoft Help Compiler可以處理。.mdp(Microsoft DevStudio Project):是舊版本的項目文件,如果要打開此文件的話,會提示你是否轉換成新的.dsp格式。
.bsc:是用于瀏覽項目信息的,如果用Source Brower的話就必須有這個文件。如果不用這個功能的話,可以在Project Options里面去掉Generate Browse Info File,這樣可以加快編譯速度。
.map是執行文件的映象信息記錄文件,除非對系統底層,這個文件一般用不著。.pch(Pre-Compiled File):是與編譯文件,可以加快編譯速度,但是文件非常大。
.pdb(Program Database):記錄了程序有關的一些數據和調試信息,在調試的時候可能有用。
.exp:只有在編譯DLL的時候才會生成,記錄了DLL文件的一些信息,一般也沒有用。.ncb:無編譯瀏覽文件(no compile browser)。當自動完成功能出問題時可以刪除此文件。編譯工程后會自動生成。
第四篇:編程課程心得體會
計算機最重要的就是上機操作,自己編寫程序,在VisualC++運行,下面就是小編給大家帶來的編程課程心得體會范文【五篇】,希望能幫助到大家!
編程課程心得體會范文一
經過一個學期的學習,我對C語言有了一定的了解。C語言是學習計算機科學的基礎,作為一名計算機專業學生,掌握C語言更是毋庸置疑。在上課之前,就經常聽同學說,C語言很難學,確實,剛開始聽課時覺得老師不知所云。不過,發現對后續內容的預習后,前面的疑團都迎刃而解,這讓我對C語言的學習更有信心。
計算機重要的就是上機操作,自己編寫程序,在VisualC++運行,剛開始經常會出現錯誤,經過分析改正后,終于能夠運行了,就覺得特別激動。
課程設計是一個把需求分析、程序編寫、程序調試、撰寫報告結合為一體的過程。在這個過程中,不僅鍛煉了我們縝密的思維和堅持不解的毅力,更磨練了一個隊伍的團結互助的精神。只有通過大家一起努力才能將課程設計的所有環節都順利的完成。另外程序設計中我們遇到問題并解決問題的過程,使得我們獨自探索并解決問題的能力了有了一個提高,這有利于我們以后的學習。同時這整一個過程,也使我們對程序編寫的整個過程有了一個統籌全局的思想,因為需求分析、程序編寫、程序調試、撰寫報告這些過程是環環相扣的,絕對不可能獨立進行。
課程設計是學習《C程序設計》后對知識的全面測試,剛拿到題目時不知道怎么去處理,覺得很復雜,經過和小組成員的討論,上網查資料,逐個問題逐個擊破,問題不再那么復雜。通過課程設計,我發現自己還存在很多知識漏洞,編寫程序時,經常會出現低級錯誤,很多知識點都不熟悉。在今后的時間里,我一定要投入更多精力學習C語言,以課本為基礎,請教老師,與同學討論,參考資料,上機操作,我相信我一定能把C語言學好。
編程課程心得體會范文二
學習vb程序已經一個學期了,但是感覺沒有學到真正的知識。但是近幾個課時的課程學習讓我受益匪淺,學會了一些簡單的程序語言設計,并且感覺這是一種樂趣,開始喜歡這門課程了。
然而,我深刻體會到這門課程并不是輕而易舉就可也學好的,學習這門課程不僅需要細心嚴謹的態度,還需要充分發揮我們的想象力,讓理論和實踐充分的結合在一起,才能達到事半功倍的效果。細節決定成敗這句話在程序設計中恰當不過了,因為一個小小的錯誤代碼就可以使你的整個的程序無法進行,有時候絞盡腦汁也沒能找出錯誤所在,只好老老實實的從新進行編寫工作。所以課程不僅理論性強,實際操作性更強,沒有一個好的心態很難學好這門課程。我們學習的不僅是科學的方法,還包括用什么樣的態度去對待這門課程,并且讓自理論性和實踐性在自身得到充分的發揮,用細心嚴謹的態度去認識事物,且希望通過這次的實踐操作可以讓我更好地學習vb程序設計。
編程課程心得體會范文三
本學期我們開設了《模擬電路》與《數字電路》課,這兩門學科都屬于電子電路范疇,與我們的專業也都有聯系,且都是理論方面的指示。正所謂“紙上談兵終覺淺,覺知此事要躬行。”學習任何知識,僅從理論上去求知,而不去實踐、探索是不夠的,所以在本學期暨模電、數電剛學完之際,緊接著來一次電子電路課程設計是很及時、很必要的。這樣不僅能加深我們對電子電路的任職,而且還及時、真正的做到了學以致用。
這兩周的課程設計,先不說其他,就天氣而言,確實很艱苦。受副熱帶高氣壓影響,江南大部這兩周都被高溫籠罩著。人在高溫下的反應是很遲鈍的,簡言之,就是很難靜坐下來動腦子做事。天氣本身炎熱,加之機房里又沒有電扇、空調,故在上機仿真時,真是艱熬,坐下來才一會會,就全身濕透,但是炎炎烈日擋不住我們求知、探索的欲望。通過我們不懈的努力與切實追求,終于做完了課程設計。
在這次課程兼職設計過程中,我也遇到了很多問題。比如在三角波、方波轉換成正弦波時,我就弄了很長時間,先是遠離不清晰,這直接導致了我無法很順利地連接電路,然后翻閱了大量書籍,查資料,終于在書中查到了有關章節,并參考,并設計出了三角波、方波轉換成正弦波的電路圖。但在設計數字頻率計時就不是那么一帆風順了。我同樣是查閱資料,雖找到了原理框圖,但電路圖卻始終設計不出來,實在沒辦法,只能用數字是中來代替。在此,我深表遺憾!
這次課程設計讓我學到了很多,不僅是鞏固了先前學的模電、數電的理論知識,而且也培養了我的動手能力,更令我的創造性思維得到拓展。希望今后類似這樣課程設計、類似這樣的鍛煉機會能更多些!
編程課程心得體會范文四
隨著我國機械制造業的快速發展,我國正逐步變成“世界制造中心”。為了增強競爭能力,我國制造業正在廣泛的使用先進的數控技術。21世紀機械制造業的競爭,很大程度上是數控技術的競爭。為了適應社會的需求,進一步增強機械專業學生的競爭能力,我們進行了為期2周的CAD/CAM綜合實訓。
這對于我們來說無疑是一件好事。通過兩周的數控綜合實訓,使我們更深一步地認識和掌握CAD/CAM軟件,并深刻體會到了自動編程軟件(mastercam)在數控機床加工中的巨大作用,尤其是銑削部分。通過學習使我們從理論學習轉到了實際生產,同時我們對加工參數的設置有了感性的認識,如下刀位置、下刀方式、進退刀參數以及刀具切削間距的設定等等。
我們加工的零件雖然難度不大,但是十分的耗時間,因為要大量的使用線切割,這就需要我們有足夠的耐心。我們經歷了穿絲、繪圖、加工的整個過程,算是初步掌握了一項技能,確實是受益匪淺。
此次實訓以培養學生的創新精神和實踐能力為目的,以就業為導向,進一步提高學生對于計算機應用和分析問題及解決問題的能力,為以后適用于社會發展的需要。通過兩周實訓讓我們更好的鞏固理解并掌握CAD/CAM的有關知識。達到能熟練、獨立的使用CAD/CAM軟件配合數控機床,進行合理有效的完成產品加工。
經過兩周的實訓,我們認識到了我們專業的先進性,更重要的是為我們以后從事數控行業打下堅實的基礎,學到了知識和技術,更重要的是學會了團隊合作的精神。
編程課程心得體會范文五
經過一個學期對《C++程序設計》的學習,我學習到了基本的理論知識,了解到了C++語言程序設計的思想,這些知識都為我的課程實踐和進一步的學習打下了堅實的基礎。在為期近兩周的C++課程設計中,我體會頗多,學到了很多東西。我加強了對C++程序設計這門課程的認識,并且復習了自己以前學習到的知識。這些都使得我對計算機語言的學習有了更深入的認識!總之,通過這次課程設計,我收獲頗豐,相信會為自己以后的學習和工作帶來很大的好處。像職工信息表這樣的程序設計,經歷了平時在課堂和考試中不會出現的問題和考驗。而這些問題,這并不是我們平時只靠課本,就可以輕易解決的(liuxue86.com)。所以,鍛煉了我們挑戰難題,學會用已掌握的知識去解決具體問題的能力,進一步培養了獨立思考問題和解決問題的能力。特別是學會了在Visual C++中如何調試程序的方法。當然,老師的指導和同學的幫助也是不可忽視的,他們給了我許多提示和幫助,教會了我編譯復雜程序的方法。
在老師和同學的幫助下,通過自己的努力,終于完成了這次職工信息表的簡單課程設計。我經過這段時間的編程,對其中的艱辛,我是深有體會。從剛開始的選擇程序、理解程序到后來的調試程序以及改進程序這個過程中,我遇到了各種各樣的困難和挫折。但是我堅定信念,對自己充滿了信心,想盡一切辦法克服重重困難。
通過課程設計的訓練,我進一步學習和掌握了對程序的設計和編寫,從中體會到了面向對象程序設計的方便和巧妙。懂得了在進行編寫一個程序之前,要有明確的目標和整體的設計思想。另外某些具體的細節內容也是相當的重要。這些寶貴的編程思想和從中摸索到的經驗都是在編程的過程中獲得的寶貴財富。這些經驗對我以后的編程會有很大的幫助的,我要好好利用。
雖然這次課程設計是在參考程序的基礎之上進行的,但是我覺得對自己是一個挑戰和鍛煉。我很欣慰自己能在程序中加入自己的想法和有關程序內容,也就是對它的程序改進了一番改進,并有創新。但是我感覺自己的創新還不夠典型,總之還不是很滿意。另外由于時間的緊迫和對知識的了解不夠廣泛,造成了系統中還存在許多不足,功能上還不夠完善。以后我會繼續努力,大膽創新,爭取能編寫出透射著自己思想的程序。這次課程設計讓我充分認識到了自己的不足,認識到了動手能力的重要性。我會在以后的學習中更加努力鍛煉自己,提高自己,讓自己寫出更好更完善的程序,為以后的編程打好基礎!
總而言之,這次C++程序設計實踐讓我收獲很大。
第五篇:福建省中考作文題解及示例(小編推薦)
福建省中考作文題解及范文示例
福建省武平二中石文美
[試 題]請把下邊作文的副標題填寫完整,然后寫一篇記敘文,字數600左右(40分)。
題目:樂在其中
——記一堂________課
[題 解]
這是一篇以記事為主的命題記敘文,與一般命題記敘文所不同的是,它還加了個要作文
者自己填部分文字的副標題,顯示了所記的具體內容。由于填的詞不同,也就限制規定了文
章的選材范圍。
從思維的順方向考慮,這堂課可在學科課中去選定,即“實”化“一堂”,把“一堂”
當成一節,這樣,便限定了活動范圍須在課堂。填的科目不同,所寫內容自然不同,如可選
語文、政治、化學、數學等等,這是最一般的選法。題目的好處也就在這里,它緊貼學生生
活,符合學生實際。因為學生除假期外每天都要上課,每天都在上課,當有最豐富的材料可
供自己選擇、挖掘;每個人都有話可說,有言可寫。
若能從思維的各方位著手,很可以把這篇文章寫得新人耳目。這新,體現在材料上(因
為這篇作文的主題已定),即“虛”化“一堂”,把一堂當成一個階段。這就從時間上、空間
上拓展,擴大了外延,如一堂實踐課、一堂勞動課、一堂教育課等。單是寫成后者,就已經
有不少材料可選,對象也就不會僅限于班上的師生了,人物可以是社會上的某個單位、某種
職業的人,或者是家庭成員,等等;這背景也就從校內轉到校外,可一改單調的場景,增加
新的色彩,豐富文章的內容,使人一看此文就有新鮮感,從而一下扣住評卷者的心弦,為拿
高分打下良好的基礎。
最后要提的也是最重要的是,不管選什么材料,都得緊扣一個中心。如寫這篇文章,它的中心已經確定,即題目“樂在其中”,不管是有趣的還是難忘的或有意義的課,寫作始終
都要緊扣一個“樂”字,這個“樂”不是外加的,而是在上課的過程中反復多次地體現的,這樣才算緊扣了文題,否則就是離題了。
從上可知,寫好命題作文要做的第一件事也是關鍵的一步是:審好題目。這個題目,不
要僅僅理解為只是題目,它應包含要求、提示、說明在內的所有文字。比如,就上述題目,可知,它已給了如下內容:①作文題目,②作文中心,③選材范圍,④寫作體裁,⑤字數要
求。考生要做的工作有:①將作文副標題填寫完整,②寫一篇作文。經過分析,已知未知全
部明確了,目的任務也清楚了,這樣寫出來的作文就不會離譜了。
〔范文示例〕
樂在其中
—一記一堂化學課
福建一考生
讓我最難忘的是一堂化學課。
那天,教室里靜悄悄的,同學們都睜著一雙好奇的大眼睛等待著化學老師的到來。化學是初三的時候才開的,以前,同學們從未接觸過化學。今天,這第一堂化學課會是什么樣的情形呢?每個人的臉上都呈現出按捺不住的激動。
化學老師終于來了,他手里提著一個木籃子,里邊裝著好些我們叫不出名的化學用具。
“好,同學們,我們現在開始上第一堂化學課。”化學老師用渾厚的男中音說,“下面,請大
家認真看我手中的這支試管,里面裝著什么?”我們一起向他的手中望去。哦,他手里的確
有一支試管,可是里邊除了裝著一半的透明液體外,什么也沒有了。于是同學們不約而同地說:“里面裝著水!”“嗬嗬??是‘水’,是‘水’。”化學老師笑著說,“好,大家再認真看,現在,我的‘水’要變成牛奶了!”說著,他往試管中加了另一種透明液體。啊,頓時,那管中的“水”轉眼變成乳白色,就像我們平常喝的牛奶。“太有趣了!”同學們都鼓起掌來,有些同學大聲地問老師這是怎么回事,老師只是笑著說,瓶中的不是水,而是一種溶液,至于溶液為什么會變白,以后學了化學就知道了。
“好,接下來我們再做一個試驗。我這兒有四個瓶子,至于里面裝著什么暫且不告訴你們。現在,你們認真看我做些什么。”說完,化學老師迅速用一根手指依次沾著瓶中的液體往舌尖上抹了一下。“你們按著我的樣子做。”說完,他把四個瓶子放在每一組的第一張桌子上。同學們認為是什么好吃的東西,都爭先恐后地用手指沾著液體往嘴里送。可一會兒,同學們都伸著舌頭連說不好吃,那狼狽樣逗得化學老師哈哈大笑起來,他說:“我知道你們不認真,告訴你們,我沾液體的是這個手指。”說著,他伸出食指,“而嘗的卻是這個。”他又伸出了中指。啊,原來是這樣!同學們想到自己被騙吃蓖麻油,也忍不住笑了起來??多有趣而又難忘的一堂化學課啊!
[評 析]
這是一篇較成功的作文,文章緊扣中心,記敘具體清楚,又切合寫作要求。文章開篇引題,獨句成段,簡潔、明了、醒目。第二段簡單介紹“樂”前環境,交代化學課在初中的位置。
第三、四段具體敘寫了化學課上的兩個實驗,化學老師有言有行,有聲有色,引起了學生的濃厚興趣,帶來了陣陣笑聲,“樂”在其中得到了較好的體現。這兩段記敘詳細充分,語言生動。
第五段呼應篇首,一句結尾,干脆利落。
文章內容具體,條理清楚,層次分明,結構完整。尤為可佳的是,本文中心明確,切合題意、文章緊扣“樂”字,寫“樂”前、“樂”中、“樂”后,以“樂中”為主體,重點突出;寫師樂、生樂,有化學老師“嗬嗬”地笑、“同學們都鼓起掌來”、“老師只是笑著說”、“逗得化學老師哈哈大笑起來”、“同學們??也忍不住笑了起來”??“樂”字貫串了課的始終,同學們在接受知識的同時,也得到了愉悅身心的美感,真是“樂在其中”。
應該說,這篇文章借用了很多人都熟知的故事(指文中第二個實驗),但由于編織巧妙,整篇文章自然融洽,渾然一體。由此也可知,多看多讀多思,對提高作文是大有益處的。
文章也有不足之處:如對同學的描寫在文中的篇幅就不太多;文章照應也尚存漏洞,如“同學們想到自己被騙吃蓖麻油”,前文沒有點明此油,這里出現就顯得唐突。等等。但短時間內要完成此文,難免有疏漏之處,況且,瑕不掩瑜。
注:本文1994年12月發表在《作文成功之路》‘94增刊。