您的位置:首页 > 其它

提高篇十六讲——项目2- 成绩处理

2017-04-09 13:08 204 查看
问题描述

【项目2- 成绩处理】

在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:

(1)输入小组人数及成绩,要保证成绩在0-100之间;

(2)输出该小组的最高成绩、最低成绩、平均成绩;

(3)输出考得最高成绩和最低成绩的同学的人数;

(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。

(5)(选做)求出所有同学成绩的标准偏差,标准偏差公式为

,其中为样本(即某同学成绩),

为均值(前面已经求出),N为样本数目;

程序代码

#include <stdio.h>
#include <math.h>
#define SIZE 100
/*
*csdn学院--2016级
*目的:让代码见证成长(作为一个初学的菜鸟,如
*大家有发现错误,欢迎指正!)
*文件名称:Myfun138.c
*作者:小臣小仁
*完成日期:2017年4月9日
*/
void Statistics(int [],int n);
int main()
{
int array[SIZE];
int i,student;
printf("小组共用多少名童鞋?");
scanf("%d",&student);
for(i=0;i<student;i++)
do
{
printf("输入第%d位童鞋的成绩:",i+1);
scanf("%d",&array[i]);
}while(array[i]<0||array[i]>100);
printf("\n");
Statistics(array,student);
return 0;
}
void Statistics(int array[],int n)
{
int i,j,k,l,m,y;
int num1=0,num2=0;
double aver,sum=0.0,sample=0.0;
int max,min;
max=array[0];
min=array[0];
for(i=0;i<n;i++)
{
if(array[i]>max)
max=array[i];
if(array[i]<min)
min=array[i];
sum+=array[i];
}
aver=sum/n;
printf(" 最高成绩为:%d 最低成绩为:%d 平均成绩为:%.3f\n",max,min,aver);
for(j=0;j<n;j++)
{
if(array[j]==max)
num1++;
else if(array[j]==min)
num2++;
}
printf(" 最高成绩有%d名,学号为:",num1);
for(k=0;k<n;k++)
if(array[k]==max)
printf(" %d",k+1);
printf("\n");

printf(" 最低成绩有%d名,学号为:",num2);
for(l=0;l<n;l++)
if(array[l]==min)
printf(" %d",l+1);
printf("\n");

for(m=0;m<n;m++)
{
y=array[m]-aver;
sample+=y*y;
}
printf(" 标准偏差为:%.4f\n",sqrt(sample/(n-1)));
}

输出结果





心得体会

[b]作为一个大学二的菜鸟,开始慢慢前进,多多少少感到有收获,由于水平有限,多多少少有错,望包涵

[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: