p8
有些的结论需要直接记住
目录
矩阵转置
主对角线和次对角线
下三角和上三角(一般是让求和)
下三角
上三角
杨辉三角
矩阵转置
不是方阵 需要用到第二个二维数组
b[i][j]=a[i][j]
是方阵 方法1 借助第二个二维数组,同上
方法2 下三角换即可(是方阵的话一般题目都是让你用第二个方法)
void main() {int i, j,temp, arr[4][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} };for (i = 0; i < 4; i++) {for (j = 0; j < 4; j++) {printf("%4d", arr[i][j]);}printf("\n");}//开始转置for (i = 0; i < 4; i++) {for (j = 0; j <= i; j++) {temp = arr[i][j];arr[i][j] = arr[j][i];arr[j][i] = temp;}}//转置后for (i = 0; i < 4; i++) {for (j = 0; j < 4; j++) {printf("%4d", arr[i][j]);}printf("\n");}}
主对角线和次对角线
主对角线: i==j
次对角线 : i+j==数组维度-1
void main() {int i, j, arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} }, sum1 = 0,sum2=0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {if (i == j) sum1 += arr[i][j];//主对角线和if (i + j == 2) sum2 += arr[i][j];//次对角线和}}printf("%4d%4d", sum1, sum2);}
下三角和上三角(一般是让求和)
下三角
void main() {//下三角int i, j, arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };for (i = 0; i < 3; i++) {for (j = 0; j <= i; j++)printf("%4d", arr[i][j]);printf("\n");}}
上三角
void main() {//上三角int i, j, arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };for (i = 0; i = 0; j--)printf("%4d", arr[i][j]);printf("\n");}}
40
杨辉三角
第0列和主对角线都是1 ,其余的元素是上一行本列的元素 + 上一行,列-1的元素
列如:打印杨辉三角形(要求打印出10行)
void main() {int arr[10][10] = {0}, i, j;for (i = 0; i < 10; i++) {arr[i][0] = 1;//第一列全部为1arr[i][i] = 1;//主对角线}for (i = 2; i < 10; i++) {for (j = 1; j < i; j++) {arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}for (i = 0; i < 10; i++) {for (j = 0; j <=i; j++) {printf("%d\t", arr[i][j]);}printf("\n");}}