二维数组练习
1.将一个二维数组的行和列的元素进行互换,存到另一个数组中。
思路:
首先看一下a和b用二维数组分别将每行每列的值表示出来
一维数组可以认为就只能表示一行的信息,而每一行元素则为每一列的信息。
那么二维数组就可以认为第一个下标表示有多少行,第二个下标表示每一行中有多少列。
a数组:共有2行每行中各有3个元素。
b数组:共有3行每行中各有2个元素。
例如:我们要分别在这两个数组总取值为4的这个元素,分别用连个数组表示:a[1][0]==4;b[0][1] == 4;
,刚好a的行与b的列对应,a的列与b的行对应。
代码:外层循环行,内层循环列。
int main()
{
int arr1[2][3] = {{1,2,3},{4,5,6}};
//int arr2[3][2] = {{1,4},{2,5},{3,6}};
int arr2[3][2] = {};
for(int i = 0;i <= 1;i++)
{
for(int j = 0;j<=2;j++)
{
arr2[j][i] = arr[i][j];
}
}
printf("\n");
}
2.将一个一维数组的周围都赋上值
思路:
1.定义一个二维数组
2.给该数组四周赋值
第一行所有元素赋值
第一行第一列赋值
每一行的最后一列赋值
最后一行所有元素赋值
int main()
{
int nMap[10][10] = {0};
for(int i = 0;i<10;i++)
{
for(int j = 0;j<10;j++)
{
//第一行和最后一行赋值
if(i == 0|| i== 9)
{
nMap[i][j] = 1;
}
//每一行的第一列和最后一列赋值
else if(j == 0 || j== 9)
{
nMap[i][j] = 1;
}
}
}
return 0;
}
3.求一个3×3的整形矩阵对角线元素之和。
思路:
- 定义一个二维数组
- 当两个下标相同时候则为对角线
int main()
{
int nMap[10][10] = {0};
int nSum = 0;
for(int i =0;i<10;i++)
{
for(int j = 0;j<10;j++)
{
if(i == j)
{
nSum += nMap[i][j];
}
}
}
return 0;
}
4.打印图形
*
***
*****
*******
*****
***
*
思路:
- 先及那个该图形分为上下两个部分,递增的为一部份,递减的为一部份。
- 递增部分:具体看每一行,第一行有3个空格,一个星。第二行有2个空格,3个星。第三行有1个空格,5个星。第四行有没有空格,7个星。
- 递减部分:也是具体看每一行,第一行有1个空格,3个星。第二行有2个空格,3个星。第三行有3个空格,1个星。
空格的规律:每一行为i,那么空格数位i星的规律:每一行为i,那么星的数量为
(7-2*i)
,当i为1时保证有5个星。
int main()
{
//递增部分四层
for(int i = 1;i<=4;i++)
{
for(int j = 1;j<=4-i;j++)
{
printf(" ");
}
//*数
for(int k = 1;k<=2*i-1;k++)
{
printf("*");
}
}
printf("\n");
//递减部分三层
for(int i = 1;i<=3;i++)
{
for(int j= 1;j<=i;j++)
{
printf(" ");
}
//*
for(int k = 1;k<=7-2*i;k++)
{
printf("*");
}
printf("\n");
}
}
5.打印杨辉三角
思路:
说明:
杨辉三角的每个边都为1
中间的每一个是它对应的左上角的值和正上方的值之和。
- 定义一个10×10的二维数组,将斜面和每一行中第一个元素都赋值为1
- 其他元素根据1中定义的值做加法得到。
例如:int arrTem[10][10];arrTem[2][1] = arrTem[1][0]+arrTem[1][1];
int main()
{
int arrTem[10][10] = {};
for(int i = 0;i<10;i++)
{
//和99乘法表类似
for(int j = 0;j<=i;j++)
{
if((j == 0)||(j == i))
{
arrTem[i][j] = 1;
printf("%4d",arrTem[i][j]);
}
else{
//每一个值是它对应的左上角的值和正上方值的和
arrTem[i][j] = arrTem[i-1][j-1] + arrTem[i-1][j];
printf("%4d",arrTem[i][j]);
}
}
printf("\n");
}
return 0;
}