倒数字三角形【***】 - NOTEBOOK
	倒数字三角形【***】
	信奥C++Posted on 2023-08-10
	
摘要 : 学会理解二维数组、多重for套嵌
	
 
	❱ 描述:
以下的数字倒直角三角形是由二个数确定的:一个数是行数R,1<=R<=39,另一个是种子数S,1<=S<=9。S放在左上角,照着样例输出文件的样子,写一个程序,根据输入的二个数打印出相应的数字倒直角三角形。
❱ 输入描述:
单独一行,二个用空格隔开的整数
❱ 输出描述:
输出倒直角数字三角形,输出时数字与数字之间不留空格字符。
❱ 用例输入:
6 1
❱ 用例输出:
用例输出:
124727
 35838
  6949
   151
    62
     3
❱ 简单办法
垂直方向来依次输入数据
#include<iostream>
using namespace std;
int main() {
	int m,n;			// 定义 行,列
	cin>>m>>n;
	int a[m+2][m+2]={0};	// 二维数组初始化
	
	for(int j=1;j<=m;j++){		// 垂直方向来依次输入数据,所以从 j 开始
		for(int i=1;i<=m;i++){	// 这里也可以修改成 i<=j;
			if(j<=i-1){			// 如果上面修改成 i<=j; 那这句就可以不要。
				continue;
			}
			a[i][j] = n;
			
			n++;
			if(n>9){
				n=1;
			}
		}
	}
	// 打印矩阵
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]!=0){
				cout << a[i][j];	// 依次打印每一行,用空格隔开。
			}else{
				cout << " ";
			}
			
		}
		cout<<endl;	// 每一行结束,打印换行符号。
	}
}
❱ 横向输入数据,需要找出数据变化关系【复杂】
#include<iostream>
using namespace std;
int main() {
	int m,n;			// 定义 行,列
	cin>>m>>n;
	int a[m+2][m+2]={0};	// 二维数组初始化
	
	int k;	// 一行种格子的变化
	for(int i=1;i<=m;i++){
		k = n;
		for(int j=1;j<=m;j++){
			if(j<=i-1){		// 跳开前面空白格
				continue;
			}
			a[i][j] = k%9 ? k%9 : 9;
			
			k = k+j;
		}
		n = n+i+1;
	}
	// 打印矩阵
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]!=0){
				cout << a[i][j];	// 依次打印每一行,用空格隔开。
			}else{
				cout << " ";
			}
		}
		cout<<endl;	// 每一行结束,打印换行符号。
	}
}