题目:
定义一个3行3列的二维int数组,从控制台输入前三个元素的值,要求第一行的元素是1,3,5.
剩下的元素分别是该元素所在这一列的正上方的元素的3倍.打印这个二维数组从左上角到右下角这条对角线上元素的和.
如下所示:
//1, 3, 5
//3, 9, 15
//9, 27, 45
#include <stdio.h>
int main()
{
//定义一个3行3列的二维int数组
int arr[3][3] = {0};
//为数组的前三个元素即第一行元素赋值为1,3,5
for(int i = 0; i < 3; i++)
{
printf("请输入第%d个数: ", i+1);
scanf("%d", &arr[0]);
}
//为行下标为1的元素赋值,值分别是其对应的下标为0的一行列下标相同的元素的三倍
//为行下标为2的元素赋值,值分别是其对应的下标为1的一行列下标相同的元素的三倍
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 3; j++)
{
arr[i+1][j] = arr[j] * 3;
}
}
//遍历数组
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
printf("%d\t", arr[j]);
}
printf("\n");
}
//打印这个二维数组从左上角到右下角这条对角线上元素的和
//声明一个变量用来存储累加和
int sum = 0;
//观察得出从左上角到右下角这条对角线上元素的行数恰好等于列数
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
if(i == j)
sum += arr[j];
}
}
printf("sum = %d\n", sum);
return 0;
} |
|