網頁

2008年5月4日 星期日

【教學】C語言,小考七。結構(struct)練習。

以下是我寫的程式碼。
班別:
學號:
姓名:
小考八題目:
有一個表示學生國英數成績結構陣列如后所附。請完成二個函數,其原型分別為 void happy_birthday(struct data [], int); int max_grade(struct data []); 其功能可以 

(1)列印某月份生日的學生姓名;
(2)傳回全班平均成績最高的學生的索引值  請完成函數,並依題目輸出要求,測試函數, 印出結果。 題目輸入:八個學生資料如后所附。 題目輸出:(1)印出本月壽星的學生姓名  (2)印出全班平均成績最高的學生姓名 
*/



#include
#include 
struct day
{
    int yy, mm, dd; /* 年、月、日 */ 
};
struct data
{
    char name[20];  /* 姓名 */ 
    struct day birthday;  /* 生日 */ 
    int chi, math, eng;   /* 國文、數學  英文成績 */ 
};
struct data student[8] = {{"Marry Hu", {77, 2, 3}, 89, 90, 79},
                              {"Tom Chen", {78, 12, 13}, 79, 69, 88}, 
                              {"Billy Wu", {77, 1, 30}, 81, 54, 66},
                              {"John Hsu", {77, 7, 22}, 69, 49, 70},
                              {"Tim Huang", {77, 3, 8}, 90, 62, 83},
                              {"Marry Chen", {78, 5, 27}, 78, 93, 91},
                              {"Tomas Chu", {77, 5, 18}, 80, 50, 68},
                              {"Ann Wang", {77, 9, 21}, 66, 79, 78}};

void happy_birthday(struct data student[], int);
int max_grade(struct data []);
int main(void)
{
        int max;
        happy_birthday(student,5);
        max=max_grade(student);
        printf("全班平均最佳者為:%s\n",student[max].name);
        system("pause");
        return 0;
}                             

/*列出本月壽星(以5月為基準)*/
void happy_birthday(struct data student[], int month)
{
        int i;
        printf("本月壽星如下\n");
        for(i=0;i<8;i++)
        {
                if(student[i].birthday.mm==month)
                printf("%s\n",student[i].name);
        }
}

/*找出各科平均分數最高的那位同學,並回傳其索引值*/
int max_grade(struct data student[])
{
        int i,temp2;
        struct data temp;
        temp=student[0];
        for(i=0;i<8;i++)
        {
                if((student[i].chi+student[i].math+student[i].eng)/3>(temp.chi+temp.math+temp.eng)/3)
                {
                        temp=student[i];
                        temp2=i;
                }
        }
        return temp2;
}

※有哪裡不懂得可以MSN問我,如果有錯誤的地方,可以直接在底下回覆糾正我的錯誤。

沒有留言:

張貼留言