C語言代碼訓練營(1)

來源:互聯網
上載者:User

標籤:printf   apt   繪製   load   cimage   答案   學習交流   距離   習題   

歡迎大家每天前來打卡~

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

希望這種手把手的方式能夠協助大家儘快掌握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的範圍0~29,j的範圍0~29。那麼在例題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 30int 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 30int 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. 課後練習

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


菱形明天解析 

學習過程中遇到什麼問題或者想擷取學習資源的話,歡迎加入學習交流群
639368839,我們一起學C/C++!

C語言代碼訓練營(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.