}
做這題時我也用到了昨天老師教的畫圖方法作了驗算,不過還是要上機求正否,這樣一來可以鍛練一下編寫程序。我們大家都各有各的方法,有些是很長(用Switch語句呢),我也不知道他怎么想的了,不過不同人有不同思想是正確的,編程這玩意沒有完全統一的答案的。那么你們想想你們有什么方法做呢,好吧,就給五分鐘你們做做吧?!昧?,時間到了,下面我再說說我的另一位同學做的方法吧,他是用字符數組的,也很簡單方便可以實現。你們做的怎么了?如果有好的方法也可以大家交流啊,因為我寫這些都是為了大家(也為了自己)。大家應該都看得明白我的程序吧,因為我的思想就是這么單純。
老師說完了昨天的作業后就開始說今天要講的課程了。今天的主題是循環語句,其實C語言里也只是這么幾條循環語句嗎?相比QB來說真的可以算是見大場面了,因為QB里單是循環語句已經有七八種之種,至于有那些我也記不太清了。那么下面講講C語言的好了。C語言的循環語句一共有三種,先說說比較簡單的前兩種吧!
While ( 條件 ) { 語句;} 和 do { 語句;}
while ( 條件 );
這里我想重復一下老師給我們說的一個笑話,就是有一個小女孩問媽媽拿糖的小故事。有一個很乖的小女孩總是先問媽媽可不可以吃糖,如果得么批準了就拿一粒來吃??墒怯幸淮嗡秃苣弥涣3灾?,跟著才問媽媽我可不可吃糖啊,如果可以當然就是繼續可以吃了,否則就不準了,不過已經有一粒在口了。這個剛好可以比喻這兩個循環語句,第一個循環語句是先當條件真才可以繼續下去,否則退出。而第二個呢,就是直運行里面的程序先,跟著才到條件里看是否可以再繼續運行多一次。好了這兩個比較簡單的就看看C語言里特有的一個for循環語句,這個循環比較特別,如第五天圖一
它的結構也比較特別,而且里面三個表達式是非常靈活的。這里隨便給出一個程序讓大家看看:
int i=0;
for(;;) if(i++>10) break;
printf("%d",i);
這說這里i是多少呢?這里就關系到這個運算符了++遞增運算符,可以有兩種方式,一種是i++就像上面的那樣,至于另一種就是++i,這里的答案是前者等于12,而后者就等于11。這里全是因為++遞增的兩個方式所至,那么我們要好好掌握一下這個,你自己試試動手上機編一下。另一個程序好讓看出這個遞增運算符的:
int i=0;
if (i++) printf("a"); /* 如果這里為真的就輸出a */
else printf("b"); /*否則就是輸出b */
自己試試看,是不是很明顯可以知道這個遞增符的原理呢,這里說一下吧,其實i++這個呢就是先那i比較后才運算++的,所以很自然就是0那么結果當然就是輸出b了,則那個++i就是先把i加1才比較,那么真就輸出a了,好了,那么++遞增和- -遞減都是同一性質的。不過要注意的是這兩個遞增遞減運算符都是要變量才行的,不可以和常量運算。
好了,說完了循環語句當然就是要懂得去運用在編程里了??!所以老師馬上出了一道題讓我們想想,不過相信有些人都是研究過的了,就是"魔方陣",可是老師說雖然這個魔方陣雖然有直接的算法可以運算出來,但是要讓我們思考用循環做這題,利用計算機的能力來完成,但看到要排列這么多的數,循環也更不要說要很多了,所以我根本沒法想下去了(開始頭暈起來)。最后還是沒有一個能做出,只好聽老師說了,不過老師也沒有完全說完,只是給了我們一個結構,如第五天圖二讓我們自己有興趣就去完成它吧,我對數學這東西最沒有FEEL的了。
好了,接著繼續第二題,也是一個排列組合的問題,你們手頭上應該都有老潭的《C程序語言第二版》了,那么請大家翻翻書到第121頁,6.15題,這題就是排列組合的題目了。這其實也是有一個規律可以找到的,不過不是我們找到的而是老師給我們說,今天這堂課真的有太多的難題了,至少對于我來說。下面我也沒有什么好插嘴的了,只好示出老師的方法吧,如第五天圖三
程序也在下。
char xyz[]=['X','Y',"Z'};
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(j==i0 continue;
for(k=0;k<3;k++)
if(k==i || k==j) continue;
printf("A-%c\n",xyz[i]);
prihtf("B-%c\n",xyz[j]);
prihtf("C-%c\n",xyz[k]);
讓大家自己看明白了。好了,今天我的頭也特別的暈,肩膀也特別的酸。不過我還是要努力的!