天天看點

c語言 結構體(二)-上課用

源程式:

//編寫一個函數print,輸出學生的資訊,該數組有5個學生的記錄,包括:
//num, sname, score[3],用主函數輸入這些記錄,用print函數輸出這些記錄。#include <stdio.h>
#define N 5     //預定義,N代表5個學生struct student
{
  int num; 
  char sname[20];
  int score[3];
  int sum;
}stu[N]; //定義學生的數組,//作者:李梓遠
//時間:2022-4-21
//功能:輸入資訊
//技術:雙重循環,數組的嵌套
//變量:結構體變量stud[]
void input(struct student stud[])
{
  int i;
  for(i=0;i<N;i++)
  {
    printf("\n第%d個學生的資訊:\n",i+1);
    printf("學号:");
    scanf("%d",&stud[i].num);
    printf("姓名:");
    scanf("%s",stud[i].sname);
    printf("國文:");
    scanf("%d",&stud[i].score[0]);
    printf("數學:");
    scanf("%d",&stud[i].score[1]);
    printf("英語:");
    scanf("%d",&stud[i].score[2]);    stud[i].sum+=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];
    printf("\n");
  }
}//作者:鐘麗琪
//時間:2022-4-21
//功能:按總分排序
//技術:冒泡排序 
//變量:結構體變量stud[]
void sort(struct student stud[],int n)
{
  int i,j;
  struct student temp;
  for(i=0;i<n;i++)
  {
    for(j=0;j<n-i-1;j++)
    {
      if(stud[j].sum>stud[j+1].sum)
      {
        temp=stud[j];
        stud[j]=stud[j+1];
        stud[j+1]=temp;
      }
    }
  }
} 
//作者:吳澤林
//時間:2022-4-21
//功能:輸出資訊
//技術:
//變量:結構體變量stud[]
void print(struct student stu[])
{
  int i;
  printf("\n 學号     姓名     國文     數學    英語    總分\n");
  printf("----------------------------------------------------\n");
  for(i=0;i<N;i++)
  {
    printf("%5d%10s%8d%8d%8d%8d",
      stu[i].num,
      stu[i].sname,
      stu[i].score[0],
      stu[i].score[1],
      stu[i].score[2],
      stu[i].sum);
    printf("\n");
  }
}//主函數
void main()
{
  input(stu);  //調用輸入函數, 李梓遠
  sort(stu,N);   //按總成績排序, 鐘麗琪
  print(stu);  //調用輸出函數, 吳澤林
}      

 運作結果 :