久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

[推薦]加工中心編程技巧小結(jié)

時(shí)間:2019-05-12 03:57:17下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《[推薦]加工中心編程技巧小結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《[推薦]加工中心編程技巧小結(jié)》。

第一篇:[推薦]加工中心編程技巧小結(jié)

[推薦]加工中心編程技巧小結(jié)

一般編程技巧

cnc加工中心中幾組常用指令的區(qū)別及編程技巧

隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)產(chǎn)品的性能和質(zhì)量要求越來(lái)越高,從而使數(shù)控機(jī)床

應(yīng)

用已得到一定程度的普及,而高性能高效率的加工中心也逐漸成為社會(huì)所需。通過(guò)幾年的加

中心實(shí)際應(yīng)用和教學(xué)實(shí)踐及摸索,筆者將自己的體會(huì)和經(jīng)驗(yàn)總結(jié)出來(lái),希望對(duì)廣大讀者有所

啟 迪。1. 暫停指令

G04X(U)_/P_ 是指刀具暫停時(shí)間(進(jìn)給停止,主軸不停止),地址P或X后的數(shù)值是暫

停時(shí)

間。X后面的數(shù)值要帶小數(shù)點(diǎn),否則以此數(shù)值的千分之一計(jì)算,以秒(s)為單位,P后面數(shù)

不能帶小數(shù)點(diǎn)(即整數(shù)表示),以毫秒(ms)為單位。例如,G04 X2.0;或G04 X2000;

暫停2秒

G04 P2000;但在某些孔系加工指令中(如G82、G88及G89),為了保證孔底的精糙度,當(dāng)?shù)毒呒庸ぶ?/p>

孔底

時(shí)需有暫停時(shí)間,此時(shí)只能用地址P表示,若用地址X表示,則控制系統(tǒng)認(rèn)為X是X軸坐標(biāo)

值進(jìn)行 執(zhí)行。

例如,G82X100.0Y100.0Z-20.0R5.0F200P2000;鉆孔(100.0,100.0)至孔底暫停2秒 G82X100.0Y100.0Z-20.0R5.0F200X2.0;

鉆孔(2.0,100.0)至孔底不會(huì)暫停。

2. M00、M01、M02和M30的區(qū)別與聯(lián)系

M00為程序無(wú)條件暫停指令。程序執(zhí)行到此進(jìn)給停止,主軸停轉(zhuǎn)。重新啟動(dòng)程序,必須先回? 絁OG狀態(tài)下,按下CW(主軸正轉(zhuǎn))啟動(dòng)主軸,接著返回AUTO狀態(tài)下,按下START鍵才能

啟動(dòng)程序。

M01為程序選擇性暫停指令。程序執(zhí)行前必須打開(kāi)控制面板上OP STOP鍵才能執(zhí)行,執(zhí)行

后的

效果與M00相同,要重新啟動(dòng)程序同上。M00和M01常常用于加工中途工件尺寸的檢驗(yàn)或排屑。M02為主程序結(jié)束指令。執(zhí)行到此指令,進(jìn)給停止,主軸停止,冷卻液關(guān)閉。但程序光標(biāo)停

在 程序末尾。

M30為主程序結(jié)束指令。功能同M02,不同之處是,光標(biāo)返回程序頭位置,不管M30后是否

還有 其他程序段。3. 地址D、H的意義相同

刀具補(bǔ)償參數(shù)D、H具有相同的功能,可以任意互換,它們都表示數(shù)控系統(tǒng)中補(bǔ)償寄存器的地

址名稱,但具體補(bǔ)償值是多少,關(guān)鍵是由它們后面的補(bǔ)償號(hào)地址來(lái)決定。不過(guò)在加工中心

中,為了防止出錯(cuò),一般人為規(guī)定H為刀具長(zhǎng)度補(bǔ)償?shù)刂?,補(bǔ)償號(hào)從1~20號(hào),D為刀具半徑補(bǔ)

償?shù)?/p>

址,補(bǔ)償號(hào)從21號(hào)開(kāi)始(20把刀的刀庫(kù))。

例如,G00G43H1Z100.0;

G01G41D21X20.0Y35.0F200;

4. 鏡像指令

鏡像加工指令M21、M22、M23。當(dāng)只對(duì)X軸或Y軸進(jìn)行鏡像時(shí),切削時(shí)的走刀順序(順銑與

逆銑),刀補(bǔ)方向,圓弧插補(bǔ)轉(zhuǎn)向都會(huì)與實(shí)際程序相反,如圖1所示。當(dāng)同時(shí)對(duì)X軸和Y軸進(jìn)行

鏡像

時(shí),走刀順序,刀補(bǔ)方向,圓弧插補(bǔ)轉(zhuǎn)向均不變。

注意:使用鏡像指令后必須用M23進(jìn)行取消,以免影響后面的程序。在G90模式下,使用鏡

或取消指令,都要回到工件坐標(biāo)系原點(diǎn)才能使用。否則,數(shù)控系統(tǒng)無(wú)法計(jì)算后面的運(yùn)動(dòng)軌

跡,會(huì)出現(xiàn)亂走刀現(xiàn)象。這時(shí)必須實(shí)行手動(dòng)原點(diǎn)復(fù)歸操作予以解決。主軸轉(zhuǎn)向不隨著鏡像指令變

化。

圖1 鏡像時(shí)刀補(bǔ)、順逆變化

5. 圓弧插補(bǔ)指令

G02為順時(shí)針插補(bǔ),G03為逆時(shí)針插補(bǔ),在XY平面中,格式如下:G02/G03X_Y_I_K_F_或

G02/G 03 X_Y_R_F_,其中X、Y為圓弧終點(diǎn)坐標(biāo),I、J為圓弧起點(diǎn)到圓心在X、Y軸上的增量值,R為圓

弧半徑,F(xiàn)為進(jìn)給量。在圓弧切削時(shí)注意,q≤180°,R為正值;q>180°,R為負(fù)值;I、K的指定也可用R指定,當(dāng)

兩者同時(shí)被指定時(shí),R指令優(yōu)先,I、K無(wú)效;R不能做整圓切削,整圓切削只能用I、J、K

編程,因?yàn)榻?jīng)過(guò)同一點(diǎn),半徑相同的圓有無(wú)數(shù)個(gè),如圖2所示。

圖2 經(jīng)過(guò)同一點(diǎn)的圓

當(dāng)有I、K為零時(shí),就可以省略;無(wú)論G90還是G91方式,I、J、K都按相對(duì)坐標(biāo)編程;圓

弧插補(bǔ)

時(shí),不能用刀補(bǔ)指令G41/G42。6. G92與G54~G59之間的優(yōu)缺點(diǎn)

G54~G59是在加工前設(shè)定好的坐標(biāo)系,而G92是在程序中設(shè)定的坐標(biāo)系,用了G54~G59就

沒(méi)有

必要再使用G92,否則G54~G59會(huì)被替換,應(yīng)當(dāng)避免,如表1所示。

表1 G92與工作坐標(biāo)系的區(qū)別

注意:(1)一旦使用了G92設(shè)定坐標(biāo)系,再使用G54~G59不起任何作用,除非斷電重新啟

動(dòng)

系統(tǒng),或接著用G92設(shè)定所需新的工件坐標(biāo)系。(2)使用G92的程序結(jié)束后,若機(jī)床沒(méi)有

回? 紾92設(shè)定的原點(diǎn),就再次啟動(dòng)此程序,機(jī)床當(dāng)前所在位置就成為新的工件坐標(biāo)原點(diǎn),易發(fā)

生事

故。所以,希望廣大讀者慎用。

7. 編制換刀子程序。

在加工中心上,換刀是不可避免的。但機(jī)床出廠時(shí)都有一個(gè)固定的換刀點(diǎn),不在換刀位置,便不能夠換刀,而且換刀前,刀補(bǔ)和循環(huán)都必須取消掉,主軸停止,冷卻液關(guān)閉。條件繁多,如果每次手動(dòng)換刀前,都要保證這些條件,不但易出錯(cuò)而且效率低,因此我們可以編制一個(gè)

刀程序保存諳低襯詿婺冢諢壞妒?,在MDI狀態(tài)下用M98調(diào)用就可以一次性完成換刀動(dòng)

作。

以PMC-10V20加工中心為例,程序如下:

O2002;

(程序名)G80G40G49;(取消固定循環(huán)、刀補(bǔ))

M05;

(主軸停止)M09;

(冷卻液關(guān)閉)G91G30Z0;

(Z軸回到第二原點(diǎn),即換刀點(diǎn))

M06;

(換刀)

M99;

