c语言问题,求助大家

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:41:29
题目:建立一个三行四列的二维数组,找出数组中的最大元素和最小元素的值,以及所在的行列号。看看下面的程序哪有问题:
#include"stdio.h"
void main()
{
int b[3][4];
int *p,i,j,max,maxi,maxj,min,mini,minj;
p=b;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++,p++)
scanf("%d",p);
}
max=b[0][0];
min=b[0][0];
for(p=b,i=0;i<3;i++)
{
for(j=0;j<4;j++,p++)
if(*p>max)
max=*p;maxi=i;maxj=j;
if(*p<min)
min=*p;mini=i;minj=j;
}
printf("max=%4d,from %d row %d col.\n",max,maxi,maxj);
printf("min=%4d,from %d row %d col.\n",min,mini,minj);
}
问题1:为什么运行不出行列号?问题2:如何在scanf输入12个数之后,先用printf输出个3行4列的数组?接着输出最大最小值,我试过,没成功。用指针到不会了。。搞笑。问题3:在max,min后的for循环里是不是一定要i=0,i<3;j=0j<4,和3行4列对应,我试着改成i=0,i<4;j=0,j<5运行结果就不对了。什么原因???

难道你写if()和for()都不加{}么?
for(p=b,i=0;i<3;i++)
{
for(j=0;j<4;j++,p++)
{if(*p>max)
{
max=*p;maxi=i;maxj=j;
}
if(*p<=min)
{
min=*p;mini=i;minj=j;
printf("min=%4d \n",i);
}
}
}