二维数组
二维数组的定义
格式:数据类型 数组名[常量表达式1][常量表达式2];
int a[10][5]; //定义一个10行5列的存储整形变量二维数组
float b[20][9];//定义一个20行9列的存储单精度实数变量二维数组
char c[100][120];//定义一个100行120列的字符变量二维数组
二维数组定义的规则与一维数组一样,不再赘述。
一维数组与二维数组直观上的区别:
一维数组:
e | e | e | e | e | e | e | e | e | e |
二维数组:
e | e | e | e | e | e | e | e | e | e |
---|---|---|---|---|---|---|---|---|---|
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
e | e | e | e | e | e | e | e | e | e |
模型:
#include<bits/stdc++.h>
using namespace std;
int n,a[1000][1000];//n为输入多少次
int main(){
//(n*n次,二维数组适合做图形题)
//a[10000][10000]为二维数组
scanf("%d",&n);//输入n(用cin>>(输入变量)也可以)
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&a[i][j]);//和图形题一样,用双层for循环输入
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d",a[i][j]);//输出
}
printf("\n");//换行
}
return 0;
}
例题
题目描述
输入整数 N ,输出相应方阵。
输入
一个整数 N 。 ( 0<n<10 )
输出
一个方阵,每个数字的场宽为 3 。
样例
输入
5
输出
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
思路:观察要赋值的数的下标,可得规律
#include<bits/stdc++.h>
using namespace std;
int a[20][20];
int main() {
int n,i,j;
cin>>n;
//循环赋值元素的个数,赋值n个数
//该循环表示,循环赋值元素的个数
for(i=0;i<n;i++){
a[i][n-1-i]=1;
}
//输出
//循环行
for(i=0;i<n;i++){
//循环列
for(j=0;j<n;j++){
cout<<setw(3)<<a[i][j];
}
//第i行输出结束,输出换行
cout<<endl;
}
return 0;
}