c語言實踐 打印字母三角形


效果如下:

 

我是怎么想的:

總共需要打印6行字母,那么就需要一個循環來控制打印第幾行,大概代碼如下:

for(int i=0;i<6;i++)

{

}

每行都會打印字母,而且循環越往后,需要打印的字母越多,那么每行打印字母也需要一個循環,比如打印F到A這需要一個循環,其它也是同樣的道理。每行打印完都需要輸出一個換行,所以代碼變成下面這樣

for(int i=0;i<6;i++)

{

  for(char j='F';XXXXX;j--)

  {

 

  }

  printf("%c",j);

}

因為每行都是從F開始打印的,所以j的初始值肯定是F,有因為每次是從F往A這個方向打印的,那么肯定有j--這個操作,上面的代碼不難理解。

真正難的是j=‘F’后面這個進入循環的條件,這個怎么想。

用列舉法推出來的。

當i=0的時候,需要打印第一行字母,此時j='F',那么我們給j一個什么樣的關系表達式,才能夠讓j只能取到'F'這一個值呢?

是不是j>'F'-1

char j='F',j>'F'-1;j-- j的定義域只能取到‘F’

當i=1的時候,需要打印第二行字母,也就是需要里面的循環執行兩次,那么給j一個什么樣的表達式,才能夠讓j的值渠道'F'和‘E’呢? 是不是j>'F'-2;

我們不能直接把'F'-1和'F'-2這兩個表達式直接寫進去,不然輸出的是固定值,我們想要這兩個值和i發生一定的關系

當i=0時候,我們希望j>'F'-1='F'-(0+1)

當i=1時候,我們希望j>'F'-2='F'-(1+1)

當i=3時候,我們希望j>'F'-4='F'-(3+1)

所以通項公式就是j>'F'-(i+1)

最后代碼如下:

int main(void)
{
    
    for (int i = 0; i < 6; i++)
    {
        for (char j = 'F'; j > 'F'-(i+1); j--)
        {
            printf("%c",j);
        }
        
        
        printf("\n");
    }




    return 1;
}

 

 

 

update:2018.10.2

這次思考過程和上次完全不一樣。

首先需要一個外層循環來控制打印的行,共需要打印6行,每循環一次打印一行數據。還需要一個內層循環控制要打印的字符

由於,內存循環每次都是從F開始打印的,所以內存循環每次都要初始化變量為F,每次打印一個字符后就讓字符減去1,這樣就可以打印比F小的那個字符了,那要打印多少個字符呢?我們需要用一個變量來記錄,然后每進行一次外層循環這個變量的值都要+1,因為第二行要比第一行多打印一個字符。

int main(void)
{
    char ch ;//當前要打印的字符
    int row_count=1;//每行需要打印額字符個數,從第一行開始
    int count;//打印了幾個字符了

    for (int i = 0; i < 6; i++,row_count++)
    {
        for (ch='F',count = 0; count < row_count; count++,ch--)
        {
            printf("%c",ch);
        }
        printf("\n");
    }
    
    
    return 1;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM