程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> mistake-輸出前三名成績

mistake-輸出前三名成績

編輯:C++入門知識

[cpp] 
/*
【項目2- 成績處理】在數組score中將要存儲某小組C++程序設計的成績,請設計完成下面的各功能函數,並將它們組合成一個完整的應用:
  (1)輸入小組人數及成績;
  (2)輸出該小組的最高成績、最低成績、平均成績和成績的標准偏差(標准偏差公式:,其中為樣本,為均值,為樣本數目);
  (3)輸出考得最高成績和最低成績的同學的人數及對應的學號(設成績對應的下標即學號,可能有相同的成績)
  (4)(選做)輸出前3名同學的學號——可以先不考慮有並列名次的情況,再考慮有並列的情況。
*/ 
#include <iostream>   
#include<Cmath>    
using namespace std;    
//在這個問題中,成績和人數是核心數據,適合作為全局變量處理    
int score[50];    //將score設為全局變量,在各個函數中可以直接使用    
int num;        //小組人數也設為全局變量   
void input_score();   
int get_max_score();   
int get_min_score();   
double get_avg_score();   
double get_stdev_score();   
int count(int);   
void output_index(int);  
int firstthree(int);   
   
int max_score,min_score,i,max,min,mean_score;     
int main(void)   
{    
   
  cout<<"小組共有多少名同學?";   
  cin>>num;      
  for(i=0;i<num;i++){ 
  cout<<"請輸入第"<<i<<"位學生成績:"<<endl;  
  cin>>score[i]; 
  } 
   
  input_score(); 
  
  if((score[i]<0)||(score[i]>100)){ 
      cout<<"error"<<endl;} 
  //要求成績在0-100之間    
  else 
     { 
      max_score=get_max_score();   
      cout<<endl<<"最高成績為:"<<max_score<<",共有 "<<count(max_score )<<" 人。";   
      min_score=get_min_score();   
      cout<<endl<<"最低成績為:"<<min_score<<",共有 "<<count(min_score )<<" 人。";   
      cout<<endl<<"平均成績為:"<<get_avg_score();     
      cout<<endl<<"標准偏差為:"<<get_stdev_score();   
      cout<<endl<<"獲最高成績的學生(學號)有:";   
      output_index(max_score);   
      cout<<endl<<"獲最低成績的學生(學號)有:";   
      output_index(min_score); 
      cout<<endl<<"前三名成績:"; 
  } 
   
      return 0;    
}   
   
   
//input_score函數提供給同學們參考   
//input_score函數的功能是輸入小組成員的成績   
void input_score()   
{   
    int i;   
    for(i=0;i<num;i++)   
       do   
       {    
          cout<<"輸入第 "<<i<<" 位同學的成績:";    
          cin>>score[i];   
       }while(score[i]<0||score[i]>100);   
    return;    
 }   
    
// get_max_score()函數的功能是求出num名同學的最高成績   
int get_max_score()   

    max=-1; 
    for(i=0;i<num;i++) 
        if(max<score[i]) 
            max=score[i]; 
        return max; 
         
}   
     
// get_min_score()函數的功能是求出num名同學的最低成績   
int get_min_score()   

    min=100; 
    for(i=0;i<num;i++) 
        if(min>score[i]) 
            min=score[i]; 
        return min; 
}   
   
// get_avg_score()函數的功能是求出num名同學的平均成績   
double get_avg_score()   
{  
    double sum=0; 
    for(i=0;i<num;i++) 
        sum+=score[i]; 
        return sum/num; 
}   
   
   
// get_ stdev _score()函數的功能是求出num名同學成績的標准偏差   
double get_stdev_score()   
{   
    double ave_score,x,sum=0; 
    ave_score=get_avg_score(); 
    for(i=0;i<num;i++) 
    { 
    x=score[i]-ave_score; 
    sum+=x*x; 
    } 
 
    return sqrt(sum/(num-1)); 
}   
   
// count(int s)函數的功能是返回值score數組中為s的元素的個數   
int count(int s)   
{     
  
    int iCount=0;   
    int i;   
    for(i=0;i<num;i++)   
        if(score[i]==s)iCount++;   
        return iCount; 
 
}   
   
   
// output_index函數的功能是輸出score數組中值為s的元素的下標(index)   
//注意:值為s的元素可能有多個   
void output_index(int s)   
{   
     int i;   
    for(i=0;i<num;i++)   
        if(score[i]==s)cout<<i<<" ";   
        return;   
}   
int firstthree(int max2,int max3) 
{   www.2cto.com
for(i=0;i<num;i++) 
if(max2>score[i]&&max2<max) 
 max2=score[i]; 
if(max3>score[i]&&max3<max2) 
 max2=score[i]; 
return max,max2,max3; 

[cpp] view plaincopyprint?
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved