【深基4.例6】数字直角三角形
题目描述
给出 n n n,请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的,如果没有 2 2 2 位则加上前导 0 0 0。
输入格式
输入一个正整数 n n n。
输出格式
输出如题目要求的数字直角三角形。
1.题目分析
该题可以通过双重循环直接打印行和列,直接输出结果。也可以通过寻找数学规律解决。
2.题目思路
寻找数学规律,当输入n时,三角形的数字个数应该为:((n+1)*(n+1) - (n+1))/2,
即可以确定数字个数,对个位数判断补零打印,其他直接打印结果,
再对换行进行判断,条件为当i == 循环完一行之后n的递减之和时,执行换行,其他情况直接跳出循环。
3.代码实现
#include <stdio.h>int main() {int n;scanf("%d", &n);int count = n;int sum = n;//数学规律,循环次数为:((n+1)*(n+1) - (n+1))/2 即 数字个数for (int i = 1; i <= ((n + 1) * (n + 1) - (n + 1)) / 2; ++i) {//个数数补零,其他直接输出if (i > 0 && i < 10) {printf("0%d", i);} else {printf("%d", i);}//换行判断while (count > 1) {if (i == sum) {printf("\n");count--;sum += count;} else {break;}}}
}