问题六十一: 在数组score中将要存储某小组C++程序设计的成绩.
来源:互联网 发布:福州网络学校 编辑:程序博客网 时间:2024/05/16 04:34
/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了) * 程序的版权和版本声明部分 * All rights reserved. * 文件名称: txt.c * 作 者: liuyongshui * 问 题: 在数组score中将要存储某小组C++程序设计的成绩.* 问题来源: http://blog.csdn.net/sxhelijian/article/details/8036157 * 完成日期: 2013 年4 月18日 * 版 本 号: V1.0 */ #include <stdio.h>#include <math.h>float total(float grade[], int num);float average(float sum, int num);float deviation(float grade[], float ave, int num); //求偏差void max_min(float grade[], int num);int main(){ int i;int num;float sum;float ave;float dev; //偏差float grade[100]; printf("您班上有人?嘻嘻嘻共有:");scanf("%d", &num); printf("\n"); for(i=0; i<num; i++){ printf("输入第%2d位同学的成绩(按EENTER进入):", i);scanf("%f", &grade[i]);} sum= total(grade, num);printf("\n总成绩为:%0.2f\n", sum);ave= average(sum, num);printf("\n平均分为:%0.2f\n", ave); dev= deviation(grade, ave, num);printf("\n偏差为:%0.2f\n\n", dev); max_min(grade, num);return 0;}//sum()函数声明float total(float grade[], int num) //求总分{ int i;float sum=0.0;for(i=0; i<num; i++){ sum+=grade[i]; }return sum;}//average()函数声明float average(float sum, int num) //求平均分{ float ave; ave=sum/num; return ave;}//deviation()函数声明float deviation(float grade[], float ave, int num) //求偏差{ int i;float s=0.0;float dev;for(i=0; i<num; i++){ s=s+(grade[i]-ave)*(grade[i]-ave);}dev=sqrt(s/(num-1)); return dev;}//max_min()函数声明void max_min(float grade[], int num){ int i; int j=0;int l=0;int max_num[100];int min_num[100]; float max;float min; max=min=grade[0];for(i=0; i<num; i++){ if(max< grade[i]){max= grade[i]; //求最大值}if(min> grade[i]){ min= grade[i]; //求最小值}}for(i=0; i<num; i++){ if(max== grade[i]){ max_num[j++]=i; //记录最最大值的学号}if(min== grade[i]){ min_num[l++]=i; //记录最最小值的学号}} printf("最高分为:%0.2f\n", max);printf("最高分的学号有:");for(i=0; i<j; i++){printf("%d", max_num[i]);if(i<j-1) //i<j-1是打印逗号,反之不打印 { printf(",");}}printf("\n\n");printf("最低分为:%0.2f\n", min);printf("最低分的学号有:");for(i=0; i<l; i++){ printf("%d", min_num[i]);if(i<l-1) //i<l-1是打印逗号,反之不打印 { printf(",");}}printf("\n");}