新手求助,各位老师们进来帮帮忙
每个学生输入四科成绩,输出每个学生最高成绩,运行结果不对,我也不知道哪错了,老师们帮忙看看
#include<stdio.h>c
main()
{
int a[3][4],max=0;
int i,j,(*p)[4];
for(i=1,p=a;p<a+3;i++,p++){
printf("请输入学生%d的各科成绩:",i);
for(j=0;j<4;j++){
scanf("%d",&(*p)[j]);
}
}
for(i=0;i<3;i++){
printf("学生%d的最高成绩为",i+1);
for(j=0;j<4;j++){
if(max<*(*(p+i)+j))
max=*(*(p+i)+j);
}
printf("%d\n",max);
max=0;
}
}
[解决办法]
max<*(*(p+i)+j)
第一个for循环已经将指针p改变,即指向了a[3];
第二个for循环直接就能用???
for(i=0;i<3;i++) 改成 for(i=0,p=a;i<3;i++)
[解决办法]
#include<stdio.h>
main()
{
int a[3][4],max=0;
int i,j,(*p)[4];
for(i=1,p=a;p<=a[3];i++,p++){
printf("请输入学生%d的各科成绩:",i);
for(j=0;j<4;j++){
scanf("%d",&(*p)[j]);
}
}
for(i=0;i<3;i++){
printf("学生%d的最高成绩为",i+1);
for(j=0,p=a;j<4;j++){ //p已改变,要重新赋值
if(max<*(*(p+i)+j))
max=*(*(p+i)+j);
}
printf("%d\n",max);
max=0;
}
}
[解决办法]
for(i=1,p=a;p<=a[3];i++,p++)
你的P++之后难道p还会指向a[1]吗?,p所指向的地址已被你改变了