一道C语言题,求大神帮帮忙

二、成绩处理在数组score中将要存储某小组C程序设计的成绩,请设计实现下面的各功能函数,main函数如下,组合成一个完整的应用:(1)输入小组人数及成绩,要保证成绩在0... 二、 成绩处理
在数组score中将要存储某小组C程序设计的成绩,请设计实现下面的各功能函数, main函数如下,组合成一个完整的应用:
(1)输入小组人数及成绩,要保证成绩在0-100之间;
(2)输出该小组的最高成绩
(3)输出该小组的最低成绩
(4)输出该小组的平均成绩;
(5)输出考得某个成绩的同学的人数(如果实参为最高分,即为最高分学生人数);
(6)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。
  (7)求出所有同学成绩的标准偏差,标准偏差公式:
     
  其中Xi为样本(即某同学成绩),N为样本数目

int main(void)
{
int score[50];
int num;
int max_score,min_score;
printf("小组共有多少名同学?");
scanf("%d",&num);
printf("\n请输入学生成绩:\n");
input_score(score, num);
max_score=get_max_score(score, num);
printf("\n最高成绩为:%d, 共有 %d 人",max_score,count(max_score,score, num ));
min_score=get_min_score(score, num);
printf("\n最低成绩为:%d, 共有 %d 人",min_score,count(min_score,score, num ));
printf("\n平均成绩为:%5.2f",get_avg_score(score, num));
printf("\n标准偏差为:%5.2f",get_stdev_score(score, num));
printf("\n获最高成绩的学生(学号)有:");
output_index(max_score,score, num);
printf("\n获最低成绩的学生(学号)有:");
output_index(min_score,score, num);
printf("\n" );
return 0;
}
展开
 我来答
百度网友5ddcbda
推荐于2016-12-01 · 超过30用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:53.3万
展开全部

运行效果如下(由于未给出“标准偏差公式”),所以标准偏差函数直接返回的0.

代码如下:

#include "stdio.h"

void input_score(int *score, int num)
{
int i;

for(i=0; i<num; i++)
{
printf("请输入学生[%d]的成绩:", i);
scanf("%d",&score[i]);
if(score[i] < 0 || score[i] > 100)
{
i--;
continue;
}
}
}

int get_max_score(int *score, int num)
{
int max = 0;
int i;

for(i=0; i<num; i++)
{
max = max > score[i] ? max : score[i];
}
return max;
}

int count(int max, int *score, int num)
{
int i;
int total = 0;

for(i=0; i<num; i++)
{
if(max == score[i])
{
total++;
}
}
return total;
}

int get_min_score(int *score, int num)
{
int min = 100;
int i;

for(i=0; i<num; i++)
{
min = min < score[i] ? min : score[i];
}
return min;
}

float get_avg_score(int *score, int num)
{
int total;
float avg;
int i;

total = 0;
for(i=0; i<num; i++)
{
total += score[i];
}
avg = (float)total/(float)num;
return avg;
}

float get_stdev_score(int *score, int num)
{
return 0;
}

void output_index(int same, int *score, int num)
{
int i;

for(i=0; i<num; i++)
{
if(same == score[i])
{
printf("%d ", i);
}
}
return ;
}



int main(void)  
{  
int score[50];
int num;      
int max_score,min_score;  
printf("小组共有多少名同学?");  
scanf("%d",&num);  
printf("\n请输入学生成绩:\n");  
input_score(score, num);   
max_score=get_max_score(score, num);
printf("\n最高成绩为:%d, 共有 %d 人",max_score,count(max_score,score, num ));
min_score=get_min_score(score, num);  
printf("\n最低成绩为:%d, 共有 %d 人",min_score,count(min_score,score, num ));  
printf("\n平均成绩为:%5.2f",get_avg_score(score, num));  
printf("\n标准偏差为:%5.2f",get_stdev_score(score, num));  
printf("\n获最高成绩的学生(学号)有:");  
output_index(max_score,score, num);  
printf("\n获最低成绩的学生(学号)有:");  
output_index(min_score,score, num);  
printf("\n" );
return 0;  
}
水上漂汤
2014-12-09 · TA获得超过1万个赞
知道大有可为答主
回答量:1830
采纳率:71%
帮助的人:1413万
展开全部
#include <math.h>

void input_score(int score[], int num)
{
    for (int i = 0; i < num; ++i)
        scanf("%d ", &score[i]);
}

int get_max_score(int score[], int num)
{
    int max_score = score[0];
    for (int i = 1; i < num; ++i)
        if (score[i] > max_score)
            max_score = score[i];
    return max_score;
}

int get_min_score(int score[], int num)
{
    int min_score = score[0];
    for (int i = 1; i < num; ++i)
        if (score[i] < min_score)
            min_score = score[i];
    return min_score;
}

int count(int Score, int score[], int num)
{
    int cnt = 0;
    for (int i = 0; i < num; ++i)
        if (score[i] == Score)
            ++cnt;
    return cnt;
}

float get_avg_score(int score[], int num)
{
    float sum = 0;
    for (int i = 0; i < num; ++i)
        sum += score[i];
    return sum/num;
}

void output_index(int Score, int score[], int num)
{
    for (int i = 0; i < num; ++i)
        if (score[i] == Score)
            printf("%d ", i);
    printf("\n");

}

float get_stdev_score(int score[], int num)
{
    float u = get_avg_score(score, num);
    float Dx = 0;
    for (int i = 0; i < num; ++i)
        Dx += (score[i] - u)*(score[i] - u);
    return sqrt(Dx/num);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式