|
发表于 2021-4-20 12:13:57
|
显示全部楼层
本帖最后由 Uair梦云 于 2021-4-20 12:15 编辑
习惯用 include 载入的文件,所以不太会extern,感觉有点鸡肋
a,m,n 是数组在代码中出现太多的 a[i],m[i],n[i] 写成 a,m,n
printf最后的 平均数ass 与 最小数add 搞反了
for(i=1...中 i 应该等于 0 ,数组的第一个元素为0
max min sum赋值为0.0,100.0,0.0更好
max肯定比0大,否则就是0,min 同理
统一i=0更直观 sum为0 相加即可,如果都是0,结果为0
由于分数上限为100分,下限为0,可以加一个报错判断:
#include<stdio.h>
float num1,num2,num3,num4,num5;
float a(float m[],int n)
{
int i;
num1=num2=num3=num4=num5=0;
for(i=0;i<n;i++)
{
if(m[i]>=90&&m[i]<=100)
num1=num1+1;
else if(m[i]>=80&&m[i]<90)
num2=num2+1;
else if(m[i]>=70&&m[i]<80)
num3=num3+1;
else if(m[i]>=60&&m[i]<70)
num4=num4+1;
else if(m[i]<60)
num5=num5+1;
}
return num5;
}
int main()
{
extern float app(float a[],int n);
extern float ass(float a[],int n);
extern float add(float a[],int n);
float n[100],aver;
int i,m;
printf("请输入学生的人数:");
scanf("%d",&m);
for(i=0;i<m;i++)
{
do //增加判断循环
{
printf("请输入第%d个学生的成绩:",i+1); //没有第0个学生一说吧
scanf("%f",&n[i]);
if(n[i]>100&&n[i]<0==0)
{
printf("错误,试卷分数应该在满分100分,白卷0分之间(包含100分和0分)\n"); //这里就是一个 报错信息 提示重新输入的
}
}while(n[i]>100&&n[i]<0==0);
}
aver=a(n,m);
printf("90~100的有%.0f个\n80~90的有%.0f个\n70~80的有%.0f个\n60~70的有%.0f个\n小于60的有%.0f个\n最大值为%.2f,最小值为%.2f,平均分为%.2f\n",num1,num2,num3,num4,aver,app(n,m),add(n,m),ass(n,m));
}
extern float add(float a[],int n)
{
int i;
float min=100.0;
for(i=0;i<n;i++)
{
if(min>a[i])
{
min=a[i];
}
}
return min;
}
extern float ass(float a[],int n)
{
int i;
float ave,sum=0.0;
for(i=0;i<n;i++)
{
sum+=a[i];
}
ave=sum/n;
return ave;
}
extern float app(float a[],int n)
{
int i;
float max=0.0;
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
}
}
return max;
} |
|