SOGO論壇
  登入   註冊   找回密碼
查看: 3236|回覆: 8
列印 上一主題 下一主題

[程式設計] c++輸入學號成績 [複製連結]

Rank: 1

狀態︰ 離線
跳轉到指定樓層
1
發表於 2014-12-10 00:32:22 |只看該作者 |倒序瀏覽
每一位學生的輸入資料包括學號、姓名、國文分數   數學分數    英文分數 ,輸入完一筆資料後,可以繼續輸入下一筆,直到使用者在輸入學號時,以輸入一個字#作為結束輸入的符號,連續輸入學生考試資料才結束。而此程式需要將使用者輸入的分數資料儲存至以score命名的二維陣列變數中
例如
      學號          姓名      國文分數   數學分數    英文分數 (總成績)
    kxxxxxxx    Jack        66           90           85
    kxxxxxxx    Mary       99           95           80



還有要算出總成績
使用者可以查看score中所有學生的成績資料
總成績高低進行排序

請求各位幫幫忙謝謝
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 2

狀態︰ 離線
2
發表於 2015-1-22 16:22:54 |只看該作者
本帖最後由 mikekao 於 2015-1-22 16:25 編輯

這個可用迴圈的方式,放在1個2維陣列內,就可解決你的問題了。
例如:
  struct student{
     char id[8];
     int grade[科目總數+1(總分)];
}

   student A[60]; //假設有60位學生

   讀輸入符號,當不為#時就讓時用者輸入學號、分數

   ...


已有 1 人評分SOGO幣 收起 理由
紅塵孤鳥 + 5 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: SOGO幣 + 5   查看全部評分

狀態︰ 離線
3
發表於 2015-2-1 16:06:36 |只看該作者
善用structure  就可以輕鬆達到

Rank: 5Rank: 5

狀態︰ 離線
4
發表於 2015-3-5 14:47:16 |只看該作者
都用 C++ 寫了,就用物件的觀念來思考吧!
寫先程式前,先想好 要輸入什麼,要輸出什麼。 確定完畢後,再把這些資料"抽像化"成資料結構,然後用物件的方式來處理。
把操作行為剛成一個物件,資料剛成一個物件,日後擴充彈性才會大。當程式愈寫愈大時,再來考慮重構(繼承與多型 desing pattern)。

Rank: 3Rank: 3

狀態︰ 離線
5
發表於 2015-4-29 22:16:00 |只看該作者
同意4樓的說法, 如果只要交差了事. 方法很多, 但既然使用C++ , 就用物件導向的思考方式. 否則用C不就可以了. 當然如果要將C++ 當成C在用也不無不可.

Rank: 2

狀態︰ 離線
6
發表於 2015-6-18 23:22:02 |只看該作者
覺得開個class就好了啊
然後寫個compare條件弄好就可以了

狀態︰ 離線
7
發表於 2015-8-15 10:27:13 |只看該作者
這種基本的問題也在問 要用功一點阿 同學

Rank: 2

狀態︰ 離線
8
發表於 2015-8-17 23:16:05 |只看該作者
依我的經驗來講~~這是老師出的作業吧>"<
讓我想到我同學以前,直接把作業PO到知識+
20點這樣...........

Rank: 2

狀態︰ 離線
9
發表於 2015-10-9 22:14:51 |只看該作者
看來發文者已經過了交作業期限了 我來回一下這題巴
#include <iostream>

struct Score
{
        char Mandarin;
        char Math;
        char English;
        char Total;
};
class StudentData
{
        public:
        static char count;
        char num[10];
        char name[15];
        struct Score score;
        void Avg(StudentData p[]);
        void Sqrt(StudentData p[]);
        void Swap(StudentData *p1,StudentData *p2);
};
//分數加總/3
void StudentData::Avg(StudentData p[])
{
        int temp;
        for(char i=0;i<StudentData::count;i++){
                temp=p[i].score.English;
                temp+=p[i].score.Mandarin;
                temp+=p[i].score.Math;
                p[i].score.Total = temp/3;
               
        }
        return;
}
//排序
void StudentData::Sqrt(StudentData p[]){
       
        for(int i=0;i<StudentData::count-1;i++)
                for(int j=i;j < StudentData::count-1;j++)
                        if(p[j].score.Total>p[j+1].score.Total)
                                Swap(&p[j],&p[j+1]);
       
}
//交換
void StudentData::Swap(StudentData *p1,StudentData *p2){
        StudentData temp;
        char (*ptr1),(*ptr2);
        ptr1= temp.num;
        ptr2= p1->num;
        for(int i=0;i<29;i++){*ptr1 = *ptr2;ptr1++;ptr2++;}
        ptr1= p1->num;
        ptr2= p2->num;
        for(int i=0;i<29;i++){*ptr1 = *ptr2;ptr1++;ptr2++;}       
        ptr1= p2->num;   
        ptr2= temp.num;
        for(int i=0;i<29;i++){*ptr1 = *ptr2;ptr1++;ptr2++;}
}
char StudentData::count=0;


using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
       
        StudentData stu[100];
        for(char i = 0;i<100;i++){
        cout<<i<<"請輸入學號"<<endl;
        cin >> stu[i].num ;
        if(stu[i].num[0]=='#')
                break;
        cout<<i<<"請輸入姓名"<<endl;
        cin >> stu[i].name ;
        cout<<i<<"請輸入國文分數"<<endl;
        scanf("%d",&stu[i].score.Mandarin) ;
        cout<<i<<"請輸入數學分數"<<endl;
        scanf("%d",&stu[i].score.Math) ;
        cout<<i<<"請輸入英文分數"<<endl;
        scanf("%d",&stu[i].score.English) ;
        StudentData::count++;
        }
       
        stu[0].Avg(stu);
        stu[0].Sqrt(stu);
       
        for(char i=0;i<StudentData::count;i++)
        {
                cout<<"學號:"<< stu[i].num <<",姓名:"<<stu[i].name
                        <<"數:"<<int(stu[i].score.Math)
                        <<"國:"<<int(stu[i].score.Mandarin)
                        <<"英:"<<int(stu[i].score.English)
                        <<",總分:"<<int(stu[i].score.Total)<<endl;
        }
       
        system("pause");
        return 0;
}

點評

sor8311  很棒 (Y)  發表於 2015-11-27 01:22:54
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-27 04:43

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部