关于c语言 指针,函数调用的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:11:03
题目要求:指针的作业题。一个班有4个学生,五门课,求1:第一门课的平均分 2:找出平均成绩在90分以上,或全部课程成绩在85分以上的学生。用函数实现 ;
我的程序如下:

程序代码:
#include "stdio.h"
#include "conio.h"
#include "string.h"

float top(float(*p)[5],int n)
{
float sum=0,ave=0;
int i,j,a=0;
for(i=0;i<n;i++)
{ sum=0;
a=0;
for(j=0;j<n+1;j++)
{
if(*(*(p+i)+j)>=85) a++;
sum=sum+*(*(p+i)+j);}
ave=sum/(n+1);
if(ave>=90) printf("the student number ave>90 is:%d\n",i) ;
else if(ave<90&&a==5) printf("the student number>85 is:%d\n",i) ;
}

}

float average(float(*p)[5],int n)
{
int i,j=0;
float ave=0,sum=0;

for(i=0;i<n;i++)
sum=sum+*(*(p+i)+j);
ave=sum/n;
printf("average=%5.2f\n",ave);
}

main()
{<

你把top()和average()两个函数后加上return语句,就好了,可以返回任何一个数值,或者把两个函数的返回类型的那个float去掉,换做void就好了。

我用的是vc 6.0
改了一点可以运行成功。
#include "stdio.h"
#include "conio.h"
#include "string.h"

float top(float(*p)[5],int n)
{
float sum=0,ave=0;
int i,j,a=0;
for(i=0;i<n;i++)
{ sum=0;
a=0;
for(j=0;j<n+1;j++)
{
if(*(*(p+i)+j)>=85) a++;
sum=sum+*(*(p+i)+j);}
ave=sum/(n+1);
if(ave>=90) printf("the student number ave>90 is:%d\n",i) ;
else if(ave<90&&a==5) printf("the student number>85 is:%d\n",i) ;
}
return 1.0;
}

float average(float(*p)[5],int n)
{
int i,j=0;
float ave=0,sum=0;

for(i=0;i<n;i++)
sum=sum+*(*(p+i)+j);
ave=sum/n;
printf("average=%5.2f\n",ave);
r