某個同學的題目,寫了一下。
題目大概是這樣的:
編寫函數,求出二維數組主對角線、次對角線以及周邊元素之和。
要求:二維數組的行數、列數、數組元素在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);
}
某位同學,做人很重要啊!
