来自C语言初学者的求助555,希望大神指点,真的非常感谢啦·!!
想请教一下为什么形参中最后的返回值return 为什么只能返回f,如果是改成return 0,只会统计90~100分之间的人数,其他分数段的人数输出结果则不会统计;
在最后主函数printf输出时为什么60分以下的最后输出要用定义的‘aver’?
我觉得几乎没有人会愿意照着图片抄一遍代码,你觉得呢?
问问题要把代码贴出来
本帖最后由 Uair梦云 于 2021-4-19 21:56 编辑
ave是求平均数?
可以先把printf的参数改一下:
printf("90~100的有%.0f个\n80~90的有%.0f个\n70~80的有%.0f个\n60~70的有%.0f个\n小于60的有%.0f个\n最大值为%.2f,最小值为%.2f,平均分%.2f",num1,num2,num3,num4,aver,max(n,m),min(n,m),ave(n,m));
aver没有错,虽然 num5 更直观 本帖最后由 Uair梦云 于 2021-4-19 21:56 编辑
请输入学生的人数(0~100):5
请输入每个学生的成绩:23
25
32
98
99
90~100的有2个
80~90的有0个
70~80的有0个
60~70的有0个
小于60的有3个
最大值为99.00,最小值为23.00,平均分55.40
请输入学生的人数(0~100):5
请输入每个学生的成绩:20
25
25.5
98.5
99
90~100的有2个
80~90的有0个
70~80的有0个
60~70的有0个
小于60的有3个
最大值为99.00,最小值为20.00,平均分53.60 Uair梦云 发表于 2021-4-19 21:48
ave是求平均数?
可以先把printf的参数改一下:
printf("90~100的有%.0f个\n80~90的有%.0f个\n70~80的 ...
这个题目用的是extern,意思就是以多文件的形式,主函数调用外部函数输出结果,那个aver是主函数中定义的,主函数如下
main()
{
extern float app(float a[],int n);
extern float ass(float a[],int n);
extern float add(float a[],int n);
float n,aver;
int i,m;
printf("请输入学生的人数:");
scanf("%d",&m);
printf("请输入每个学生的成绩:");
for(i=0;i<m;i++)
scanf("%f",&n);
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),ass(n,m),add(n,m));
} 人造人 发表于 2021-4-19 19:39
我觉得几乎没有人会愿意照着图片抄一遍代码,你觉得呢?
问问题要把代码贴出来
抱歉啊哈哈哈。第一次在鱼C论坛上发表问题{:10_254:}
代码如下
#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>=90&&m<=100)
num1=num1+1;
else if(m>=80&&m<90)
num2=num2+1;
else if(m>=70&&m<80)
num3=num3+1;
else if(m>=60&&m<70)
num4=num4+1;
else if(m<60)
num5=num5+1;
}
return num5;
}
main()
{
extern float app(float a[],int n);
extern float ass(float a[],int n);
extern float add(float a[],int n);
float n,aver;
int i,m;
printf("请输入学生的人数:");
scanf("%d",&m);
printf("请输入每个学生的成绩:");
for(i=0;i<m;i++)
scanf("%f",&n);
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),ass(n,m),add(n,m));
}
extern float add(float a[],int n)
{
int i;
float min=a;
for(i=1;i<n;i++)
if(min>a)
min=a;
return min;
}
extern float ass(float a[],int n)
{
int i;
float ave,sum=a;
for(i=1;i<n;i++)
sum=sum+a;
ave=sum/n;
return ave;
}
extern float app(float a[],int n)
{
int i;
float max=a;
for(i=1;i<n;i++)
if(max<a)
max=a;
return max;
} 本帖最后由 Uair梦云 于 2021-4-20 12:15 编辑
Cn1973 发表于 2021-4-20 09:35
这个题目用的是extern,意思就是以多文件的形式,主函数调用外部函数输出结果,那个aver是主函数中定义的 ...
习惯用 include 载入的文件,所以不太会extern,感觉有点鸡肋{:5_109:}
a,m,n 是数组在代码中出现太多的 a,m,n 写成 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>=90&&m<=100)
num1=num1+1;
else if(m>=80&&m<90)
num2=num2+1;
else if(m>=70&&m<80)
num3=num3+1;
else if(m>=60&&m<70)
num4=num4+1;
else if(m<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,aver;
int i,m;
printf("请输入学生的人数:");
scanf("%d",&m);
for(i=0;i<m;i++)
{
do //增加判断循环
{
printf("请输入第%d个学生的成绩:",i+1); //没有第0个学生一说吧
scanf("%f",&n);
if(n>100&&n<0==0)
{
printf("错误,试卷分数应该在满分100分,白卷0分之间(包含100分和0分)\n"); //这里就是一个 报错信息 提示重新输入的
}
}while(n>100&&n<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)
{
min=a;
}
}
return min;
}
extern float ass(float a[],int n)
{
int i;
float ave,sum=0.0;
for(i=0;i<n;i++)
{
sum+=a;
}
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)
{
max=a;
}
}
return max;
} 第一个问题我没看懂,不过不会出你说的那种问题,其实num1,num2,num3,num4,num5可以定义为int类型啊,第二个那个不就是返回的小于60分的么,你也可以用num5输出啊!
页:
[1]