21天C語言代碼訓練營(第一天)

為了配合專題C語言從零開始,今天開始一個新的專題《21天C語言代碼訓練營》。這個專題重點針對從零開始系列進行練習題講解。以21天為一個周期,為大家提供編程方面的實例講解。

最近,越來越多的初學者朋友在給我的郵件中提出這樣的問題:我在文章中講的東西他們都看懂了,但具體到自己寫代碼的時候卻完全不知道從何入手。其實看懂知識點例程和真正學會寫代碼之間相差了好幾條街,我一再強調,學編程沒有捷徑,只有老老實實地敲代碼。對于文章中的例子,大家一定要達到自己能夠完整的敲出來才行。當然,這里并不是要求大家死記硬背,要求的是在懂得設計思路和程序語法的基礎上,經過自己的二次加工后重新實現的過程。

在這個專題中,我們以練習為主,講解為輔,力求尋找出一種幫助大家快速提高編碼能力的新玩法。也希望朋友們緊跟我的更新速度堅持每天做練習,大家共同進步。

歡迎大家每天前來打卡~


訓練營規則

  • 每天出一道練習題,請大家自己完成編碼
  • 第二天的文章中會告訴大家一種或幾種經典解決方法
  • 完成練習的同學,歡迎大家把代碼貼在留言中
  • 如果有問題,也請留言,我會找機會集中解答

希望這種手把手的方式能夠幫助大家盡快掌握C語言編程。


1. 例題

今天我們先來講解一道C語言的經典例題,也是從零開始系列中的一道課后練習題。

請用控制臺程序繪制如下圖案。

循環經典例題

2. 分析

這個題目是要求打印30行"*",每行打印的個數不同。通過這個信息,我們應該立刻反映出運用循環來完成。那么我們想想,在循環部分我們都學到了什么。

關于循環,我首先會想到一些例題:

2.1 例題1

打印30個"*",每個"*"占一行。

int i;
for (i = 0; i < 30; i++)
{
    printf("*\n");
}

2.2 例題2

打印一行"*",個數為30

int i;
for (i = 0; i < 30; i++)
{
    printf("*");
}

這兩個題目的代碼只差一個\n,結果卻完全不同。掌握了這兩個例題,我們自然能夠完成下面這個例題了。

2.3 例題3

打印一個由"*"組成的30行30列的矩陣。

int main()
{
    int i, j;
    for (i = 0; i < 30; i++)
    {
        for (j = 0; j < 30; j++)
        {
            printf("*");
        }
        printf("*\n");
    }

    return 0;
}

執行結果如下:

30*30矩陣

我們再把例3的要求改一改,要求如下

2.4 例題4

打印30行“*”。第一行打印1個“*”,第二行打印3個“*”,第三行打印5個“*”,... ,第三十行打印59個“*”。

在前面的程序中,我們用變量i控制行的循環,變量j控制列的循環。i的范圍029,j的范圍029。那么在例題4中,i和j有什么樣的關系呢?

找規律
第一行 i = 0; j循環1次
第二行 i = 1; j循環3次
第三行 i = 2; j循環5次
... ... ...
第三十行 i = 29; j循環59次

于是得到這樣一個關系:

規律
第n行 i = n - 1; j循環2i + 1次

那么如何實現循環2i + 1次呢,就是讓j從0到2i + 1。

按照這個思路,可以得到下面的代碼:

#include <stdio.h>

#define LINE 30

int main()
{
    int i, j;
    for (i = 0; i < LINE; i++)
    {
        for (j = 0; j < 2 * i + 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

執行結果如下:

例題4

這里要說一個問題,其實for循環有兩種常見形式:

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

for (i = 1; i <= n; i++)

這種寫法執行的次數相同,可以相互代替。大部分C語言程序員喜歡第一種方式,因為數組的下標訪問是從0開始的,這樣寫更方便。目前大家可以選擇自己喜歡的方法。

好了,回到例題中來。現在我們的代碼距離目標輸出已經很接近了,缺少的是在每行“*”之前需要輸入不同數量的空格。我們分析i和空格數量,可以得到如下關系:

每行輸出LINE - i個空格

于是,我們得到了最終的實現程序。

3. 答案

#include <stdio.h>

#define LINE 30

int main()
{
    int i, j;
    for (i = 0; i < LINE; i++)
    {
        for (j = 0; j < (LINE - i); j++)
        {
            printf(" ");
        }

        for (j = 0; j < 2 * i + 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }

     return 0;
}

運行一下這段代碼,你會看到打印結果就是最前面的那張圖。

4. 課后練習

自己編寫代碼,打印出下面這張圖。

菱形

明天會講解這個程序,請大家先做練習。歡迎將自己的程序貼在留言中。

我是天花板,讓我們一起在軟件開發中自我迭代。
如有任何問題,歡迎與我聯系。


下一篇:21天C語言代碼訓練營(第二天)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內容

  • 問題鏈接 自己編寫代碼,打印出下面這張圖。 我的代碼如下 完
    Hans941閱讀 394評論 0 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,755評論 25 708
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • 常聽學校里的人盛傳著,每一年的櫻花季節,一所學校里面的一顆櫻花樹就會飄落血色的櫻花。 “林希”一個身穿白色的連衣裙...
    林希閱讀 1,218評論 0 0
  • 農村致富的貓膩 一說致富,我們總是說勤勞致富。你好好想一想,勤勞能致富?善良老實腦子又不大靈活的農民是一輩子都富裕...
    卜玉霞閱讀 350評論 1 0