台灣最大程式設計社群網站
線上人數
738
 
會員總數:244676
討論主題:188773
歡迎您免費加入會員
討論區列表 >> C/C++ >> 結構指標/陣列 比大小
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
結構指標/陣列 比大小
價值 : 100 QP  點閱數:115 回應數:1

樓主

fezai
門外漢
0 1
10 0
發送站內信

#include<stdio.h>
#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
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小魚
檢舉此回應
我在其他地方回答過了,
應該不用再回答了吧.
本篇文章回覆於2019-06-04 18:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.