【项目2- 成绩处理】
在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:
在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:
(1)输入小组人数及成绩,要保证成绩在0-100之间;
代码:
/*成绩处理*/
#include <stdio.h>
void Score_1(float s[],int a);
int main()
{
int Team_Number;
float Score[100];
printf("请输入小组人数:");
scanf("%d",&Team_Number);
Score_1(Score,Team_Number);
return 0;
}
void Score_1(float s[],int a)
{
int i=0,fb;
float m;
printf("请输入每位组员的成绩(0-100)\n");
do
{
printf("请输入第%d位组员成绩:",i+1);
fflush(stdin);
fb=scanf("%f",&m);
if(fb!=0&&m>=0&&m<=100)
{
s[i]=m;
}
else
{
printf("输入错误,请重新输入\n");
continue;
}
i++;
}while(i<=(a-1));
}
(2)输出该小组的最高成绩、最低成绩、平均成绩;
代码:
/*成绩处理*/
#include <stdio.h>
#include <windows.h>
void Score_1(float s[],int a);
void Score_2(float s[],int a);
int main()
{
int Team_Number;
float Score[100];
printf("请输入小组人数:");
scanf("%d",&Team_Number);
Score_1(Score,Team_Number);
Score_2(Score,Team_Number);
return 0;
}
void Score_1(float s[],int a)
{
int i=0,fb;
float m;
printf("请输入每位组员的成绩(0-100)\n");
do
{
printf("请输入第%d位组员成绩:",i+1);
fflush(stdin);
fb=scanf("%f",&m);
if(fb!=0&&m>=0&&m<=100)
{
s[i]=m;
}
else
{
printf("输入错误,请重新输入\n");
continue;
}
i++;
}while(i<=(a-1));
}
void Score_2(float s[],int a)
{
int i;
float m1=-1,m2=101,sum=0;
for(i=0;i<a;i++)
{
if(s[i]>m1)
m1=s[i];
if(s[i]<m2)
m2=s[i];
sum+=s[i];
}
printf("正在计算该组分数,请稍后------------------\n");
Sleep(1000);
printf("该组最高分为%.2f\n",m1);
printf("该组最低分为%.2f\n",m2);
printf("该组平均分为%.2f\n",sum/a);
}
(3)输出考得最高成绩和最低成绩的同学的人数;
代码:
/*成绩处理*/
#include <stdio.h>
#include <windows.h>
void Score_1(float s[],int a);
void Score_2(float s[],int a);
void Score_3(float g[],int a,float b,float c);
int main()
{
int Team_Number;
float Score[100];
printf("请输入小组人数:");
scanf("%d",&Team_Number);
Score_1(Score,Team_Number);
Score_2(Score,Team_Number);
return 0;
}
void Score_1(float s[],int a)
{
int i=0,fb;
float m;
printf("请输入每位组员的成绩(0-100)\n");
do
{
printf("请输入第%d位组员成绩:",i+1);
fflush(stdin);
fb=scanf("%f",&m);
if(fb!=0&&m>=0&&m<=100)
{
s[i]=m;
}
else
{
printf("输入错误,请重新输入\n");
continue;
}
i++;
}while(i<=(a-1));
}
void Score_2(float s[],int a)
{
int i;
float m1=-1,m2=101,sum=0;
for(i=0;i<a;i++)
{
if(s[i]>m1)
m1=s[i];
if(s[i]<m2)
m2=s[i];
sum+=s[i];
}
printf("正在计算该组分数,请稍后------------------\n");
Sleep(1000);
Score_3(s,a,m1,m2);
printf("该组平均分为%.2f\n",sum/a);
}
void Score_3(float g[],int a,float b,float c)
{
int i,d=0,f=0;
for(i=0;i<a;i++)
{
if(abs(g[i]-c)<1e-7)
d++;
if((abs(g[i]-c)<1e-7)
f++;
}
printf("本次测验一共有%d个组员取得最高分%.2f\n",d,b);
printf("本次测验一共有%d个组员取得最低分%.2f,这些同学希望再接再励\n",f,c);
}
(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。
代码:
/*成绩处理*/
#include <stdio.h>
#include <windows.h>
void Score_1(float s[],int a);
void Score_2(float s[],int a);
void Score_3(float g[],int a,float b,float c);
int main()
{
int Team_Number;
float Score[100];
printf("请输入小组人数:");
scanf("%d",&Team_Number);
Score_1(Score,Team_Number);
Score_2(Score,Team_Number);
return 0;
}
void Score_1(float s[],int a)
{
int i=0,fb;
float m;
printf("请输入每位组员的成绩(0-100)\n");
do
{
printf("请输入第%d位组员成绩:",i+1);
fflush(stdin);
fb=scanf("%f",&m);
if(fb!=0&&m>=0&&m<=100)
{
s[i]=m;
}
else
{
printf("输入错误,请重新输入\n");
continue;
}
i++;
}while(i<=(a-1));
}
void Score_2(float s[],int a)
{
int i;
float m1=-1,m2=101,sum=0;
for(i=0;i<a;i++)
{
if(s[i]>m1)
m1=s[i];
if(s[i]<m2)
m2=s[i];
sum+=s[i];
}
printf("正在计算该组分数,请稍后------------------\n");
Sleep(1000);
Score_3(s,a,m1,m2);
printf("该组平均分为%.2f\n",sum/a);
}
void Score_3(float g[],int a,float b,float c)
{
int i,d=0,f=0;
for(i=0;i<a;i++)
{
if(abs(g[i]-b)<1e-7)
{
printf("恭喜学号为0000%d的同学取得最高分\n",i);
d++;
}
if(abs(g[i]-c)<1e-7)
{
printf("学号为0000%d的同学取得最低分\n",i);
f++;
}
}
printf("本次测验一共有%d个组员取得最高分%.2f\n",d,b);
printf("本次测验一共有%d个组员取得最低分%.2f,这些同学希望再接再励\n",f,c);
}
(5)(选做)求出所有同学成绩的标准偏差
这一题有参考图片 我们照着图输出
代码:
/*成绩处理*/
#include <stdio.h>
#include <math.h>
#include <windows.h>
void Score_1(float s[],int a);
void Score_2(float s[],int a);
void Score_3(float g[],int a,float b,float c);
void Score_4(int s[],int d);
void Score_5(float s[],int a);
int main()
{
int Team_Number;
float Score[100];
printf("请输入小组人数:");
scanf("%d",&Team_Number);
Score_1(Score,Team_Number);
Score_2(Score,Team_Number);
return 0;
}
void Score_1(float s[],int a)//输入成绩,并保存到数组中
{
int i=0,fb;
float m;
printf("请输入学生成绩\n");
do
{
printf("输入第 %d 位同学的成绩:",i+1);
fflush(stdin);
fb=scanf("%f",&m);
if(fb!=0&&m>=0&&m<=100)
{
s[i]=m;
}
else
{
printf("输入错误,请重新输入!\n");
continue;
}
i++;
}while(i<a);
}
float sum=0;
void Score_2(float s[],int a)//求最高最低平均成绩,并输出学号
{
int i;
float m1=-1,m2=101;
for(i=0;i<a;i++)
{
if(s[i]>m1)
m1=s[i];
if(s[i]<m2)
m2=s[i];
sum+=s[i];
}
printf("最高成绩为%.2f\n",m1);
printf("最低成绩为%.2f\n",m2);
printf("平均分为%.2f\n",sum/a);
Score_3(s,a,m1,m2);//输出最高分和学号
}
void Score_3(float g[],int a,float b,float c)//求最高分和学号
{
int i,j,n;
int p[20],r[20];
for(i=0,j=0,n=0;i<a;i++)
{
if(abs(g[i]-b)<1e-7)
{
p[j]=i;
j++;
}
if(abs(g[i]-c)<1e-7)
{
r[n]=i;
n++;
}
}
printf("取得最高成绩%.2f分的共有%d个,他们的学号是:",b,j);
Score_4(p,j);
printf("取得最低成绩%.2f分的共有%d个,他们的学号是:",c,n);
Score_4(r,n);
Score_5(g,a);//输出标准偏差
}
void Score_4(int s[],int d)//输出学号
{
int i=0;
do
{
printf("%d ",s[i]);
i++;
}while(i<d);
printf("\n");
}
void Score_5(float s[],int a)//求标准偏差
{
int i;
float s1=0,s2;
for(i=0;i<a;i++)
{
s1+=pow((s[i]-sum/a),2);
}
s2=sqrt(s1/(a-1));
printf("标准偏差为%.2f",s2);
}
差点自己看不懂了 , 看了老师的代码 没用自定义函数 67行代码 我这里103行 略多,就当是复习复习再复习自定义函数了