求解一道比较基础的编程题目,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:54:14
求某门课程的最高分,最低分和平均分。
以下是我编的程序,最高分和平均分的运行结果正确,但是最低分的运行结果总是零,不知道是哪里出了问题,请知道的人指点,非常感谢!
#include<stdio.h>
float average(float *p,int n)
{
int i,m,k;
float sum=0;
float *p1,*p2,*p3;
*p1=*p2=*p;
sum=*p3;
for(i=0;i<n;i++)
{
if(*(p+i+1)>*p1) *p1=*(p+i+1);
else if(*(p+i+1)<*p2) *p2=*(p+i+1);
*p3+=*(p+i);
}

*(p+10)=*p1;
*(p+11)=*p2;
*(p+12)=*p3;

return(sum/n);
}
main()
{
int i;float ave,score[13];
printf("Please input scores of students:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
ave=average(score,10);
printf("high=%6.2f\nlow=%6.2f\naverage=%6.2f\n",score[10],score[11],score[12]/10);
getch();
}

#include<stdio.h>
#include <conio.h>
float average(float *p,int n)
{
int i;
float sum=0;
float p1,p2,p3;
p1=*p;
p2=*p;
p3=0;
for(i=0;i<n;i++)
{
if(*(p+i)>p1) p1=*(p+i);
if(*(p+i)<p2) p2=*(p+i);
p3+=*(p+i);
}

*(p+10)=p1;
*(p+11)=p2;
*(p+12)=p3;

return(sum/n);
}
main()
{
int i;float ave,score[13];
printf("Please input scores of students:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
ave=average(score,10);
printf("high=%6.2f\nlow=%6.2f\naverage=%6.2f\n",score[10],score[11],score[12]/10);
getch();
}

没必要用那么多指针吧。