题目信息
题名:数字直角三角形
题目:给出 n,请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 0。
输入格式:输入一个正整数 n。
输出格式:输出如题目要求的数字直角三角形。
分析题目
先来解释一下:“所有数字都是 2 位组成的,如果没有 2 位则加上前导 0。”这句话中的2位指的是数的位数统一为2,即1变为01,2变为02。直到9改为09。(因为本人阅读理解能力真心不怎么样,活生生能把阅读理解的阅读题写成程序编写题,所以本人读这句话时没明白过来,特来解释)
这道题很简单,废话不多说,直接说思路:
- 声明三角形n,行数sum,数值k并初始化为1
- 输入n的值
- 遍历1~n之间的所有数,并且遍历1~sum之间的所有数
- 输出三角形
这道题到这里还没完,需要细说一下输出三角形的部分也是最重要的部分:
- 判断k是否是个位数,如果是的话需要先输出一个0后再输出k的值
- 如果k是十位数直接输出k的值即可,不用考虑
- 每输出k的值后累加k的值
- 然后需要换行,需要写在第一个循环里
- 最后累减sum的值
这道题到这里就完成了
示例代码
#include <bits/stdc++.h> //万能头
using namespace std;
long n, sum, k = 1; //三角形n,行数sum,和数值k
int main()
{
cin >> n; //输入n
sum = n; //默认sum=n
for (int i = 1; i <= n; i++) //循环n遍
{
for (int j = 1; j <= sum; j++) //循环sum遍,相当于再次循环n遍
{
if (k < 10)
{ //如果k小于10
cout << 0 << k; //那么前面加0后输出k
}
else
{
cout << k; //否则直接输出k
}
k++; // k累加
}
cout << endl; //换行
sum--; //别忘了sum减去1
}
system("pause"); //可加可不加
return 0; //结束
}
到这里还没完,近两期忘了加“复制版”代码。
复制版:
#include <bits/stdc++.h>
using namespace std;
long n, sum, k = 1;
int main()
{
cin >> n;
sum = n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= sum; j++)
{
if (k < 10)
{
cout << 0 << k;
}
else
{
cout << k;
}
k++;
}
cout << endl;
sum--;
}
system("pause");
return 0;
}
从下一期开始,“示例代码”部分会细分注释版和复制版,以免忘记