要读取一个5*5的二维数组,首先应该定义一个二维数组并要将之初始化赋值。因为需要读取这一数组,就需要利用一个二重循环。将行号确定,列号改变,在遍历列号时再其后加上换行,之后就可以在终端打印出数组了。
要求显示每行每列的和,就要定义两个整型的变量来存放和的值,就还需要两个二重循环。若是用i表示行,j表示列,那么算每行的和就是在循环中保证i不变时,j变化;而算每列的和是保证j不变,i变化。
源程序如下:
#include <stdio.h>
int main()
{
int a[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int i;
int j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf ("%3d",a[i][j]);
}
printf ("\n");
}
printf ("\n");
for (i = 0; i < 5; i++)
{
int hangs = 0;
for (j = 0; j < 5; j++)
{
hangs = hangs + a[i][j];
}
printf ("第%d行的和为:%d\n",i+1,hangs);
}
printf ("\n");
for (i = 0; i < 5; i++)
{
int lies = 0;
for (j = 0; j < 5; j++)
{
lies = lies + a[j][i];
}
printf ("第%d列的和为:%d\n",i+1,lies);
}
return 0;
}
我一开始运行时程序总是无限的运行下去,在重新查看程序后才发现是我误把循环中的i < 5写成了i = 5,运行时就总是显示第6行/列的值。然而明明我心里想的是对的,敲出来就不对了,这就提醒我要高度集中的敲程序,要不然程序很长时更不容易发现!