(子程序結(jié)束)在需要換刀的時(shí)候,只需在MDI狀態(tài)下,鍵入“T5M98P2002”,即可換上所需刀具T5,從

而避

免了許多不必要的失誤。廣大讀者可根據(jù)自己機(jī)床的特點(diǎn),編制相應(yīng)的換刀子程序。

8.其他

程序段順序號(hào),用地址N表示。一般數(shù)控裝置本身存儲(chǔ)器空間有限(64K),為了節(jié)省存儲(chǔ)

間,程序段順序號(hào)都省略不要。N只表示程序段標(biāo)號(hào),可以方便查找編輯程序,對(duì)加工過(guò)程

起任何作用,順序號(hào)可以遞增也可遞減,也不要求數(shù)值有連續(xù)性。但在使用某些循環(huán)指令,跳

轉(zhuǎn)指令,調(diào)用子程序及鏡像指令時(shí)不可以省略。

9.同一條程序段中,相同指令(相同地址符)或同一組指令,后出現(xiàn)的起作用。

例如,換刀程序,T2M06T3;換上的是T3而不是T2;G01G00X50.0Y30.0F200;執(zhí)行的是G00(雖有F值,但也不執(zhí)行G01)。不是同一組的指令代碼,在同一程序段中互換先后順序執(zhí)行效果相同。

G90G54G00X0Y0Z100.0;G00G90G54X0Y0Z100.0;以上各項(xiàng)均在PMC-10V20(FANUC SYSTEM)加工中心上運(yùn)行通過(guò)。在實(shí)際應(yīng)用中,只有深

刻理

解各種指令的用法和編程規(guī)律,

第二篇:加工中心小結(jié)

數(shù)控加工中心工藝及軟硬件小結(jié)

數(shù)控加工中心使用已近三個(gè)月,現(xiàn)對(duì)其工藝性及所需工裝、工具、軟件作以下小結(jié)。

一、截止目前為止數(shù)控加工中心主要進(jìn)行的零部件工序如下:

(1).上下模座擴(kuò)導(dǎo)套孔,襯套孔及沉孔,其余各孔點(diǎn)中心孔。(2).陰模,脫料板,下墊板槽形穿絲孔,其余各孔點(diǎn)中心孔。上墊板螺紋孔過(guò)孔,其余孔點(diǎn)中心孔。

(3).聯(lián)軸器擴(kuò)孔。(4).鉆模板鉆套孔成活。

(5).其它如繞線模、鉆模板及一些工裝異形腔及外形。(6).在線切割無(wú)空閑時(shí)代替線切割進(jìn)行某些型腔加工。以上為近期數(shù)控加工中心主要進(jìn)行的工序。由于加工中心為精密設(shè)備,機(jī)床剛性較差,故無(wú)法進(jìn)行粗加工及重加工。同時(shí)由于分廠產(chǎn)品不系統(tǒng),無(wú)法形成小批量及成大批量的精加工,導(dǎo)致在生產(chǎn)過(guò)程中必須對(duì)每個(gè)零件進(jìn)行單獨(dú)的編程,裝夾及找正,這無(wú)形中就造成加工中心效率降低,無(wú)法實(shí)現(xiàn)最初提高生產(chǎn)效率的目的。對(duì)于以上零部件而言,在加工中心上進(jìn)行的工序都是需要保證各種形位公差,對(duì)此加工中心可以達(dá)到預(yù)期的目的,另由于加床本身在使用過(guò)程中自身精度有所降低,偶爾會(huì)出現(xiàn)形位公差不能達(dá)到要求的現(xiàn)象。

二、加工中心所需工裝及工具在使用發(fā)現(xiàn)缺少以下所列:(1).高精度機(jī)加虎鉗配置兩臺(tái)。(2).BT50-C32強(qiáng)力刀柄增加三把。

(3).BT50-ER32、BT50-ER40刀柄各兩把及相對(duì)應(yīng)ER32.Φ4-Φ 20、ER40Φ6-Φ25彈簧夾頭各兩把。

(4).ER25-200mm延長(zhǎng)桿一把。(5).S2 T系列扳手及螺絲適當(dāng)配置(6).Φ16-R0.8可轉(zhuǎn)位立銑刀一把,各型號(hào)鑄鋼刀兩把及常用白鋼立銑刀。

(7).0-150mm帶刀口內(nèi)測(cè)量爪及深度尺表盤卡尺。(8).24-26梅花扳手。(9).18-35杠桿百分表。

(10).Φ3加長(zhǎng)中心鉆,D20合金銑刀。(11)三角形墊鐵。

以上為目前所需工裝、刀具、量具及工具。針對(duì)目前加工中心效率低下,發(fā)現(xiàn)有以前問(wèn)題:一、二、三名操作者識(shí)圖能力相對(duì)較弱,對(duì)本車間產(chǎn)品理解不夠,該方面需加強(qiáng)。

除金星星外其余兩人對(duì)編程軟件掌握不熟練,另外操作者對(duì)編程時(shí)間不能做出調(diào)整,使機(jī)床經(jīng)常處于閑置狀態(tài)。

由于對(duì)產(chǎn)品不了解,操作者在加工過(guò)程中經(jīng)常會(huì)出現(xiàn)對(duì)某個(gè)工序拿捏不準(zhǔn),猶豫不決。

鑒于機(jī)床本身的條件,建議以后盡可能進(jìn)行一次裝夾、高精度、連續(xù)多工序加工。另外不得進(jìn)行粗加工,必須在小余量的情況在加工中心上進(jìn)行。

三、四、

第三篇:加工中心操作與編程考卷

加工中心操作與編程考卷

姓名:分?jǐn)?shù):

是非題

1(×)當(dāng)數(shù)控加工程序編制完成后即可進(jìn)行正式加工。

2(×)數(shù)控機(jī)床是在普通機(jī)床的基礎(chǔ)上將普通電氣裝置更換成CNC 控制裝置。

3(√)圓弧插補(bǔ)中,對(duì)于整圓,其起點(diǎn)和終點(diǎn)相重合,用R 編程無(wú)法定義,所以只能用圓心坐標(biāo)編程。

4(√)插補(bǔ)運(yùn)動(dòng)的實(shí)際插補(bǔ)軌跡始終不可能與理想軌跡完全相同。

5(×)數(shù)控機(jī)床編程有絕對(duì)值和增量值編程,使用時(shí)不能將它們放在同一程序段中。

6(√)G 代碼可以分為模態(tài)G 代碼和非模態(tài)G 代碼。

7(×)G00 G01 指令都能使機(jī)床坐標(biāo)軸準(zhǔn)確到位,因此它們都是插補(bǔ)指令。8(√)圓弧插補(bǔ)用半徑編程時(shí),當(dāng)圓弧所對(duì)應(yīng)的圓心角大于180°時(shí)半徑取負(fù)值。

9(×)不同的數(shù)控機(jī)床可能選用不同的數(shù)控系統(tǒng),但數(shù)控加工程序指令都是相同的。

10(×)數(shù)控機(jī)床按控制系統(tǒng)的特點(diǎn)可分為開(kāi)環(huán)、閉環(huán)和半閉環(huán)系統(tǒng)。11(√)在開(kāi)環(huán)和半閉環(huán)數(shù)控機(jī)床上,定位精度主要取決于進(jìn)給絲杠的精度。12(×)點(diǎn)位控制系統(tǒng)不僅要控制從一點(diǎn)到另一點(diǎn)的準(zhǔn)確定位,還要控制從一點(diǎn)到另一點(diǎn)的路徑。

13(√)常用的位移執(zhí)行機(jī)構(gòu)有步進(jìn)電機(jī)、直流伺服電機(jī)和交流伺服電機(jī)。14(√)通常在命名或編程時(shí),不論何種機(jī)床,都一律假定工件靜止刀具移動(dòng)。

15(×)數(shù)控機(jī)床適用于單品種,大批量的生產(chǎn)。

16(×)一個(gè)主程序中只能有一個(gè)子程序。

18(√)程序段的順序號(hào),根據(jù)數(shù)控系統(tǒng)的不同,在某些系統(tǒng)中可以省略的。19(×)絕對(duì)編程和增量編程不能在同一程序中混合使用。

20(×)數(shù)控機(jī)床在輸入程序時(shí),不論何種系統(tǒng)座標(biāo)值不論是整數(shù)和小數(shù)都不必加入小數(shù)點(diǎn)。

21(√)RS232 主要作用是用于程序的自動(dòng)輸入。

22(√)非模態(tài)指令只能在本程序段內(nèi)有效。

第四篇:編程小結(jié)

編程小結(jié)

