当前位置:编程学习 > C/C++ >>

问题六十一: 在数组score中将要存储某小组C++程序设计的成绩.

[plain]
/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)      
* 程序的版权和版本声明部分      
* All rights reserved.      
* 文件名称: txt.c      
* 作    者: liuyongshui      
* 问    题:  在数组score中将要存储某小组C++程序设计的成绩. 
* 问题来源:    
* 完成日期: 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"); 

/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)    
* 程序的版权和版本声明部分    
* All rights reserved.    
* 文件名称: txt.c    
* 作    者: liuyongshui    补充:软件开发 , C语言 ,

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,