有一个4行5列的二维数组b,计算每一行的总和,并将此和顺序存放在一个长度为4的一维数组中

有一个4行5列的二维数组b,编写程序,计算每一行的总和,并将此和顺序存放在一个长度为4的一维数组中,最后按顺序输出该一维数组。
输入示例:
3 21 5 98 10
44 12 1 12 8
67 61 45 67 17
35 36 78 90 19
输出示例:
137 77 257 258
#include<stdio.h>
int main()
{
int i,j,b[4][5],a1=0,a2=0,a3=0,a4=0;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&b[i][j]);
while(i=0)
{
for(j=0;j<5;j++)
a1+=b[i][j];
break;

}
while(i=1)
{
for(j=0;j<5;j++)
a2+=b[i][j];
break;
}
while(i=2)
{
for(j=0;j<5;j++)
a3+=b[i][j];
break;
}
while(i=3)
{ for(j=0;j<5;j++)
a4+=b[i][j];
break;
}
printf("%d %d %d %d\n",a1,a2,a3,a4);
return 0;
}
为什么第一行的和一直求不出来为0

while(i=0){} 就等于 while(0){}; 也就是 循环条件永远为假 ,不进入循环体。
它只给你做了 一条赋值语句:i=0; 不执行循环体。
你可以不要while 循环,写 for(j=0;j<5;j++) a1+=b[0][j]; 就可以了。

这个程序你应当用:
int i,j,b[4][5],a[4];
for(i=0;i<4;i++) for(j=0;j<5;j++) scanf("%d",&b[i][j]);
for (i=0;i<4;i++){
a[i]=0;
for (j=0;j<5;j++) a[i]+=b[i][j];
}
printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);
温馨提示:答案为网友推荐,仅供参考
相似回答