小依 發問時間: 電腦與網際網路程式設計 · 1 0 年前

c++請幫我忙這星期五要交><

老師說..

叫我們寫一個程式

內容如下..

cout << "請輸入成績" 計算成績

cin >> i score ;

①人數(變數來存)

②平均分數

③最高分(變數來存)

④不及格人數(變數來存)

double 總分數

2 個解答

評分
  • 達仔
    Lv 4
    1 0 年前
    最佳解答

    //第一個版本

    #include<iostream>

    using namespace std;

    int main()

    {

    int p=0,score,hi=0,lo=0;

    double sum=0;

    cout << "請輸入成績 (當輸入的數值小於0時,印出成績計算)\n";

    do

    {

    p=p+1; //人數累計

    cin >> score;

    if(score>hi) hi=score; //hi 變數為計紀錄最高分

    if(score<60) lo=lo+1; //lo 變數為累計不及格人數,在此設不及格分為60以下

    if(score>=0) sum=sum+score; //sum 變數為總分累計,當score輸入為正數時累計

    } while(score>=0); //當score輸入數值小於0時,結束迴圈

    p=p-1; //減去最後輸入負數離開迴圈的無效人次

    lo=lo-1; //包括最後輸入負數的不及格人次也要減掉

    cout << "人數 : " << p <<endl;

    cout << "平均分數 : " << sum/p << endl;

    cout << "最高分 : " << hi << endl;

    cout << "不及格人數 : " << lo << endl;

    cout << "總分數 : " << sum << endl;

    system("PAUSE");

    return 0;

    }

    ========================================================

    //第二個版本

    #include<iostream>

    using namespace std;

    int main()

    {

    int score,j,i=0,hi=0,lo=0;

    double sum=0;

    cout << "請輸入人數(i值) : ";

    cin >> i;

    cout << "請輸入成績 (當輸入的數值小於0時,印出成績計算)\n";

    for(j=1;j<=i;j++)

    {

    cin >> score; //輸入成績

    if(score>hi) hi=score; //hi 變數為計紀錄最高分

    if(score<60) lo=lo+1; //lo 變數為累計不及格人數,在此設不及格分為60以下

    if(score>=0) sum=sum+score; //sum 變數為總分累計,當score輸入為正數時累計

    }

    cout << "人數 : " << i <<endl;

    cout << "平均分數 : " << sum/i << endl;

    cout << "最高分 : " << hi << endl;

    cout << "不及格人數 : " << lo << endl;

    cout << "總分數 : " << sum << endl;

    system("PAUSE");

    return 0;

    }

    2007-05-23 13:55:02 補充:

    版主 您好 :

    由於您的題意並未十分詳盡 , 因此提供兩種版本給您參考 ! 若尚有其他問題請補充或來信告知 . 在下會給予補充回答內容 .

    若不滿意回答內容或欲交付投票請先行告知 , 在下會自行刪除回答內容 .

    2007-05-23 14:14:36 補充:

    第二個版本中 , 請將下列 :

    cout << "請輸入成績 (當輸入的數值小於0時,印出成績計算)\n"

    改成如下 : (更正如下)

    cout << "請輸入成績 (當輸入的次數與 i 值相符時 , 印出成績計算)\n"

    多有疏忽請見諒 !

    2007-05-23 14:18:45 補充:

    特別說明 : 針對兩個版本的程式說明 .

    第一個版本不限輸入的次數 , 當輸入為負值時(小於 0) , 才會進行最後的成績計算 .

    第二個版本於一開始(使用者輸入決定) i 值(人數)確定後 , 就必須固定輸入相同次數之成績 (成績可輸入負值) , 才會進行最後的成績計算 .

    參考資料: Dev-C++, 達仔 ~, 更正啟事 ~, 特別說明
  • 1 0 年前

    //Power by Visual Studio 2005

    #include<iostream>

    #include<cstdlib>

    #include<iomanip>

    using namespace std;

    void SORT(int *NUM, int LEN)

    {

    for(int i=0;i<LEN;i++)

    for(int j=i;j<LEN;j++)

    if(*(NUM+i)>*(NUM+j))

    {

    int temp=*(NUM+i);

    *(NUM+i)=*(NUM+j);

    *(NUM+j)=temp;

    }

    }

    int FLUNK(int *NUM, int LEN)

    {

    int COUNTER=0;

    for(int i=0;i<LEN;i++)

    {

    if(*(NUM+i)<60)

    {

    COUNTER++;

    }

    }

    return COUNTER;

    }

    int main(int argc, char** argv)

    {

    //==========START==========//

    cout<<"輸入最大人數: ";

    int number,i=0,highest,flunk;

    double sum=0;

    cin>>number;

    int *score=new int[number];

    do

    {

    cout<<"輸入分數(-1 終止輸入): ";

    cin>>*(score+i);

    sum+=(*(score+i)!=EOF?*(score+i):0);

    }

    while(*(score+i++)!=EOF);

    SORT(score, --i);

    flunk=FLUNK(score, i);

    cout<<"人數= "<<i<<endl;

    cout<<"平均分數= "<<setprecision(10)<<sum/i<<endl;

    highest=*(score+--i);

    cout<<"最高分= "<<highest<<endl;

    cout<<"不及格人數= "<<flunk<<endl;

    delete [] score;

    //==========END==========//

    system("PAUSE");

    return EXIT_SUCCESS;

    }

還有問題?馬上發問,尋求解答。