![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 fezai ![]()
![]() |
#include<stdlib.h> #include<string.h> int main() { struct Quiz{ int midtermGrade; int finalGrade; char name[7]; }; struct Quiz *students,*ptr; int i,num,grade,sum,midsum=0,finalsum=0; char maxname[7],minname[7]; printf("請輸入學生個數==>"); scanf("%d",&num); students=(struct Quiz*)malloc(num*sizeof(struct Quiz)); int min=students[0].midtermGrade+students[0].finalGrade; int max=students[0].midtermGrade+students[0].finalGrade; int sitmax=1,sitmin=1; strcpy(minname,students[0].name); strcpy(maxname,students[0].name); if(students!=NULL) { for(sum=0,i=0;i<num;i++) { ptr=&students[i]; printf("學生座號:%d\n",i+1); printf("輸入期中成績==>"); scanf("%d",&grade); sum=ptr->midtermGrade=grade; printf("輸入期末成績==>"); scanf("%d",&grade); ptr->finalGrade=grade; sum+=ptr->finalGrade; printf("輸入學生姓名==>"); fflush(stdin); scanf("%s",ptr->name); printf("成績平均:%.2f\n",(float)sum/2); midsum+=ptr->midtermGrade; finalsum+=ptr->finalGrade; if(sum<min) { min=sum; sitmin=i+1; strcpy(minname,ptr->name); } if(sum>max) { max=sum; sitmax=i+1; strcpy(maxname,ptr->name); } } printf("期中考班平均總成績:%.2f\n",(float)midsum/num); printf("期末考班平均總成績:%.2f\n",(float)finalsum/num); printf("最低分總成績姓名:%s 座號:%d\n",minname,sitmin); printf("最高分總成績姓名:%s 座號:%d",maxname,sitmax); free(students); } else printf("記憶體配置失敗!\n"); system("pause"); return 0; } 執行結果: 請輸入學生個數==>3 學生座號:1 輸入期中成績==>60 輸入期末成績==>60 輸入學生姓名==>a 成績平均:60.00 學生座號:2 輸入期中成績==>50 輸入期末成績==>50 輸入學生姓名==>b 成績平均:50.00 學生座號:3 輸入期中成績==>70 輸入期末成績==>70 輸入學生姓名==>c 成績平均:70.00 期中考班平均總成績:60.00 期末考班平均總成績:60.00 最低分總成績姓名:b 座號:2 最高分總成績姓名:P?座號:2 請按任意鍵繼續 . . . ------------------------------------------ 題目是要求總分最高和最低者的姓名與座號, 不解的是明明同樣寫法最高的姓名卻是亂碼, 座號的值也是錯的,求高手解答謝謝m(_ _)m
搜尋相關Tags的文章:
[ C語言 ] ,
本篇文章發表於2019-06-04 18:08 |