原题链接:https://ac.nowcoder.com/acm/contest/19305/1002

题目描述

打印数字三角形,从1开始输出,第i行输出i个数,每个数字按4个位置输出

注:c语言中 %4d可以输出一个数,占据四个位置,右对齐。

输入描述:

输入一行,包含一个整数n

1 <= n <= 1000

输出描述:

输出n行,第i行,有i个数, 每个数占据四个位置。

示例1

输入

4

输出

图片说明


一个for循环顺序打印1,2,...问题不大
考点在何时打印回车
显然,打印一个数后回车,然后打印两个数后回车,...
在每次打印数字结束后塞一个if判断,设一个变量作为累加器,第1次累加到1后打印回车并清空,第2次累加到2后打印回车并清空,...
代码如下

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n,total;
    cin >> n;
    total=n*(n+1)/2;//打印数字总个数
    int p=0,q=1;//p作为累加器,每次打印都累加1,累加至终值后清空
                //q作为累加器的终值,每次打印回车后+1
    for(int i=1;i<=total;i++)
    {
        p++;
        printf("%4d",i);
        if(q==p)
        {
            printf("\n");
            p=0;
            q++;
        }
    }

    return 0;
}