(一)一.累加:加數(shù)1+加數(shù)2+加數(shù)3+??+加數(shù)n(n個(gè)加數(shù)相加)假設(shè)我們用i表示我們的加數(shù)數(shù)目,例如:當(dāng)i=9時(shí),就表示加數(shù)9 模版:int i,sum=0;(注意:如果是分?jǐn)?shù)或者小數(shù)sum就是float類型)

for(i=1;i<=n;i++)(注意:循環(huán)變量的初值和遞變規(guī)律,也有

可能是i--,或者i+=2等等){通項(xiàng)a;(通項(xiàng):用一個(gè)通用的式子表示所有的加數(shù))sum+=a;} printf(“%d”,sum);(注意:如果是float類型就是%f)

1、求1+2+3??+100的和,則通項(xiàng)a就是i。

分析:因?yàn)閍就是i的值,所以這里不需要通項(xiàng)這一行了,因此整個(gè)大括號(hào)中間就只有一句話,所以大括號(hào)可以省略。整理之后就是: int i,sum=0;for(i=1;i<=100;i++)sum+=i;printf(“%d”,sum);

2、求2+4+6??+100的和。

分析:因?yàn)閍就是i的值,所以這里不需要通項(xiàng)這一行了,因此整個(gè)大括號(hào)中間就只有一句話,所以大括號(hào)可以省略,再分析,再分析我們發(fā)現(xiàn)每個(gè)加數(shù)都是偶數(shù),那么i的變化就是i+=2,并且i是從2開(kāi)始變化,那么在賦值的時(shí)候就應(yīng)該是i=2。整理之后就是: int i,sum=0;for(i=2;i<=100;i+=2)sum+=i;printf(“%d”,sum);

3、求1+3+5??+99的和。

分析:因?yàn)閍就是i的值,所以這里不需要通項(xiàng)這一行了,因此整個(gè)大括號(hào)中間就只有一句話,所以大括號(hào)可以省略,再分析,再分析我們發(fā)現(xiàn)每個(gè)加數(shù)都是奇數(shù),那么i的變化就是i+=2。整理之后就是: int i,sum=0;for(i=1;i<=100;i+=2)sum+=i;printf(“%d”,sum);

4、求1+5+9+13+17+??的前100項(xiàng)的和,則通項(xiàng)為j+4,則程序?yàn)椋?int i,sum=0,j=1;for(i=1;i<=100;i++){ sum+=j;j=j+4; } printf(“%d”,sum);因?yàn)榧訑?shù)的第一項(xiàng)是1,所以賦初值的時(shí)候j=1,然后加數(shù)進(jìn)行變化,變成5加到sum里面,所以這里要將通項(xiàng)和求和這兩句話互換位置。

5、求1+4+9+16+??的前100項(xiàng)的和

分析可知:每個(gè)加數(shù)就是對(duì)應(yīng)的加數(shù)數(shù)目的平方,則通項(xiàng)為i*i,則程序?yàn)椋?int i,sum=0;for(i=1;i<=100;i++)sum+= i*i;printf(“%d”,sum);

6、求1+(1+2)+(1+2+3)+(1+2+3+4)+??的前100項(xiàng)的和。

分析可知每一個(gè)加數(shù)本身又是一個(gè)累加的式子,進(jìn)一步觀察可以發(fā)現(xiàn),每個(gè)累加的式子都是加到這個(gè)加數(shù)所在的加數(shù)數(shù)目,即第35個(gè)加數(shù)就是1+2+3??+35,并且是在前面一個(gè)加數(shù)的基礎(chǔ)上加上這個(gè)加數(shù)所在的加數(shù)數(shù)目,也就是說(shuō)第36個(gè)加數(shù)就是在前一個(gè)加數(shù)的基礎(chǔ)上加上36,即:1+2+3??+35+36。假設(shè)第k個(gè)加數(shù)是j,那么第k+1個(gè)加數(shù)就可以表示為j+(k+1),然后第k+2個(gè)加數(shù)就是j+(k+1)+(k+2)??那么我們的通項(xiàng)就可以表示為a=a+i,則程序?yàn)椋?int i,sum=0, a=0;for(i=1;i<=100;i++){ a+=i;sum+=a;} printf(“%d”,sum);

7、求1+1+2+3+5+8+13+21+??的前100項(xiàng)的和。

分析可知從第三個(gè)加數(shù)開(kāi)始,每一個(gè)加數(shù)是其前兩個(gè)加數(shù)之和,假設(shè)第k個(gè)加數(shù)是m,第k+1個(gè)加數(shù)是n,然后第k+2個(gè)加數(shù)就是m+n,那么我們的通項(xiàng)就可以表示為a=m+n,但是要注意每次加數(shù)所對(duì)應(yīng)的m和n不一樣,所以我們要在求出每個(gè)加數(shù)之后,找出其對(duì)應(yīng)的m和n;再分析我們可以發(fā)現(xiàn)當(dāng)前的n是下一次的m,當(dāng)前的加數(shù)a是下一次的n,假設(shè)接著上面的推導(dǎo),那么第k+3個(gè)加數(shù)就是n+(m+n),對(duì)應(yīng)我們的通項(xiàng)a=m+n,理解前面一句話。則程序?yàn)椋?int i,sum=0, m=1,n=1,a;for(i=3;i<=100;i++){ a=m+n;sum+=a;m=n;n=a;} printf(“%d”,sum);

8、求1+1/2+1/3+??+1/100 分析可知每一個(gè)加數(shù)就是我們的加數(shù)數(shù)目的倒數(shù),則通項(xiàng)a就是1/i,我們說(shuō)循環(huán)變量i一般定義為整型,那么1/i的結(jié)果就是整型,這樣的話小數(shù)點(diǎn)后面的就會(huì)被省略,所以正確的應(yīng)該寫為a=1.0/i,則程序?yàn)椋?/p>

int i;float sum=0;for(i=1;i<=100;i++){a=1.0/i;sum+=a;} printf(“%f”,sum);

9、求1+1/2+2/3+3/5+5/8+??的前100項(xiàng)的和。

分析可從第三個(gè)加數(shù)開(kāi)始觀察,每一個(gè)加數(shù)的分母是其前一個(gè)加數(shù)的分子和分母之和,每一個(gè)加數(shù)的分子是其前一個(gè)加數(shù)的分母??梢詫⒌谝粋€(gè)加數(shù)看成1/1,那么第二個(gè)加數(shù)也符合我們的規(guī)律,只有第一個(gè)不符合,那么我們可以先將第一個(gè)加數(shù)加到sum,然后再變下一個(gè)加數(shù),但是要注意每次加數(shù)所對(duì)應(yīng)的分子和分母不一樣,所以我們要在求出每個(gè)加數(shù)之后,找出下一個(gè)加數(shù)所對(duì)應(yīng)的分子和分母。設(shè)通項(xiàng)表示為a=m/n, 那么下一個(gè)加數(shù)是n/(m+n),然后下下一個(gè)加數(shù)就是(m+n)/(m+n+n);再分析我們可以發(fā)現(xiàn)當(dāng)前的分子和分母之和(m+n)是下一次的分母n,當(dāng)前的分母n是下一次的分子m,注意這里在做數(shù)據(jù)交換的時(shí)候需要中間變量,對(duì)應(yīng)我們的通項(xiàng)a=m/n,理解前面一句話。則程序?yàn)椋?int i;float sum=0, m=1,n=1,t;for(i=1;i<=100;i++){ sum+=m/n;t=m+n;m=n;n=t;} printf(“%f”,sum);

二.累乘:乘數(shù)1*乘數(shù)2*乘數(shù)3*??*乘數(shù)n(n個(gè)乘數(shù)相乘)假設(shè)我們用i表示我們的乘數(shù)數(shù)目,例如:當(dāng)i=9時(shí),就表示乘數(shù)9 模版:int i,sum=1;(注意:如果是分?jǐn)?shù)或者小數(shù)sum就是float類型)

for(i=1;i<=n;i++)(注意:循環(huán)變量的初值和遞變規(guī)律,也有

可能是i--,或者i+=2等等){通項(xiàng)a;(通項(xiàng):用一個(gè)通用的式子表示所有的乘數(shù))sum*=a;} printf(“%d”,sum);(注意:如果是float類型就是%f)

1、求1*2*3??*100的積,則通項(xiàng)a就是i。

分析:因?yàn)閍就是i的值,所以這里不需要通項(xiàng)這一行了,因此整個(gè)大括號(hào)中間就只有一句話,所以大括號(hào)可以省略。整理之后就是: int i,sum=1;for(i=1;i<=100;i**)sum*=i;printf(“%d”,sum);

