求出二維數組主對角線、次對角線以及周邊元素之和


某個同學的題目,寫了一下。

題目大概是這樣的:

編寫函數,求出二維數組主對角線、次對角線以及周邊元素之和。

要求:二維數組的行數、列數、數組元素在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);
}

  某位同學,做人很重要啊!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM