题目
输入整数N,输出一个N阶的二维数组Q。
数组的形式参照样例。
输入格式
输入包含多行,每行包含一个整数N。
当输入行为N=0时,表示输入结束,且该行无需作任何处理。
输出格式
对于每个输入整数N,输出一个满足要求的N阶二维数组。
每个数组占N行,每行包含N个用空格隔开的整数。
每个数组输出完毕后,输出一个空行。
数据范围
0≤N≤100
实现代码
#include <iostream>
#include <map>
using namespace std;
int **getArray(int size)
{
int **array = new int *[size];
for (int i = 0; i < size; i++)
{
array[i] = new int[size];
}
for (int i = 0, j = 0; j < size; j++)
{
array[i][j] = j + 1;
}
for (int i = 1, j = 0; i < size; i++)
{
j = 0;
array[i][j] = i + 1;
for (j = 1; j < size; j++)
{
array[i][j] = array[i - 1][j - 1];
}
}
return array;
}
void printArray(int num, int **array)
{
for (int i = 0; i < num; i++)
{
for (int j = 0; j < num; j++)
{
cout << array[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
void printMap(map<int, int **> &m)
{
for (map<int, int **>::iterator it = m.begin(); it != m.end(); it++)
{
printArray(it->first, it->second);
}
cout << endl;
}
void test_main()
{
cout << "请输入矩阵的规模:" << endl;
map<int, int **> m;
int size;
cin >> size;
while (size != 0)
{
m.insert(make_pair(size, getArray(size)));
cin >> size;
}
cout << endl;
cout << "--------------------------------------------------\n"<< endl;
printMap(m);
}
int main()
{
cout << "-------------------begin--------------------------\n"<< endl;
test_main();
cout << "\n--------------------end----------------------------" << endl;
return 0;
}