2、求2*4*6??*100的和。分析:因?yàn)閍就是i的值,所以這里不需要通項(xiàng)這一行了,因此整個(gè)大括號(hào)中間就只有一句話,所以大括號(hào)可以省略,再分析,再分析我們發(fā)現(xiàn)每個(gè)乘數(shù)都是偶數(shù),那么i的變化就是i+=2,并且i是從2開(kāi)始變化,那么在賦值的時(shí)候就應(yīng)該是i=2。整理之后就是: int i,sum=1;for(i=2;i<=100;i+=2)sum*=i;printf(“%d”,sum);

3、求1*3*5??*99的和。

分析:因?yàn)閍就是i的值,所以這里不需要通項(xiàng)這一行了,因此整個(gè)大括號(hào)中間就只有一句話,所以大括號(hào)可以省略,再分析,再分析我們發(fā)現(xiàn)每個(gè)乘數(shù)都是奇數(shù),那么i的變化就是i+=2。整理之后就是: int i,sum=1;for(i=1;i<=100;i+=2)sum*=i;printf(“%d”,sum);

4、求1*5*9*13*17*??的前100項(xiàng)的積,則通項(xiàng)為j*4,則程序?yàn)椋?分析:因?yàn)槌藬?shù)的第一項(xiàng)是1,所以賦初值的時(shí)候j=1,然后乘數(shù)進(jìn)行變化,變成5乘到sum里面,所以這里要將通項(xiàng)和求積這兩句話互換位置。

int i,sum=1,j=1;for(i=1;i<=100;i**){ sum*=j;j=j*4; } printf(“%d”,sum);

5、求1*4*9*16*??的前100項(xiàng)的積

分析可知:每個(gè)乘數(shù)就是對(duì)應(yīng)的乘數(shù)數(shù)目的平方,則通項(xiàng)為i*i,則程序?yàn)椋?int i,sum=1;for(i=1;i<=100;i**)sum*= i*i;printf(“%d”,sum);

6、求1*(1*2)*(1*2*3)*(1*2*3*4)*??的前100項(xiàng)的積。分析可知每一個(gè)乘數(shù)本身又是一個(gè)累乘的式子,進(jìn)一步觀察可以發(fā)現(xiàn),每個(gè)累乘的式子都是乘到這個(gè)乘數(shù)所在的乘數(shù)數(shù)目,即第35個(gè)乘數(shù)就是1*2*3??*35,并且是在前面一個(gè)乘數(shù)的基礎(chǔ)上乘上這個(gè)乘數(shù)所在的乘數(shù)數(shù)目,也就是說(shuō)第36個(gè)乘數(shù)就是在前一個(gè)乘數(shù)的基礎(chǔ)上乘上36,即:1*2*3??*35*36。假設(shè)第k個(gè)乘數(shù)是j,那么第k+1個(gè)乘數(shù)就可以表示為j*(k+1),然后第k+2個(gè)乘數(shù)就是j*(k+1)*(k+2)??那么我們的通項(xiàng)就可以表示為a=a*i,則程序?yàn)椋?int i,sum=1, a=0;for(i=1;i<=100;i**){ a*=i;sum*=a;} printf(“%d”,sum);

7、求1*1*2*3*5*8*13*21*??的前100項(xiàng)的積。

分析可知從第三個(gè)乘數(shù)開(kāi)始,每一個(gè)乘數(shù)是其前兩個(gè)乘數(shù)之和,假設(shè)第k個(gè)乘數(shù)是m,第k+1個(gè)乘數(shù)是n,然后第k+2個(gè)乘數(shù)就是m+n,那么我們的通項(xiàng)就可以表示為a=m+n,但是要注意每次乘數(shù)所對(duì)應(yīng)的m和n不一樣,所以我們要在求出每個(gè)乘數(shù)之后,找出其對(duì)應(yīng)的m和n;再分析我們可以發(fā)現(xiàn)當(dāng)前的n是下一次的m,當(dāng)前的乘數(shù)a是下一次的n,假設(shè)接著上面的推導(dǎo),那么第k+3個(gè)乘數(shù)就是n*(m+n),對(duì)應(yīng)我們的通項(xiàng)a=m*n,理解前面一句話。則程序?yàn)椋?int i,sum=1, m=1,n=1,a;for(i=3;i<=100;i**){ a=m+n;sum*=a;m=n;n=a;} printf(“%d”,sum);

8、求1*1/2*1/3*??*1/100 分析可知每一個(gè)乘數(shù)就是我們的乘數(shù)數(shù)目的倒數(shù),則通項(xiàng)a就是1/i,我們說(shuō)循環(huán)變量i一般定義為整型,那么1/i的結(jié)果就是整型,這樣的話小數(shù)點(diǎn)后面的就會(huì)被省略,所以正確的應(yīng)該寫為a=1.0/i,則程序?yàn)椋?/p>

int i;float sum=1;for(i=1;i<=100;i**){a=1.0/i;sum*=a;} printf(“%f”,sum);

9、求1*1/2*2/3*3/5*5/8*??的前100項(xiàng)的積。

分析可從第三個(gè)乘數(shù)開(kāi)始觀察,每一個(gè)乘數(shù)的分母是其前一個(gè)乘數(shù)的分子和分母之和,每一個(gè)乘數(shù)的分子是其前一個(gè)乘數(shù)的分母??梢詫⒌谝粋€(gè)乘數(shù)看成1/1,那么第二個(gè)乘數(shù)也符合我們的規(guī)律,只有第一個(gè)不符合,那么我們可以先將第一個(gè)乘數(shù)乘到sum,然后再變下一個(gè)乘數(shù),但是要注意每次乘數(shù)所對(duì)應(yīng)的分子和分母不一樣,所以我們要在求出每個(gè)乘數(shù)之后,找出下一個(gè)乘數(shù)所對(duì)應(yīng)的分子和分母。設(shè)通項(xiàng)表示為a=m/n, 那么下一個(gè)乘數(shù)是n/(m+n),然后下下一個(gè)乘數(shù)就是(m+n)/(m+n+n);再分析我們可以發(fā)現(xiàn)當(dāng)前的分子和分母之和(m+n)是下一次的分母n,當(dāng)前的分母n是下一次的分子m,注意這里在做數(shù)據(jù)交換的時(shí)候需要中間變量,對(duì)應(yīng)我們的通項(xiàng)a=m/n,理解前面一句話。則程序?yàn)椋?int i;float sum=1, m=1,n=1,t;for(i=1;i<=100;i**){ sum*=m/n;t=m+n;m=n;n=t;} printf(“%f”,sum);

10、求1+(1*2)+(1*2*3)+(1*2*3*4)+??的前100項(xiàng)的和。

分析可知每一個(gè)加數(shù)本身是一個(gè)累乘的式子,進(jìn)一步觀察可以發(fā)現(xiàn),每個(gè)累乘的式子都是乘到這個(gè)乘數(shù)所在的乘數(shù)數(shù)目,即第35個(gè)乘數(shù)就是1*2*3??*35,并且是在前面一個(gè)乘數(shù)的基礎(chǔ)上乘上這個(gè)乘數(shù)所在的乘數(shù)數(shù)目,也就是說(shuō)第36個(gè)乘數(shù)就是在前一個(gè)乘數(shù)的基礎(chǔ)上乘上36,即:1*2*3??*35*36。假設(shè)第k個(gè)乘數(shù)是j,那么第k+1個(gè)乘數(shù)就可以表示為j*(k+1),然后第k+2個(gè)乘數(shù)就是j*(k+1)*(k+2)??那么我們的通項(xiàng)就可以表示為a=a*i,再利用累加的模版,則程序?yàn)椋?/p>

int i,sum=0, a=1;for(i=1;i<=100;i**){ a*=i;sum+=a;} printf(“%d”,sum);

11、求1*(1+2)*(1+2+3)*(1+2+3+4)*??的前100項(xiàng)的積。

分析可知每一個(gè)乘數(shù)本身又是一個(gè)累加的式子,進(jìn)一步觀察可以發(fā)現(xiàn),每個(gè)累加的式子都是加到這個(gè)乘數(shù)所在的乘數(shù)數(shù)目,即第35個(gè)乘數(shù)就是1+2+3??+35,并且是在前面一個(gè)乘數(shù)的基礎(chǔ)上加上這個(gè)乘數(shù)所在的乘數(shù)數(shù)目,也就是說(shuō)第36個(gè)乘數(shù)就是在前一個(gè)乘數(shù)的基礎(chǔ)上加上36,即:1+2+3??+35+36。假設(shè)第k個(gè)乘數(shù)是j,那么第k+1個(gè)乘數(shù)就可以表示為j+(k+1),然后第k+2個(gè)乘數(shù)就是j+(k+1)+(k+2)??那么我們的通項(xiàng)就可以表示為a=a+i, 再利用累乘的模版,則程序?yàn)椋?/p>

