1

  1 #include<stdio.h>
  2 #include<stdlib.h>    
  3 #include<string.h>
  4 #define N 3
  5 
  6 typedef struct student{
  7     int id;
  8     char name[20];
  9     char subject[20];
 10     float perf;
 11     float mid;
 12     float total;
 13     float final;
 14     char level[10];
 15 }STU;
 16 
 17 void input(STU[],int );
 18 void calc(STU[],int);
 19 int fail(STU[],STU [],int);
 20 void sort(STU[],int); 
 21 void print(STU[], int);
 22 
 23 int main(){
 24     STU st[N],fst[N];
 25     int k;
 26     
 27     printf("录入学生成绩信息:\n");
 28     input(st,N);
 29 
 30     printf("\n成绩处理...\n");
 31     calc(st,N);
 32     
 33     k = fail(st,fst,N);
 34     sort(st, N);
 35     printf("\n学生成绩排名情况:\n");
 36     print(st, N);
 37     
 38     printf("\n不及格学生信息:\n");
 39     
 40     print(fst, k);
 41     return 0;
 42 }
 43 
 44 void input(STU s[],int n){
 45     int i;
 46     for(i=0;i<n;i++)
 47     scanf("%d %s %s %f %f %f",
 48     &s[i].id,s[i].name,s[i].subject,&s[i].perf,&s[i].mid,&s[i].final);
 49 }
 50 
 51 void calc(STU s[],int n){
 52     int i;
 53     for(i=0;i<n;i++){
 54     s[i].total=s[i].perf*0.2+s[i].mid*0.2+s[i].final*0.6;
 55 
 56     if(s[i].total>=90)
 57         strcpy(s[i].level,"");
 58     else if(s[i].total>=80)
 59         strcpy(s[i].level,"");
 60     else if(s[i].total>=70)
 61         strcpy(s[i].level,"");
 62     else if(s[i].total>=60)
 63         strcpy(s[i].level,"及格");
 64     else
 65         strcpy(s[i].level,"不及格");
 66     }
 67 }
 68 
 69 int fail(STU s[],STU t[],int n) {
 70     int i,k=0;
 71     
 72     for(i=0;i<n;i++)
 73         if(s[i].total<60)
 74             t[k++]=s[i];
 75     
 76     return k;
 77 }
 78 
 79 void sort(STU s[],int n) {
 80     int i,j;
 81     STU temp;
 82     
 83     for(i=0;i<n-1;i++)
 84         for(j=0;j<n-i-1;j++)
 85             if(s[j].total<s[j+1].total){
 86                 temp = s[j];
 87                 s[j] = s[j+1];
 88                 s[j+1] = temp;
 89             }
 90 }
 91 
 92 void print(STU s[], int n) {
 93     int i;
 94     printf("-----------------\n");
 95     printf("学号 姓名 考试科目 平时成绩 期中成绩 期末成绩 总评成绩 成绩等级\n");
 96     
 97     for(i=0;i<n;i++)
 98     printf("%4d %4s   %4s   %5.1f    %5.1f     %5.1f     %5.1f  %6s\n",
 99     s[i].id,s[i].name,s[i].subject,s[i].perf,s[i].mid,s[i].final,s[i].total,s[i].level);
100 }

2

 1 #include <stdio.h>
 2 const int N=5;
 3 // 定义结构体类型struct student,并定义STU为其别名
 4 typedef struct student {
 5     long no;
 6     char name[20];
 7     int score;
 8     }STU;
 9 // 函数声明
10     void input(STU s[], int n);
11     int findMinlist(STU s[], STU t[], int n);
12     void output(STU s[], int n);
13 
14     int main() {
15     STU stu[N], minlist[N];
16     int count;
17 
18     printf("录入%d个学生信息\n", N);
19     input(stu, N);
20 
21     printf("\n统计最低分人数和学生信息...\n");
22     count = findMinlist(stu, minlist, N);
23 
24     printf("\n一共有%d个最低分,信息如下:\n", count);
25     output(minlist, count);
26 
27     return 0;
28 }
29 
30     void input(STU s[], int n) {
31     int i;
32     for(i=0; i<n; i++)
33     scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score);
34 }
35 
36     void output(STU s[], int n) {
37     int i;
38     for(i=0; i<n; i++)
39     printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score);
40 }
41 
42 int findMinlist(STU s[], STU t[], int n){
43     int i, j=0, min;
44     min=s[0].score;  //初始化最低分 
45     for(i=0;i<n;i++){
46         if(s[i].score<min)
47         min = s[i].score;
48     }                    //遍历数组,找到最低分
49     
50     for(i=0;i<n;i++){
51         if(s[i].score==min)
52         t[j++]=s[i];
53     }                     //遍历数组,统计最低分 
54     
55     return j;    
56 }

3

 1 #include<stdio.h>
 2 #include<string.h>
 3 const int N = 10;
 4 
 5 typedef struct student{
 6     long int id;
 7     char name[20];
 8     float obj;
 9     float sub;
10     float sum;
11     char level[10];
12 }STU;
13 
14 void input(STU s[],int n);
15 void output(STU s[],int n);
16 void process(STU s[],int n);
17 
18 int main(){
19     STU stu[N];
20     
21     printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N);
22     input(stu, N);
23     
24     printf("\n对考生信息进行处理: 计算总分,确定等级\n");
25     process(stu, N);
26 
27     printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n\n");
28     output(stu, N);
29     
30     return 0;
31 }
32 
33 void input(STU s[],int n){
34     int i;
35     for(i=0;i<n;i++)
36         scanf("%d%s%f%f", &s[i].id, s[i].name, &s[i].obj, &s[i].sub);
37 }
38 
39 void output(STU s[],int n){
40     int i;
41     printf("准考证号  姓名   客观题得分   操作题得分   总分      等级\n");
42     printf("------------------------------------------------------------\n");
43     for(i=0;i<n;i++)
44         printf("%4ld    %6s     %5.2f        %.2f     %6.2f     %4s\n", s[i].id, s[i].name, s[i].obj, s[i].sub, s[i].sum, s[i].level);
45     printf("------------------------------------------------------------\n");
46 }
47 
48 void process(STU s[],int n){
49     int i,j,k; 
50     STU temp;
51     for(i=0;i<n;i++){
52         s[i].sum = s[i].sub + s[i].obj;
53 }
54 
55     for(i=0;i<n-1;i++)
56         for(j=0;j<n-i-1;j++)
57             if(s[j].sum < s[j+1].sum){
58                 temp=s[j];
59                 s[j]=s[j+1];
60                 s[j+1]=temp;    
61         }    
62     
63     for(i=0;i<n;i++){
64         k=i+1;
65     
66         if((float(k)/n)<0.2) strcpy(s[i].level,"优秀");
67         else if((float(k)/n)<0.6) strcpy(s[i].level,"合格");
68         else strcpy(s[i].level,"不合格"); 
69 }
70 }

 

posted on 2021-06-05 10:54  wyfaa  阅读(90)  评论(1)    收藏  举报