19届第四范式测试开发工程师校招-编程题
编程题两道,第一道关于SQL的联合查询跟第二排序,第二道关于二维数组。
题目2:
给定一个空的int类型的二维数组array[n][m]。按下面的填充规则,请编写一个函数将此二维数组填满并打印出来。
1 | 2 | 4 | 7 |
3 | 5 | 8 | 11 |
6 | 9 | 12 | 14 |
10 | 13 | 15 | 16 |
输入描述:输入的包括两个正整数,表示二维数组的大小n,m(1<=n,m<=10)
输出描述:打印结果,每行行末无空格。
例1:输入为4 4
输出为
1 2 4 7
3 5 8 11
6 9 12 14
10 13 15 16
思路:首先先找出规律,是按照i+j=(0,1,2,n*m)来递增赋值。接下来就是编写程序了。
代码如下
1 #include <iostream> 2 #include<stdio.h> 3 using namespace std; 4 5 int main() 6 { 7 int n,m; 8 scanf("%d %d",&n,&m); 9 int a[100][100]={1},com=1; 10 if(n>=1&&n<=10&&m>=1&&m<=10) //判断下标是否超出 11 { 12 for(int k=1;k<=n*m;k++) 13 { 14 for(int i=0;i<n;i++) 15 { 16 for(int j=0;j<m;j++) 17 { 18 if(i+j==k) 19 { 20 a[i][k-i]=com+1; 21 com=a[i][k-i]; 22 } 23 } 24 } 25 } 26 for(int i=0;i<n;i++) //输出二维数组 27 { 28 for(int j=0;j<m;j++) cout<<a[i][j]<<" "; 29 cout<<endl; 30 } 31 } 32 else cout<<"error"<<endl; 33 return 0; 34 }