题名:数字直角三角形
题目:给出 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//万能头 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; //结束 }
到这里还没完,近两期忘了加“复制版”代码。
复制版:
#includeusing 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; }
从下一期开始,“示例代码”部分会细分注释版和复制版,以免忘记
暑期编程PK赛 得CSDN机械键盘等精美礼品!


