原题链接: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; }