求出二維陣列主對角線、次對角線以及周邊元素之和
阿新 • • 發佈:2020-11-16
某個同學的題目,寫了一下。
題目大概是這樣的:
編寫函式,求出二維陣列主對角線、次對角線以及周邊元素之和。
要求:二維陣列的行數、列數、陣列元素在main函式中由鍵盤輸入。
#include <stdio.h> int main() { int row,col; printf("請輸入“行數”和“列數”:"); scanf("%d,%d",&row,&col); printf("請為%d*%d陣列賦值:\n",row,col); int arr[row][col]; for(int i = 0; i < row; i++) { for(int j = 0; j < col; j++) { printf("當前[%d,%d]:",j,i); scanf("%d",&arr[j][i]); } } int count = row > col ? col : row; int xSpeed = (row - 0)/count; int ySpeed = (col - 0)/count; printf("X軸每次遞增%d個下標\n",xSpeed); printf("Y軸每次遞增%d個下標\n",ySpeed); //這裡要考慮對角線不標準情況,比如3*4的矩形 int numA = 0; int x=0,y=0; for(int i = 0; i < count; i++) { printf("%d,%d\n",x,y); numA += arr[x][y]; x+=xSpeed; y+=ySpeed; //這裡要考慮對角線不標準情況,比如3*4的矩形 //對角線的最後一位可能不是右下角的座標,直接強制指向右下角座標 if(x == col-1 && y != row-1 || x != col-1 && y == row-1) { x = row-1; y = col -1; } } printf("主對角線之和為:%d\n",numA); int numB = 0; x = col-1; y = 0; for(int i = 0; i < count; i++) { printf("%d,%d\n",x,y); numB += arr[x][y]; x-=xSpeed; y+=ySpeed; //這裡要考慮對角線不標準情況,比如3*4的矩形 //對角線的最後一位可能不是左下角的座標,直接強制指向左下角座標 if(x == 0 && y != row-1 || x != 0 && y == row-1) { x = 0; y = row -1; } } printf("次對角線之和為:%d\n",numB); int numC=0; for (int i =0;i < row;i ++) { for (int j= 0; j < col; j++) { if(i==0 || j == 0 || i == row-1 || j == col -1) { numC += arr[i][j]; } } } printf("周邊長度之和:%d\n",numC); }
某位同學,做人很重要啊!