我的天那……我要炸裂了。其实你上一个程序还可以,现在这个真的……
1. 初始化a[18][3],只要写一个值就好了,剩余的会自动补全为0,当然你这么写也没错。
2. 输入每一行的数据的时候,接收数据的居然是a[j]?二维数组就变成了一维???
3. 相加的那一块for循环里,我就看不懂了。为什么有一个一维数组,为什么定义了外循环 i 但是没用上?还有就是内循环的判断条件为什么是i<3?肯定是写错了吧
4. 最后打印的a[n][3]是什么?总共的下标是0、1、2就这三列,不存在3这个下标呀,你这么写就超列的范围了!你的意思是不是要说总共的牌有几块是吧?那你就用个变量存一下!别放在数组了。
还是我给你个代码吧,就按照你写的改,你自己感觉下:#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, n, count = 0;
int a[18][3] = {0};
scanf("%d",&n);
if(n>=1 && n<18)
{
for(i=0; i<n; i++)
{
for(j=0; j<3; j++)
{
scanf("%d",&a[i][j]); // 这里写全,哪行哪列!
}
}
for(i=0; i<n; i++)
{
for(j=0; j<3; j++)
{
a[n][i]+=a[j][i];
}
count+=a[n][i]; // 放循环外,为什么?因为统计完那一列的全部才算得到这种牌的总数
}
printf("%d %d %d\n",a[n][0],a[n][1],a[n][2]);
printf("一共是 %d 个\n", count);
}
return 0;
}
|