int i,sum=1, a=0;for(i=1;i<=100;i**){ a+=i;sum*=a;} printf(“%d”,sum);

三.最大值和最小值:數(shù)字0,數(shù)字1,數(shù)字2,??數(shù)字n-1(一共n個(gè)數(shù)字)假設(shè)我們用i表示我們的數(shù)字所在的位置,并且第一個(gè)位置是0,例如:當(dāng)i=9時(shí),就表示這個(gè)數(shù)字在第10個(gè)位子

模版: int i,max,a[n];(注意:如果是分?jǐn)?shù)或者小數(shù)max和a[n]就是float

類型,注意這里定義的時(shí)候根據(jù)題目所給的具體數(shù)字把n換掉,千萬(wàn)不可以寫a[n]o哦~~~~)

for(i=0;i

了數(shù)字,就在定義的時(shí)候直接賦值,這個(gè)循環(huán)就不需要了;如果要求產(chǎn)生給數(shù)組賦a到b之間的隨機(jī)數(shù),那么就用a[i]= a + rand()%(b-a);這句話代替這句。注意如果是float類型就是%f)max=a[0];for(i=0;i”)max=a[i];} printf(“%d”, max);(注意:如果是float類型就是%f)

1、求20個(gè)數(shù)字的最大值和最小值,要求賦1到100之間的隨機(jī)數(shù),并且輸出它們及其下標(biāo)。

分析:因?yàn)檫@里還要輸出其下標(biāo),所以還有定義一個(gè)row來(lái)存放,并且要對(duì)其賦值為0,因?yàn)槲覀兘omax賦值為a[0],則程序?yàn)椋?/p>

int i,max,min,a[20],row1=0,row2=0;for(i=0;i<20;i++)a[i]= 1+rand()%99;max=a[0];min=a[0];for(i=0;i<20;i++){ if(maxa[i])(這里是找出最小值){ min=a[i];row2=i;} } printf(“max =%d, row=%dn min =%d, row=%dn”, max,row1,min,row2);

2、求4*5矩陣的最大值和最小值,要求賦值隨機(jī)數(shù),并且輸出它們及其下標(biāo)。分析:雖然這是一個(gè)二維的數(shù)組,但是其思路仍然和一維數(shù)組的一樣,區(qū)別只是這里需要用嵌套循環(huán)。要求還要輸出其下標(biāo),二維數(shù)組的下標(biāo)是兩個(gè),所以還要定義一個(gè)row和一個(gè)col來(lái)存放,并且要對(duì)它們賦值為0,因?yàn)槲覀兘omax賦值為a[0] [0],則程序?yàn)椋?/p>

int i,j,max,min,a[4] [5],row1=0,row2=0,col1=0,col2=0;for(i=0;i<4;i++)for(j=0;j<5;j++)a[i] [j]=rand();max=a[0] [0];min=a[0] [0];for(i=0;i<4;i++)for(j=0;j<5;j++){ if(maxa[i] [j])(這里是找出最小值){ min=a[i] [j];row2=i;col2=j;} } printf(“max =%d, row=%d, col=%d n min =%d, row=%d, col=%d n”, max,row1, col1, min,row2, col2);

3、求4*5矩陣的每一行最大值和最小值,要求賦值隨機(jī)數(shù),并且輸出它們及其下標(biāo)。

分析:雖然這是一個(gè)二維的數(shù)組,但是要求的是每一行的最大最小值,我們知道二維數(shù)組的每一行本身就是一個(gè)數(shù)組,那么我們就還需要一個(gè)控制行數(shù)的循環(huán)。要求還要輸出其下標(biāo),二維數(shù)組的下標(biāo)是兩個(gè),每一行的最大最小值其行號(hào)不就是i,所以還要定義一個(gè)存放列號(hào)的col,并且要對(duì)它賦值為0,因?yàn)槲覀兘omax賦值為每一行的第一個(gè)元素,也就是a[i] [0],則程序?yàn)椋?int i,j,max,min,a[4] [5],col1=0,col2=0;for(i=0;i<4;i++)for(j=0;j<5;j++)a[i] [j]=rand();for(i=0;i<4;i++)(這個(gè)循環(huán)是控制行的,里面的循環(huán)體本身就是一個(gè)求

一維數(shù)組的最大最小值的程序)

{max=a[i] [0];min=a[i] [0];for(j=0;j<5;j++){ if(maxa[i] [j])(這里是找出最小值){ min=a[i] [j];col2=j;} } printf(“max =%d, row=%d, col=%d n min =%d, row=%d, col=%d n”,max,i, col1, min,i, col2);}

4、求4*5矩陣的每一列最大值和最小值,要求賦值隨機(jī)數(shù),并且輸出它們及其下標(biāo)。

分析:雖然這是一個(gè)二維的數(shù)組,但是要求的是每一列的最大最小值,二維數(shù)組的每一列可以看成一個(gè)數(shù)組,那么我們就還需要一個(gè)控制列數(shù)的循環(huán)。要求還要輸出其下標(biāo),二維數(shù)組的下標(biāo)是兩個(gè),每一列的最大最小值其列號(hào)不就是j,所以還要定義一個(gè)存放行號(hào)的row,并且要對(duì)它賦值為0,因?yàn)槲覀兘omax賦值為每一列的第一個(gè)元素,也就是a[0] [j],則程序?yàn)椋?int i,j,max,min,a[4] [5],row1=0,row2=0;for(i=0;i<4;i++)for(j=0;j<5;j++)a[i] [j]=rand();for(j=0;j<5;j++)(這個(gè)循環(huán)是控制列的,里面的循環(huán)體本身就是一個(gè)求

一維數(shù)組的最大最小值的程序){max=a[0] [j];min=a[0] [j];for(i=0;i<4;i++){ if(maxa[i] [j])(這里是找出最小值){ min=a[i] [j];row2=i;} } printf(“max =%d, row=%d, col=%d n min =%d, row=%d, col=%d n”,max, row1,j, min, row2,j);}

5、排序(冒泡法)比如說(shuō) 對(duì)于5個(gè)數(shù)字排序,首先要把5個(gè)數(shù)字放到一個(gè)一維的數(shù)組里面去 所以編程的前幾句為:int a[5]

for(i=0;i<5;i++)scanf(“%d”,&a*i+);

那接下來(lái)就是排序了,為了方便理解就將數(shù)組實(shí)際化:比如 a[5]里面放著{7,9,0,12,3}那畫(huà)圖出來(lái)就是

a[5]

a[0]

a[1]

a[2]

a[3]

a[4] ????????????那我們排序的方法是這樣的采用這樣幾步:

