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

請幫我找出國文最高分的人[已有程式碼但有小錯誤]

#include <stdio.h>

typedef struct student{

char name[10];

int text1;

int text2;

int text3;

}student;

int main()

{

student mystudent[3];

int i;

int maxname=0;

int max=0;

for (i=0;i<3;i++){

printf("請輸入第%d個人的名字:",i+1);

scanf("%s",&mystudent[i].name);

printf("請輸入第%d個人的國文成績:",i+1);

scanf("%d",&mystudent[i].text1);

printf("請輸入第%d個人的英文成績:",i+1);

scanf("%d",&mystudent[i].text2);

printf("請輸入第%d個人的數學成績:",i+1);

scanf("%d",&mystudent[i].text3);

}

for (i=0; i<3; i++)

{

if(mystudent[i].text1>max)

max=mystudent[i].text1;

maxname=i;

}

printf("最高分為%s\n",mystudent[maxname].name);

for (i=0;i<3;i++){

printf("第%d個人的姓名:%s,國文成績:%d,英文成績:%d,數學成績:%d,平均成績%d\n",i+1,mystudent[i].name,mystudent[i].text1,mystudent[i].text2,mystudent[i].text3,(mystudent[i].text1+mystudent[i].text2+mystudent[i].text3)/3);

}

return 0;

}

已更新項目:

現在程式,不管怎樣輸入,都只會是第三個人得國文成績最高分,請幫我修改成,會隨者輸入的大小而改變國文成績最高分的人。

2 個解答

評分
  • Ashley
    Lv 7
    1 0 年前
    最佳解答

    不知道你說的小錯誤是啥?

    2007-11-11 13:42:27 補充:

    #include <stdio.h>

    typedef struct student{

    char name[10];

    int text1;

    int text2;

    int text3;

    }student;

    int main() {

    student mystudent[3];

    int i, j = 0;

    int maxname=0;

    int max[3]={0};

    for (i=0;i<3;i++){

    printf("請輸入第%d個人的名字:",i+1); scanf("%s",&mystudent[i].name);

    printf("請輸入第%d個人的國文成績:",i+1); scanf("%d",&mystudent[i].text1);

    printf("請輸入第%d個人的英文成績:",i+1); scanf("%d",&mystudent[i].text2);

    printf("請輸入第%d個人的數學成績:",i+1); scanf("%d",&mystudent[i].text3);

    }

    for (i=0; i<3; i++) {

    if(i == 0 || mystudent[i].text1 > mystudent[max[j]].text1) {

    j = 0;

    max[j] = i;

    }else if( mystudent[i].text1 == mystudent[max[j]].text1 ) {

    j++;

    max[j] = i;

    }

    }

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

    printf("國文最高分姓名:%s\n",mystudent[max[i]].name);

    for (i=0;i<3;i++){

    printf ("第%d個人的姓名:%s,國文成績:%d,英文成績:%d,數學成績:%d,平均成績%d\n",i+1,mystudent[i].name, mystudent[i].text1,mystudent[i].text2,mystudent[i].text3,(mystudent[i].text1+mystudent[i].text2+mystudent[i].text3)/3);

    }

    system("pause");

    return 0;

    }

    參考資料: 個人的程式設計經驗
  • 主要有2個問題

    1. 現在的寫法最高分者都只會是第3個人

    2. 未考慮最高分者不只1人的情況

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