練習:列印圖形

2020-08-10 14:03:14

練習1:金字塔

編寫程式輸出金字塔圖形
多個測試數據。每個測試數據輸入一個整數n(1 <= n <= 9),分別輸出每個數位的金字塔圖形
如:
在这里插入图片描述
注意:

  1. 數位爲n,則輸出n行,第i行有(2i-1)個*,(n-i)個空格
  2. 多個輸入時,用while(cin>>n)實現
#include<iostream>
using namespace std;
int main()
{
    int n;
    int i,j;
    while(cin>>n)//多個輸入時,用while(cin>>n)表示輸入正常時列印金字塔
    {
        //列印數位n的金字塔
        for (i = 1;i<=n;i++)//輸出n行圖形
        {
            for (j = 1;j<=n-i;j++)//列印每行的空格,第i行有(n-i)個空格
                cout << ' ';
            for (j = 1;j<=2*i-1;j++)//列印每行的*,第i行有(2i-1)個*
                cout << '*';
            cout << endl;//列印換行
        }
    }    
        return 0;
}

練習2:上下金字塔

輸出雙層金字塔
在这里插入图片描述

  1. 先列印n行正金字塔,再列印(n-1)行倒金字塔
  2. 倒金字塔從倒數第(n-1)行開始,到倒數第1行結束
#include<iostream>
using namespace std;
int main()
{
    int n;
    int i,j;
    while(cin>>n)//多個輸入時,用while(cin>>n)實現
    {
        //列印正金字塔n行
        for (i = 1;i<=n;i++)
        {
            for (j = 1;j<=n-i;j++)//列印每行的空格,第i行有(n-i)個空格
                cout << ' ';
            for (j = 1;j<=2*i-1;j++)//列印每行的*,第i行有(2i-1)個*
                cout << '*';
            cout << endl;//列印換行
        }
        //列印倒金字塔(n-1)行
        for(i=n-1;i>=1;i--)
        {
            for (j = 1;j<=n-i;j++)//列印每行的空格,第i行有(n-i)個空格
                cout << ' ';
            for (j = 1;j<=2*i-1;j++)//列印每行的*,第i行有(2i-1)個*
                cout << '*';
            cout << endl;//列印換行
        }
    }    
    return 0;
}

練習3:字母金字塔

請列印輸出一個字元金字塔,字元金字塔的特徵請參考樣例
輸入一個字母,保證是大寫
在这里插入图片描述
注意:

  1. 與練習1相比,關鍵在於將輸入的字母轉換爲數位 n = ch - ‘A’ + 1;
  2. 第i行輸出n-i個空格,i個順序字母和i-1個倒序字母
  3. 如何實現字母的順序/倒序輸出cout << char(‘A’ + j - 1);
#include<iostream>
using namespace std;
int main()
{
    char ch;
    cin>>ch;
    int n;
    n = ch - 'A' + 1;//將字母轉換爲數位
    int i, j; 
    for (i = 1; i <= n;i++)//外層回圈,控制行數
    {
        for (j = 1; j <= n - i;j++)//列印每一行的空格,第i行有n-i個空格
            cout << ' ' ;
        for (j = 1; j <= i;j++)//列印每行前面的順序字母,第i行從A開始有i個字母
        {
            cout << char('A' + j - 1);
        }
        for (j = i ; j >1;j--) //列印每行後面的倒序字母,第i行有i-1個字母
        {
            cout << char('A' + j - 2);
        }
        cout << endl;//列印換行
    }
        return 0;
}

練習4:九九乘法表

輸出九九乘法表
在这里插入图片描述
注意:1、通過兩層回圈分別控制行和列
2、利用printf對輸出結果實現更精確的控制,計算結果佔兩個字元,右對齊

#include<iostream>
using namespace std;
int main()
{
    int i,j;
    for (i = 1; i <= 9;i++)//外層回圈,控制行數
    {
        for (j = 1; j <= i;j++)//內層回圈,控制每一行的列數
        {
            printf("%d*%d=%2d ", j, i, j * i);//用printf更精確地控制輸出格式
        }
        cout << endl;
    }
        return 0;
}

練習5:數位三角形

列印數位三角形,從1開始輸出,第i行輸出i個數,每個數位按4個位置輸出
注:c語言中 %4d可以輸出一個數,佔據四個位置,右對齊。
在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int i,j;
    int a = 1;
    for (i = 1; i <= n;i++)//外層回圈,控制行數,即n行
    {
        for (j = 1; j <= i;j++)//內層回圈,控制每一行的列數
        {
            printf("%4d",a);//用printf更精確地控制輸出格式
            a++;
        }
        cout << endl;
    }
        return 0;
}