目录
C++蛇形三角形填充
一、题目要求
1、编程实现
2、输入输出
二、算法分析
三、程序编写
四、运行结果
五、考点分析
六、推荐资料
C++蛇形三角形填充
一、题目要求
1、编程实现
输入一个正整数N,输出N行的蛇形数字三角形(见输出样例)
2、输入输出
输入描述:一行一个整数N(3<=N<=30)
输出描述:N行,第1行N个数,第2行N-1个数,...,第N行1个数,每个数占5位
输入样例:
7
输出样例:
1 3 6 10 15 21 282 5 9 14 20 274 8 13 19 267 12 18 2511 17 2416 2322
二、算法分析
- 从给定的题目和样例可以看出,这是一个填充三角形题目
- 考查的主要是二维数组的应用,同时这里面涉及到如何填充对应的行和列的问题
- 关键在于如何通过样例,找到数字和二维数组中对应的行列下标之间的关系
- 因为通过常规的每行及每列的填充会发现有点无从下手(没有规律)
- 但是看输出样例会发现其实是有规律,只是这个规律并不是正常的行列规律
- 而是从左下向右上斜着的规律,输入的个数7,斜着看也刚好是7条线
- 我们顺着从左上角向右下角来看这7条线,第一条线1个数,第二条线2和3两个数,第三条线4、5和6三个数等等;我 i表示正常的行,j表示正常的列对应的索引号,具体看下图L和i、j的关系
三、程序编写
#include<bits/stdc++.h>
#include<iomanip>
using namespace std;
int a[31][31];
int main()
{int n;cin >> n;int k = 1;for(int l = 0;l < n;l++){for(int j=0;j<=l;j++){int i = l-j;a[i][j] = k++;}}//输出for(int i=0;i<=n;i++){for(int j=0;j<=n-i-1;j++){cout << setw(5) << a[i][j];}cout << endl << endl;}return 0;
}
本文作者:小兔子编程 作者首页:小兔子编程-CSDN博客
四、运行结果
71 3 6 10 15 21 282 5 9 14 20 274 8 13 19 267 12 18 2511 17 2416 2322
五、考点分析
难度级别:中等,这题相对而言在于转换思路,具体主要考查如下:
- 分析题目,找到解题思路
- 充分掌握变量和数组的定义和使用
- 学会思维逻辑的变通,分析出对应的行列之间的规律
- 学会输入流对象cin的使用,从键盘读入相应的数据
- 学会for循环的使用,在确定循环次数的时候推荐使用学会
- 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
- 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
- 充分掌握变量定义和使用、二维数组、循环语句的应用以及逻辑思维的发散提高
PS:方式方法有多种,小朋友们只要能够达到题目要求即可!
六、推荐资料
- 所有考级比赛学习相关资料合集【推荐收藏】