1,用a[0]與后面的(a[1]~a[4]里面的每一個(gè)成員比較即是說(shuō):a[0]~a[1]比較

a[0]~a[2]比較 a[0]~a[3]比較 a[0]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[0]小的就與他的位置交換 這部做完之后數(shù)組就應(yīng) 該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4] ???????????2,用a[1]與后面的(a[2]~a[4]里面的每一個(gè)成員比較即是說(shuō): a[1]~a[2]比較

a[1]~a[3]比較 a[1]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[1]小的就與他的位置交換 這部做完之后數(shù) 組該是這個(gè)樣子:這個(gè)時(shí)候的a1不是我們賦初值時(shí)候的a1老就是我們改變后的數(shù)組所以這個(gè)時(shí)候的a1=9哦。

a[0]

a[1]

a[2]

a[3]

a[4] ???????????3,用a[2]與后面的(a[3]~a[4]里面的每一個(gè)成員比較即是說(shuō): a[2]~a[3]比較

a[2]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[2]小的就與他的位置交換 這部做完之后數(shù)組就應(yīng) 該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4] ???????????4,用a[3]與后面的(a[4]~a[4]里面的每一個(gè)成員比較即是說(shuō): a[3]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[2]小的就與他的位置交換 這部做完之后數(shù)組就應(yīng) 該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4] ???????????循環(huán)就是 寫成這個(gè)樣子的哦:

for(i=0;i<4;i++)

for(j=i+1;j<5;j++)if(a[i]

{c=a[i];a[i]=a[j];a[j]=c;}(這個(gè)復(fù)合語(yǔ)句表示交換a[i]與a[j]進(jìn)行交換)你把這個(gè) 循環(huán)好好的分析一下,當(dāng)i=0 j可以?。? 2 3 4)那if是不是就是a0跟a1—a4之間的所有進(jìn)行比較并且交換。其他的以此類推。

最后是不是要對(duì)排好序的數(shù)組進(jìn)行輸出:

for(i=0;i<5;i++)printf(“%d”,a*i+);

6、排序(選擇法)比如說(shuō) 對(duì)于5個(gè)數(shù)字排序,首先要把5個(gè)數(shù)字放到一個(gè)一維的數(shù)組里面去 所以編程的前幾句為:int a[5]

for(i=0;i<5;i++)scanf(“%d”,&a*i+);

那接下來(lái)就是排序了,為了方便理解就將數(shù)組實(shí)際化:比如 a[5]里面放著{7,9,0,12,3}那畫(huà)圖出來(lái)就是

a[5]

a[0]

a[1]

a[2]

a[3]

a[4] ????????????那我們排序的方法是這樣的采用這樣幾步:

1,先把a(bǔ)[0]的下標(biāo)儲(chǔ)存起來(lái),即賦值給k,然后用a[0]與后面的比較

(a[1]~a[4]里面的每一個(gè)成員比較即是說(shuō):a[0]~a[1]比較 a[0]~a[2]比較 a[0]~a[3]比較 a[0]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[0]小的就把他的下標(biāo)賦值給k,最后將a[0]和a[k]的位置交換,這步做完之后數(shù)組就應(yīng)該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4] ???????????2,先把a(bǔ)[1]的下標(biāo)儲(chǔ)存起來(lái),即賦值給k,然后用a[1]與后面的比較

(a[2]~a[4]里面的每一個(gè)成員比較即是說(shuō): a[1]~a[2]比較 a[1]~a[3]比較 a[1]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[1]小的就把他的下標(biāo)賦值給k,最后將a[1]和a[k]的位置交換 這步做完之后數(shù)組就應(yīng)該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4] ???????????3,先把a(bǔ)[2]的下標(biāo)儲(chǔ)存起來(lái),即賦值給k,然后用a[2]與后面的比較

(a[3]~a[4]里面的每一個(gè)成員比較即是說(shuō):a[2]~a[3]比較 a[2]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[2]小的就把他的下標(biāo)賦值給k,最后將a[2]和a[k]的位置交換 這步做完之后數(shù)組就應(yīng)該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4]

???????????4,先把a(bǔ)[3]的下標(biāo)儲(chǔ)存起來(lái),即賦值給k,然后用a[3]與后面的比較(a[4]里面的每一個(gè)成員比較即是說(shuō): a[3]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[3]小的就把他的下標(biāo)賦值給k,最后將a[3]和a[k]的位置交換 這步做完之后數(shù)組就應(yīng)該是這個(gè)樣子:

a[0]

a[1]

a[2]

a[3]

a[4]

???????????循環(huán)就是 寫成這個(gè)樣子的哦:

for(i=0;i<4;i++)

{k=i;for(j=i+1;j<5;j++)

if(a[i]

k=j;if(k!=i)

{c=a[i];a[i]=a[j];a[j]=c;} }(這個(gè)復(fù)合語(yǔ)句表示交換a[i]與a[j]進(jìn)行交換)把這個(gè)循環(huán)好好的分析一下,當(dāng)i=0, j可以取(1 2 3 4)那if是不是就是a0跟a1—a4之間的所有進(jìn)行比較并且交換。其他的以此類推。

最后是不是要對(duì)排好序的數(shù)組進(jìn)行輸出:

for(i=0;i<5;i++)printf(“%d”,a*i+);

四.尋找特殊的數(shù)字或解應(yīng)用題:輸出a到b之間的所有的具有某個(gè)特點(diǎn)的數(shù)字 模版: int n,a,b;(注意:如果是分?jǐn)?shù)或者小數(shù)a和b就是float類型)

scanf(“%d,%d”,&a,&b);(從鍵盤輸入查找的范圍;如果題目已經(jīng)給

了范圍,就在循環(huán)的時(shí)候直接帶值,這句話就不需要了。注意如果是float類型就是%f。注意如果運(yùn)行程序,在輸入數(shù)據(jù)驗(yàn)證的時(shí)候注意格式要匹配)for(n=a;n<=b;n++)(如果題目已經(jīng)給了具體的范圍,那么這里就根

據(jù)題目把a(bǔ)和b換掉){if(條件)(注意:這句話是這類題目的核心,有時(shí)候也許不是一

句話,這句話放在這的意思是判定是否是特殊數(shù)字)printf(“%d”, n);(注意:如果是float類型就是%f)}

1、輸出3到1000之間的所有素?cái)?shù)

分析:在做本題之前,先要搞明白什么是素?cái)?shù),它又是如何判定的。補(bǔ)充:

素?cái)?shù) 又叫質(zhì)數(shù),如果一個(gè)數(shù)只能被1和它本身整除,那么我們就說(shuō)它是素?cái)?shù)。分析:既然一個(gè)素?cái)?shù)只可以被1和它本身整除,那么當(dāng)我們判斷一個(gè)數(shù)n是不是素?cái)?shù)的時(shí)候,就用這個(gè)數(shù)去除2到(n-1),一旦我們發(fā)現(xiàn)可以整除這個(gè)區(qū)間的某一個(gè)數(shù),那么我們就不再去除別的數(shù)了,因?yàn)樵?到(n-1)這個(gè)范圍內(nèi),n可以整除其中的某一個(gè)數(shù),那么就肯定不是素?cái)?shù)。這個(gè)過(guò)程需要一個(gè)循環(huán)和停止循環(huán)的break來(lái)實(shí)現(xiàn)。繼續(xù)分析,當(dāng)我們?cè)?到(n-1)這個(gè)范圍內(nèi)找不到n可以整除的數(shù),那么就說(shuō)明這個(gè)數(shù)是素?cái)?shù),那么我們就判斷上面的循環(huán)時(shí)候做完了,如果中間就跳出循環(huán),則說(shuō)明不是素?cái)?shù),反之,如果做完了,那么就是素?cái)?shù)。P判斷能否整除,就是求余看是否為0,則程序如下:

int n;(n是要判斷的數(shù),具體根據(jù)題意賦值或從鍵盤輸入)for(i=2;i=n)(也可以填i==n,因?yàn)槿绻厦娴难h(huán)做完了,那么循環(huán)變量i=n)printf(“%d is a primenumber!n”,n);else printf(“%d is not a primenumber!n”,n);(這個(gè)if?else結(jié)構(gòu)是判斷

上面的循環(huán)有沒(méi)有做完)本題分析:只要用上面的程序替換掉模版的那個(gè)if就可以了,注意這里不再需要else了,因?yàn)轭}目只要求輸出素?cái)?shù),輸出語(yǔ)句也只需要一句,則程序如下: int n,i;for(n=3;n<=1000;n++){ for(i=2;i=n)printf(“%d is a primenumber!n”,n);}

2、輸出1到100之間的所有同構(gòu)數(shù)

分析:在做本題之前,先要搞明白什么是同構(gòu)數(shù),它又是如何判定的。補(bǔ)充:

同構(gòu)數(shù) 如果一個(gè)數(shù)出現(xiàn)在自己的平方數(shù)的右邊,那么我們就說(shuō)它是同構(gòu)數(shù)。分析:既然一個(gè)同構(gòu)數(shù)會(huì)出現(xiàn)在它自己的平方數(shù)的右邊,那么當(dāng)我們判斷一個(gè)數(shù)n是不是同構(gòu)數(shù)的時(shí)候,先要做的就是求出這個(gè)數(shù)的平方,然后該怎么判斷是不是出現(xiàn)在右邊呢?我們?nèi)擞醒劬Γ梢灾苯涌?,但是電腦不長(zhǎng)眼睛的,它看不到,它只能分析,那么它怎么分析呢?1到100之間的所有數(shù)只有一位或者兩位,那么我們?cè)谌∑椒綌?shù)右邊的時(shí)候,只要取這個(gè)平方數(shù)的最右邊的一位或者兩位,與我們的數(shù)進(jìn)行比較,看是否一樣,如果一樣就是同構(gòu)數(shù),反之就不是。怎么取一個(gè)數(shù)的最右邊一位或者兩位呢?求余??!一個(gè)數(shù)對(duì)10求余就是取它的最右邊一位,也就是個(gè)位;如果對(duì)100求余就是取它的最右邊兩位,也就是十位和個(gè)位。則程序如下:

int n;(n是要判斷的數(shù),具體根據(jù)題意賦值或從鍵盤輸入)if(n*n%10==n|| n*n %100==n)printf(“%d is a isomorphic number!n”,n);本題分析:直接帶模版,則程序如下: int n;for(n=1;n<=100;n++){ if(n*n%10==n|| n*n %100==n)printf(“%d is a isomorphic number!n”,n);}(這里的大括號(hào)實(shí)際是可以去掉的,不去掉也沒(méi)有關(guān)系)

3、輸出1到1000之間的所有回文數(shù)

