請幫我找出國文最高分的人[已有程式碼但有小錯誤]
#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 個解答
- AshleyLv 71 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;
}
參考資料: 個人的程式設計經驗