这是一道C语言考试题,可是我掌握的不好饿。。
下列程序的功能是统计某班30个学生的平均成绩由函数值返回,同时将低于平均分的学生人数存放在形参num所指向的存储单元中。请改正程序中的错误,使它能得出正确的结果。#inc...
下列程序的功能是统计某班30个学生的平均成绩由函数值返回,同时将低于平均分的学生人数存放在形参num所指向的存储单元中。请改正程序中的错误,使它能得出正确的结果。
#include <stdio.h>
void average(float *score, int n, int *num) /* error 4*/
{ float ave,sum=0.0;
int count=0,k,j;
for(k=0;k<n;k++) sum+=score[k];
ave=sum%n; /* error 5*/
for(j=0;j<n;j++); /* error 6*/
if(score[j]<ave) count++;
*num=&count; /* error 7*/
return; /* error 8*/
}
void main( )
{ float score[30],num;
int k;
printf("\nPlease enter score: \n");
for(k=0;k<30;k++) scanf("%d",score+k); /* error 9*/
printf("aver=%f\n", average(score, 30, num));/*error 10*/
printf("num = %d\n", num);
} 展开
#include <stdio.h>
void average(float *score, int n, int *num) /* error 4*/
{ float ave,sum=0.0;
int count=0,k,j;
for(k=0;k<n;k++) sum+=score[k];
ave=sum%n; /* error 5*/
for(j=0;j<n;j++); /* error 6*/
if(score[j]<ave) count++;
*num=&count; /* error 7*/
return; /* error 8*/
}
void main( )
{ float score[30],num;
int k;
printf("\nPlease enter score: \n");
for(k=0;k<30;k++) scanf("%d",score+k); /* error 9*/
printf("aver=%f\n", average(score, 30, num));/*error 10*/
printf("num = %d\n", num);
} 展开
2个回答
展开全部
#include <stdio.h>
float average(float *score, int n, int *num) /* error 4*/ //函数应有返回值,因为main中printf输出
{ float ave,sum=0.0;
int count=0,k,j;
for(k=0;k<n;k++) sum+=score[k];
ave=sum/n; /* error 5*/ //%为取余,应该用/
for(j=0;j<n;j++) /* error 6*/ //for后面;错误
if(score[j]<ave) count++;
*num=count; /* error 7*/ *num为num地址对应的值,为int型,去掉&
return ave; /* error 8*/ //返回ave值
}
void main( )
{ float score[30],num;
int k;
printf("\nPlease enter score: \n");
for(k=0;k<30;k++) scanf("%f",score+k); /* error 9*/ score数组为float型
printf("aver=%f\n", average(score, 30, &num));/*error 10*/ average的num为用指针的值传递,num为指针类型,加 &
printf("num = %d\n", num);
}
float average(float *score, int n, int *num) /* error 4*/ //函数应有返回值,因为main中printf输出
{ float ave,sum=0.0;
int count=0,k,j;
for(k=0;k<n;k++) sum+=score[k];
ave=sum/n; /* error 5*/ //%为取余,应该用/
for(j=0;j<n;j++) /* error 6*/ //for后面;错误
if(score[j]<ave) count++;
*num=count; /* error 7*/ *num为num地址对应的值,为int型,去掉&
return ave; /* error 8*/ //返回ave值
}
void main( )
{ float score[30],num;
int k;
printf("\nPlease enter score: \n");
for(k=0;k<30;k++) scanf("%f",score+k); /* error 9*/ score数组为float型
printf("aver=%f\n", average(score, 30, &num));/*error 10*/ average的num为用指针的值传递,num为指针类型,加 &
printf("num = %d\n", num);
}
展开全部
改好了
#include <stdio.h>
float average(float *score, int n, int *num) /* error 4*/
{
float ave = 0.0f,sum = 0.0f;
int count=0,k,j;
for(k=0;k<n;k++) sum+=score[k];
ave = sum / n; /* error 5*/
for(j=0;j<n;j++) /* error 6*/
if(score[j]<ave) count++;
*num = count; /* error 7*/
return ave; /* error 8*/
}
void main( )
{
float score[30] = {0};
int num;
int k;
printf("Please enter score: \n");
for(k=0;k<3;k++) scanf("%f",&score[k]); /* error 9*/
printf("aver=%f\n", average(score, 3, &num));/*error 10*/
printf("num = %d\n", num);
}
#include <stdio.h>
float average(float *score, int n, int *num) /* error 4*/
{
float ave = 0.0f,sum = 0.0f;
int count=0,k,j;
for(k=0;k<n;k++) sum+=score[k];
ave = sum / n; /* error 5*/
for(j=0;j<n;j++) /* error 6*/
if(score[j]<ave) count++;
*num = count; /* error 7*/
return ave; /* error 8*/
}
void main( )
{
float score[30] = {0};
int num;
int k;
printf("Please enter score: \n");
for(k=0;k<3;k++) scanf("%f",&score[k]); /* error 9*/
printf("aver=%f\n", average(score, 3, &num));/*error 10*/
printf("num = %d\n", num);
}
追问
你写的也很好,不过不如下面的详细,同样感谢。谢谢
追答
没写注释了~偷懒了~呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询