今天复习到二维数组,感觉这道题很典型所以拿来和大家分享分享。
从键盘上输入矩阵的阶数n(n<=14), 矩阵中元素的值等于其位置的行数和列数之和的n倍(行列的值从0开始计数),如n=3时,矩阵为
0 3 6
3 6 9
6 9 12
先输出该矩阵(显示时每个数宽度为4、右对齐),然后计算输出sum1和sum2的值:sum1为矩阵中所有不靠边元素之和、sum2为矩阵的一条对角线元素之和。
以下是题解:
#include <stdio.h>
int main()
{
int i, j, n, sum1 = 0, sum2 = 0;
int array[15][15];//定义一个二维数组
printf("Input:\nPlease Enter n:\n");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
array[i][j] = (i + j) * n;//矩阵中每位数的大小
}
}
for (i = 1; i < n - 1; i++)//i和j从1开始,因为sum1为矩阵中所有不靠边元素之和
{
for (j = 1; j < n - 1; j++)
{
sum1 += array[i][j];
}
}
for (i = 0; i < n; i++)//sum2为矩阵的一条对角线元素之和
{
sum2 += array[i][i];
}
printf("Output:\n");
for (i = 0; i < n; i++)//for的二重循环,打印出矩形的模型。
{
for (j = 0; j < n; j++)
{
printf("%4d", array[i][j]);
}
printf("\n");
}
printf("sum1=%d\nsum2=%d\n", sum1, sum2);
return 0;
}
在这里建议大家for 分开写,避免绕晕了。
让后呢,如果有小伙伴对二重for循环这种不是挺了解,我收集了一些大佬整理的很好的在下面,需要的伙伴们可以去看看,或许对你有帮助。
https://blog.csdn.net/weixin_73889628/article/details/130346271