分析:在做本題之前,先要搞明白什么是回文數(shù),它又是如何判定的。補(bǔ)充:

回文數(shù) 如果一個(gè)數(shù)字正讀和倒讀一樣,那么這個(gè)數(shù)字就是回文數(shù)。例如:98789, 這個(gè)數(shù)字正讀是98789,倒讀也是98789,所以這個(gè)數(shù)字就是回文數(shù)。

分析:既然一個(gè)回文數(shù)正讀和倒讀一樣,也就是它的最高位和最低位一樣,它的次高位和次低位一樣,那么當(dāng)我們判斷一個(gè)數(shù)n是不是回文數(shù)的時(shí)候,先要確定這個(gè)數(shù)有幾位,才可以確定誰(shuí)與誰(shuí)進(jìn)行比較,然后確定這個(gè)數(shù)每一位都是誰(shuí)。1到1000之間的數(shù),除了1000其余最多三位數(shù),顯然1000不是回文數(shù),先不考慮,怎么確定這個(gè)數(shù)是幾位呢?如果它的百位是0,那么肯定不是三位數(shù),如果百位和十位都是0,那么肯定是一位數(shù),我們知道一位數(shù)肯定都是回文數(shù);對(duì)于一個(gè)兩位數(shù),只要判斷它的個(gè)位和十位是不是一樣就可以了,如果一樣,那么肯定是回文數(shù);對(duì)于一個(gè)三位數(shù)只要判斷他的個(gè)位和百位就可以了,如果一樣就是回文數(shù)。求一個(gè)最多是三位數(shù)的每一位,就是將這個(gè)數(shù)對(duì)10求余得到個(gè)位;然后這個(gè)數(shù)除以10,再對(duì)10求余得到十位;最后除以100得到百位。則程序如下: int n;(n是要判斷的數(shù),具體根據(jù)題意賦值或從鍵盤輸入)if(n>0&&n<10)printf(“%d is a huiwen number!n”,n);else if(n/100==0){if(n/10==n%10)printf(“%d is a huiwen number!n”,n);} else if(n/100==n%10)printf(“%d is a huiwen number!n”,n);本題分析:只要用上面的程序替換掉模版的那個(gè)if就可以了,則程序如下: int n;for(n=1;n<=1000;n++){ if(n>0&&n<10)printf(“%d is a huiwen number!n”,n);else if(n/100==0){if(n/10==n%10)printf(“%d is a huiwen number!n”,n);} else if(n/100==n%10)printf(“%d is a huiwen number!n”,n);}

4、輸出1到1000之間的所有完數(shù)

分析:在做本題之前,先要搞明白什么是完數(shù),它又是如何判定的。補(bǔ)充:

再做完數(shù)之前先講怎么求兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)。

分析:假設(shè)求a和b兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù),并且a>b,如果a0&&n<10)printf(“%d is a wanshu!n”,n);else if(n/100==0){if(n/10==n%10)printf(“%d is a wanshu!n”,n);} else if(n/100==n%10)printf(“%d is a wanshu!n”,n);本題分析:只要用上面的程序替換掉模版的那個(gè)if就可以了,則程序如下: int n;for(n=1;n<=1000;n++){ if(n>0&&n<10)printf(“%d is a wanshu!n”,n);else if(n/100==0){if(n/10==n%10)printf(“%d is a wanshu!n”,n);} else if(n/100==n%10)printf(“%d is a wanshu!n”,n);}

5、輸出1到999之間的所有水仙花數(shù)

分析:在做本題之前,先要搞明白什么是水仙花數(shù),它又是如何判定的。補(bǔ)充:

水仙花數(shù) 如果一個(gè)三位數(shù)的各個(gè)位數(shù)字的立方和等于該數(shù)字本身,那么這個(gè)數(shù)就是水仙花數(shù)。例如:153,1*1*1+5*5*5+3*3*3=153,所以這個(gè)數(shù)字就是回文數(shù)。分析:既然一個(gè)水仙花數(shù)的各個(gè)位數(shù)字的立方和等于該數(shù)字本身,那么當(dāng)我們判斷一個(gè)數(shù)n是不是水仙花數(shù)的時(shí)候,先要求出各個(gè)位數(shù)字,然后求其立方和,判斷是不是和該數(shù)本身一樣,如果一樣就是水仙花數(shù),否則就不是。求一個(gè)三位數(shù)的每一位,就是將這個(gè)數(shù)對(duì)10求余得到個(gè)位;然后這個(gè)數(shù)除以10,再對(duì)10求余得到十位;最后除以100得到百位。則程序如下:

int n,a,b,c;(n是要判斷的數(shù),具體根據(jù)題意賦值或從鍵盤輸入)a=n/100;b=n/10%10;c=n%10;if(a*a*a+b*b*b+c*c*c==n)printf(“%d is the shuixianhua number!n”,n);本題分析:只要用上面的程序替換掉模版的那個(gè)if就可以了,則程序如下: int n;for(n=1;n<=1000;n++){ a=n/100;b=n/10%10;c=n%10;if(a*a*a+b*b*b+c*c*c==n)printf(“%d is the shuixianhua number!n”,n);}

6、用一張100的錢換100張零鈔,假設(shè)面額有5元,3元,1/2元三種,問(wèn)有多少種方法?

分析:這是一道解方程組的題,根據(jù)我們的小學(xué)知識(shí)可以列出方程組,其中有三個(gè)未知數(shù),所以應(yīng)該是三層嵌套循環(huán),再分析題目我們知道1/2的張數(shù)只能是偶數(shù)張,則程序?yàn)椋?int i,j,k,n;for(i=0;i<=20;i++)for(j=0;j<=33;j++)for(k=0;k<=100;k++)if(5*i+3*j+k/2==100&&i+j+k==100&&k%2==0){ printf(“%d,%d,%dn”,i,j,k);n++;} printf(“There are %d changes!n”,n);

7、愛(ài)因斯坦階梯問(wèn)題。設(shè)有一階梯,每步跨2階,最后剩1階;每步跨3階,最后剩2階;每步跨5階,最后剩4階;每步跨6階,最后剩5階;每步跨7階,正好到階梯頂。問(wèn)滿足條件的最少階梯數(shù)是多少?

分析:這道題的實(shí)質(zhì)是找滿足上述條件的數(shù),而且要最小的,那么我們就寫一個(gè)循環(huán),循環(huán)變量從最小的數(shù)開(kāi)始遞增,分析題目我們可知從7開(kāi)始遞增即可(如果不從7,從1開(kāi)始也是可以的),一旦滿足上述條件,循環(huán)變量就不需要增加了,輸出循環(huán)變量即可,所以我們選擇while循環(huán)結(jié)構(gòu),當(dāng)不滿足上述條件我們就做循環(huán)變量的遞增,如果滿足就輸出,則程序?yàn)椋?int n=7;while(!(n%2==1&&n%3==2&&n%5==4&&n%6==5&&n%7==0)){ n++;} printf(“%dn”,n);

8、求一句英文所含有的單詞數(shù)。

分析:一句英文里面每個(gè)單詞之間都用空格隔開(kāi),所以我們只要數(shù)空格的個(gè)數(shù)即可,但是注意最后一個(gè)單詞后面是沒(méi)有空格的。一句英文肯定要存放在數(shù)組中,我們選擇簡(jiǎn)單的一維數(shù)組。從字符數(shù)組中的第一個(gè)元素開(kāi)始查看,先查看第一個(gè)元素,如果不是空格,那就證明是第一個(gè)單詞,單詞個(gè)數(shù)加一,然后一直做循環(huán),直到遇到空格,就說(shuō)明這個(gè)單詞結(jié)束了,然后再判斷是不是到數(shù)組的結(jié)尾,如果沒(méi)有就繼續(xù)查找,直到數(shù)組結(jié)束為止,則程序如下: #include #include void main(){char s[100];int i=0,j,num=0;gets(s);j=strlen(s);while(i

}

五.圖案:輸出n行的具有規(guī)律的字符,組成我們所想要的圖案。模版: int i,j,k;for(i=0;i

具體對(duì)待)for(k;;)printf(“%d”,);(注意:如果是char類型就是%c)}

1、輸出下列圖案

* *** *****

