1. 程式人生 > 實用技巧 >介面和抽象類

介面和抽象類

技術標籤:C語言

2020-12-31
44行

結構體陣列的使用。有n(2<n<10)個學生,每個學生的資料包括學號(長度為12的字串)、姓名(長度為12的字串)、3門課程的成績。從鍵盤輸入n個學生的資料,要求輸出3門課程的總平均成績,以及最高分的學生的學號、姓名、3門課程成績、平均分數。

要求:

1)輸入n的值以及n個學生的上述資訊,每個學生一行,各項資料之間用一個空格分隔;

2)輸出學生資訊成績表,輸出格式:%10s%10s%9.2f%9.2f%9.2f%8.2f;對應下述表頭資訊

   No.      name score[1] score[2] score[3] average

3)全班平均分、最高分數學生三門成績及其平均分採用%6.2f格式輸出,最高分數學生的學號和姓名均採用%10s的格式輸出。

執行參考示例:

輸入1:

3

1004 zhang 85 78 84

1002 chen 77 67 58

1006 zhao 96 89 88

輸出1:

   No.      name score[1] score[2] score[3] average

  1004     zhang    85.00    78.00    84.00   82.33

  1002      chen    77.00    67.00    58.00   67.33

  1006      zhao    96.00    89 00    88.00   91.00

average= 80.22

The highest score is: 1006 zhao

His scores are: 96.00 89.00 88.00,average: 91.00

#include<stdio.h>
int main()
{
    struct students
    {
        char num[12];
        char name[12];
        float score1;
        float score2;
        float score3;
    }stu[10];
    int n,i,k;
    float sum,sum1;
    
    float average=0;
    scanf("%d"
,&n); for(i=0;i<n;i++) { scanf("%s %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3); } printf("No. name score[1] score[2] score[3] average\n"); for(i=0;i<n;i++) { sum=stu[i].score1+stu[i].score2+stu[i].score3; sum/=3.0; printf("%10s%10s%9.2f%9.2f%9.2f%8.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,sum); average+=stu[i].score1+stu[i].score2+stu[i].score3; if(i==0) { sum1=sum; } else { if(sum>sum1) { k=i; sum1=sum; } } } printf("average=%6.2f\n",average/=(3*n)); printf("The highest score is:%10s%10s\n",stu[k].num,stu[k].name); printf("His scores are:%6.2f%6.2f%6.2f%,average:%6.2f\n",stu[k].score1,stu[k].score2,stu[k].score3,sum1); return 0; }

執行結果
在這裡插入圖片描述