#include
int main()
{
int arr[5][6];
int i,j,max,min,sum,a,b,c,d,e;
float ave;
printf("Input 30 numbers:\n");
for(i=0;i<5;i++)
for(j=0;j<6;j++)
scanf("%d",&arr[i][j]);//此处为srr[i][j],你写成srr[5][6]就成了为crr第6行第七列赋值了,不但错误,更是越界了!
printf("\n");
min=max=arr[0][0];//将最大值与最小值都初始化为第一个元素
a=b=c=d=0;//下标也要初始化!
for(i=0;i<5;i++)
for(j=0;j<6;j++)
{
if(max{
max=arr[i][j];
a=i;
b=j;
}
if(min>arr[i][j])
{
min=arr[i][j];
c=i;
d=j;
}
}
printf("max=arr[%d][%d]=%d\n",a,b,max);
printf("min=arr[%d][%d]=%d\n",c,d,min);
sum=0;
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
sum+=arr[i][j];
e=i;
ave=sum/6.0;//写成6.0使得sum提升到浮点型
printf("ave=arr[%d]=%f\n",e,ave);
}
return 0;
}
楼主基本没有大错误,只是不够仔细,用来保存特定值的变量使用前一定要初始化,如本例中的最大值,最小值,下标,都是必须初始化的!
整型与整型运算会得到整型,1/2=0,5/4=1;系统会舍去小数部分。只要将其中一个提升至浮点型即可,如1.0/2,5/4.0,如果是两个整型变量,可以写成(float)a/b,即可使得得到浮点型结果!
2013 5 25 7:05
1L
耗时 4min
第七行scanf("%d",&arr[5][6]);这句就有问题了,首先应改为scanf("%d",&arr[i][j]);还有其他错误,修改后:
#include
int main()
{
int arr[5][6];
int i,j,max,min,sum,a=0,b=0;
float ave;
printf("Input 30 numbers:\n");
for(i=0;i<5;i++)
for(j=0;j<6;j++)
{
scanf("%d",&arr[i][j]);
if(j==5)
printf("\n"); }
max=arr[0][0];
for(i=0;i<5;i++)
for(j=0;j<6;j++)
if(max
max=arr[i][j];
a=i;
b=j; }
else ;
printf("max=arr[%d][%d]=%d\n",a,b,max);
a=0,b=0;
min=arr[0][0];
for(i=0;i<5;i++)
for(j=0;j<6;j++)
if(min>arr[i][j])
{
min=arr[i][j];
a=i;
b=j; }
else ;
printf("min=arr[%d][%d]=%d\n",a,b,min);
for(i=0;i<5;i++)
{sum=0;
for(j=0;j<6;j++)
{
sum+=arr[i][j];
if(j==5)
{
ave=(float)sum/6;
printf("ave=arr[%d]=%f\n",i,ave);
}
}
}
return 0;
}
scanf("%d",&arr[5][6]);
应该改为:
scanf("%d",&arr[i][j]);