如何在C / C ++中打印以下模式?

时间:2015-03-14 03:50:48

标签: c++

(对于n = 4)

1
2*3
4*5*6
7*8*9*10
7*8*9*10
4*5*6
2*3
1

打印上半部分三角形非常简单,但我无法弄清楚如何打印下三角形。

这是我打印上半部三角形的方式。

int num = 1;
for (int i = 1; i <= n; i++)
{
    for (int j = 1; j <= i; j++)
    {   
        cout << num;
        if (i != j)
        {  
             cout << "*";
        } 
          num++;
    }
    cout << endl;
}

2 个答案:

答案 0 :(得分:2)

如果您的问题是在编写下三角形的每一行时您不知道从哪个数字开始,只需创建一个n字符串数组,而不是打印每一行,保存每一行当你制作上三角形的时候。然后,首先从第1行到第n行打印它们,然后从n打印到1。

否则你可以计算每一行的起始编号。第5行(从1开始计数,使其与n一致;换句话说,下三角的第一个包含7,8,9,10)与第4行相同,第n行4开始于在从1到n-1的所有数字之和之后出现的数字。从1到n-1的数字之和只是(n-1)*n/2。所以你可以知道,当n = 4时,你必须计算从1到3的数字之和,即3 * 4/2 = 6,在第4行,你从6 + 1 = 7开始。在第4行,你必须打印4个数字。

答案 1 :(得分:1)

这是一种方法:

int cur=1,num=1;
for(int i=0;i<4;i++)
{
    for(int j=0;j<cur;j++)
    {
        if(j!=0)
          printf("*");
        printf("%d",num++);
    }
    printf("\n");
    cur++;
}
cur=4,num=10;
for(int i=0;i<4;i++)
{
    int temp=num-cur+1;
    for(int j=0;j<cur;j++)
    {
        if(j!=0)
          printf("*");
        printf("%d",temp++);
    }
    printf("\n");
    num-=cur;
    cur--;
}