1. 程式人生 > >初學C語言,幾種利用巢狀迴圈的字母列印格式

初學C語言,幾種利用巢狀迴圈的字母列印格式

1、最簡單的換行巢狀,一個for迴圈控制行數,一個for迴圈控制每行輸出量。

#include <stdio.h>
/*輸出類似於
$
$$
$$$
$$$$
$$$$$
*/
int main(void)
{
    int m,n;

    for(m=1;m<=5;m++)
        for(n=1;n<=m;n++)
        {
            printf("$");
            if(n==m)
                printf("\n");
        }
}

2、相比於第一例,多了一個字元倒序輸出,利用陣列下標中加上變數n實現。

#include <stdio.h>
/*輸出形如
F
FE
FED
FEDC
FEDCB
FEDCBA
*/

int main(void)
{
    char lett[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int m,n;

    for(m=1;m<=6;m++)
        for(n=1;n<=m;n++)
        {
            printf("%c",lett[6-n]);
            if(n==m)
                printf("\n");
        }
}

3、這個的難點在於一開始不理解ch++的正確使用方法,直接使用陣列的方式兩個迴圈巢狀去做,(錯誤)程式碼如下:

#include <stdio.h>

int main(void)
{
    char lett[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int m,n;

    for(m=0;m<=6;m++)
        for(n=0;n<=m;n++)
        {
            printf("%c",lett[m+n]);
            if(n==m)
                printf
("\n"); } }

先看這個的輸出結果
錯誤輸出

前兩行沒有問題,後面出現問題,那是為什麼呢,可以發現,第一個迴圈每次加一過後,第二個迴圈都會初始化為0,也就是說,A可以理解為0+0,B=1+0,C=1+1,然後第一個迴圈變成2,第二個迴圈為0,也就是第三行又出現了一個C。

正確程式碼如下:

#include <stdio.h>

/*輸出形如
A
BC
DEF
GHIJ
KLMNO
PQRSTU
*/
int main(void)
{
    char ch='A';
    int i,j;
    for(i=1;i<7;i++)                //控制行數
        {
        for(j=0;j<i;j++)            //控制每行字母個數
            printf("%c",ch++);      //ch每次操作遞增
        printf("\n");
        }
    return 0;
}

4、該例根據使用者不同的輸入值進行不同的輸出,前三例稍加修改也可以的,有種複雜的寫法用了四個迴圈,一個迴圈控制行數,內部三個迴圈一個迴圈列印空格,一個迴圈列印升序字母,一個迴圈列印降序字母。該例用了一個for迴圈加上if…else語句直接完成升序和降序字母的輸出。

#include <stdio.h>
/*輸出形如
***A
**ABA
*ABCBA
的圖形,其中“*”代表空格,行數由使用者定義
*/
int main(void)
{
    int i,j,k;
    char input;

    printf("please input a capital letters:");      //輸入大寫字母以定義行數
    scanf("%c",&input);

    for(i=0;i<(int)(input-'A'+1);i++)               //控制行數
        {
        for(j=1;j<=(int)(input-'A'+1-i);j++)        //列印空格
        printf(" ");
        for(k=0;k<=2*i;k++)                         //列印字母
        if(k<=i)
            putchar('A'+k);
        else
            putchar('A'+2*i-k);
        printf("\n");
        }

}