printf(“ There are %d words.n”,num);******* ********* ******* ***** *** * 分析:這種圖案一般我們會(huì)將其分為兩部分,從最多一行隔開(kāi),分為上下兩個(gè)部分,先輸出上面的圖案,再輸出下面的。通過(guò)分析我們可以發(fā)現(xiàn)每行既要輸出空格,又要輸出*,所以循環(huán)體里面需要兩個(gè)循環(huán),循環(huán)體里面的循環(huán)變量的控制最好和外層的控制行數(shù)的循環(huán)變量相關(guān)聯(lián)。我們用i控制行數(shù),用j控制每行的空格數(shù),用k控制每行的*數(shù),通過(guò)觀察我們發(fā)現(xiàn)如下規(guī)律: i j k 0 4 1 1 3 3 2 2 5 3 1 7 4 0 9 那么,i+j=4,k均為奇數(shù),再分析發(fā)現(xiàn)k=2i+1,每行輸完還要輸出換行,則程序如下: int i,j,k;for(i=0;i<5;i++){ for(j=0;j<4-i;j++)printf(“ ”);for(k=0;k<2*i+1;k++)printf(“*”);printf(“n”);} for(i=0;i<4;i++){ for(j=0;j

2、輸出下列圖案

A BBB CCCCC DDDDDDD EEEEEEEEE FFFFFFF GGGGG HHH I 分析:這種圖案一般我們會(huì)將其分為兩部分,從最多一行隔開(kāi),分為上下兩個(gè)部分,先輸出上面的圖案,再輸出下面的。通過(guò)分析我們可以發(fā)現(xiàn)每行既要輸出空格,又要輸出字母,所以循環(huán)體里面需要兩個(gè)循環(huán),循環(huán)體里面的循環(huán)變量的控制最好和外層的控制行數(shù)的循環(huán)變量相關(guān)聯(lián)。我們用i控制行數(shù),用j控制每行的空格數(shù),用k控制每行的字母數(shù),通過(guò)觀察我們發(fā)現(xiàn)如下規(guī)律: i j k 0 4 1 1 3 3 2 2 5 3 1 7 4 0 9 那么,i+j=4,k均為奇數(shù),再分析發(fā)現(xiàn)k=2i+1。每行的字母相同但是和上下行的不相同,觀察發(fā)現(xiàn)字母是按照順序遞增的,那么我們就先把字母存放在一個(gè)變量里面,然后在輸出每行所需的字符之后,改變字母。每行輸完還要輸出換行,則程序如下: int i,j,k;char c=’A’;for(i=0;i<5;i++){ for(j=0;j<4-i;j++)printf(“ ”);for(k=0;k<2*i+1;k++)printf(“%c”,c);c++;printf(“n”);} for(i=0;i<4;i++){ for(j=0;j

3、輸出下列圖案 121 12321 1234321 123454321 1234321 12321 121 1 分析:這種圖案一般我們會(huì)將其分為兩部分,從最多一行隔開(kāi),分為上下兩個(gè)部分,先輸出上面的圖案,再輸出下面的。通過(guò)分析我們可以發(fā)現(xiàn)每行既要輸出空格,又要輸出數(shù)字,所以循環(huán)體里面需要兩個(gè)循環(huán),循環(huán)體里面的循環(huán)變量的控制最好和外層的控制行數(shù)的循環(huán)變量相關(guān)聯(lián)。我們用i控制行數(shù),用j控制每行的空格數(shù),用k控制每行的數(shù)字?jǐn)?shù),每行的數(shù)字還不相同,觀察發(fā)現(xiàn)數(shù)字是按照順序遞增遞減的,那么我們輸出數(shù)字的循環(huán)又要分為兩個(gè)循環(huán),繼續(xù)觀察我們發(fā)現(xiàn)每次輸出的數(shù)字和循環(huán)變量k有關(guān),通過(guò)觀察我們發(fā)現(xiàn)如下規(guī)律: i j k 0 4 1 1 3 2 2 2 3 3 1 4 4 0 5 那么,i+j=4,k均為奇數(shù),再分析發(fā)現(xiàn)k的遞增從1開(kāi)始到i+1為止,遞減是從i開(kāi)始到1為止。每行輸完還要輸出換行,則程序如下: int i,j,k;for(i=0;i<5;i++){ for(j=0;j<4-i;j++)printf(“ ”);for(k=1;k<=i+1;k++)printf(“%d”,k);for(k=i;k>0;k--)printf(“%d”,k);printf(“n”);} for(i=0;i<4;i++){ for(j=0;j0;k--)printf(“%d”,k);printf(“n”);}

4、輸出九九乘法表

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 ?? ??

分析:如果用i表示行,j表示列,那么每行輸出i個(gè)式子,分析發(fā)現(xiàn)每個(gè)式子可以用j*i表示。每行輸完還要輸出換行,則程序如下: int i,j;for(i=1;i<10;i++){ for(j=1;j<=i;j++)printf(“%d*%d=%dt”,j,i,j*i);printf(“n”);}

5、輸出楊輝三角的前10行 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 7 21 35 35 21 7 1 8 28 56 70 56 28 8 1 9 36 84 126 126 84 36 9 1 分析:如果用i表示行,j表示列,那么每行輸出i個(gè)數(shù)字,分析發(fā)現(xiàn)除了兩頭的數(shù)字為1以外,其余的每個(gè)數(shù)字每個(gè)數(shù)字等于上一行的左右兩個(gè)數(shù)字之和,所以用二維數(shù)組比較簡(jiǎn)單。每行輸完還要輸出換行,則程序如下: int a[10][10],i,j;for(i=0;i<10;i++){ for(j=0;j<=i;j++){ if(i==j||j==0)a[i][j]=1;else a[i][j]=a[i-1][j]+a[i-1][j-1];printf(“%dt”,a[i][j]);} printf(“n”);}

五.字符串操作:

1.函數(shù)的原型說(shuō)明為int chrn(char *s,char c);,其功能是測(cè)試c在s中出現(xiàn)的次數(shù),編制該函數(shù)并用相應(yīng)的主調(diào)函數(shù)對(duì)其進(jìn)行測(cè)試。#include int chrn(char *s,char c){ int n=0,i;for(i=0;s[i];i++)if(s[i]= =c)n++;return n;} void main(){ int k=0;char a[100],b;gets(a);getchar(b);k=chrn(a,b);printf(“%d”,k);} 2.編寫函數(shù)void fun(char *s),實(shí)現(xiàn)將字符串s逆序存放,例如:“abcd”改為“dcba”,請(qǐng)完成程序,并在主函數(shù)中實(shí)現(xiàn)調(diào)用 #include #include void fun(char *s){ int k,i;char t;k=strlen(s);for(i=0;i #include void mystrcat(char *str1, char *str2){ int i,j;i=strlen(str1);for(j=0;j<=strlen(str2);j++,i++)str1[i]=str2[j];} main(){ int i,j;char a[50],b[50];gets(a);gets(b);mystrcat(a , b);puts(a);} 4.自編函數(shù)實(shí)現(xiàn)比較字符串大小函數(shù)mystrcmp(char *str1,char *str2),要求在主函數(shù)中進(jìn)行驗(yàn)證當(dāng)str1與str2相等時(shí)返回0,當(dāng)str1大于str2時(shí)返回一個(gè)正整數(shù),否則返回一個(gè)負(fù)整數(shù)。#include #include int mystrcmp(char *str1,char*str2){ int i=0;while(*(str1+i)= =*str(str2+i))if(*(str1+i++)= =’

主站蜘蛛池模板: 亚洲乱码尤物193yw最新网站| 高清粉嫩无套内谢国语播放| 丰满熟女高潮毛茸茸欧洲视频| 国产人妻熟女高跟丝袜图片| 亚洲国产日韩欧美综合a| 国产精品乱码久久久久久小说| 色多多性虎精品无码av| 无码精品国产va在线观看| 熟女少妇在线视频播放| 国产精久久一区二区三区| 日本japanese丰满多毛| 日韩高清亚洲日韩精品一区二区| 色妞色视频一区二区三区四区| 色欲av蜜桃一区二区三| 久久视频这里只精品| 国产乱人伦av在线a麻豆| 无码精品不卡一区二区三区| 国产精品久久成人网站| 国产午夜影视大全免费观看| 亚洲国产精品久久亚洲精品| 亚洲中文字幕无码久久2018| 国产精品久久婷婷六月丁香| 无套内射在线无码播放| 国产欧美亚洲精品第1页青草| 影音先锋女人aa鲁色资源| 又嫩又硬又黄又爽的视频| 久久国内精品自在自线| 免费做a爰片久久毛片a片下载| 欧美性猛交久久久乱大交小说| 成人片黄网站色大片免费观看app| 妺妺窝人体色www在线下载| 中文字幕一区二区三区波多野结衣| 精品无码久久久久久午夜| 亚洲国产精品无码久久久| 精品国产自线午夜福利| 日日碰狠狠丁香久燥| 国产欧美久久一区二区三区| 国产在线观看无码免费视频| 无码丰满少妇2在线观看| 色综合伊人色综合网站| 少妇一边呻吟一边说使劲视频|