码迷,mamicode.com
首页 > 其他好文 > 详细

实验6

时间:2021-06-05 17:45:16      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:考证   const   can   subject   调整   感受   return   string   元素   

1.学生信息处理

代码如下:

(全部手敲了一遍累到自己了,就没有加很多注释.....)

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

 

N=3时运行结果如下:

(看着输出结果,对着代码调整了好久排版,这下看起来舒服多了)

技术图片

利用结构体解决数据整理问题时,首先要将问题划分模块,然后用一个一个函数编写好模块部分,再在主函数中整合。

感觉最需要的还是耐心。

 

2.最低分计数

代码如下:

 1 #include <stdio.h>
 2 #define 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 int main() {
14     STU stu[N], minlist[N];
15     int count;
16     printf("录入%d个学生信息\n", N);
17     input(stu, N);
18     printf("\n统计最低分人数和学生信息...\n");
19     count = findMinlist(stu, minlist, N);
20     printf("\n一共有%d个最低分,信息如下:\n", count);
21     output(minlist, count);
22     return 0;
23 }
24 // 输入n个学生信息,存放在结构体数组s中
25 void input(STU s[], int n) {
26     int i;
27     for(i=0; i<n; i++)
28         scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score);
29 }
30 // 输出结构体s中n个元素信息
31 void output(STU s[], int n) {
32     int i;
33     for(i=0; i<n; i++)
34         printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score);
35 }
36 int findMinlist(STU s[], STU t[], int n) {
37     int min=s[0].score,k=0;
38     for (int i = 0; i < n; ++i) {
39         if (s[i].score<min)
40             min=s[i].score;
41     }
42     for (int i = 0; i < n; ++i) {
43         if (s[i].score==min){
44             t[k++]=s[i];
45         }
46     }
47     return k;
48 }

运行结果如下:

 

技术图片

 

3.计算机等级

代码如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 const int N = 10;
 4 // 定义结构体类型struct student,并定义其别名为STU
 5 typedef struct student {
 6     long int id;
 7     char name[20];
 8     float objective; /*客观题得分*/
 9     float subjective; /*操作题得分*/
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 int main() {
18     STU stu[N];
19     printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N);
20     input(stu, N);
21     printf("\n对考生信息进行处理: 计算总分,确定等级\n");
22     process(stu, N);
23     printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n");
24     output(stu, N);
25     return 0;
26 }
27 // 录入考生信息:准考证号,姓名,客观题得分,操作题得分
28 void input(STU s[], int n) {
29     for (int i = 0; i < n; ++i)
30         scanf("%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective);
31 }
32 //输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级
33 void output(STU s[], int n) {
34    printf("-------------输出学生信息--------------\n");
35    printf("准考证号  姓名  客观题得分  操作题得分  总分  等级\n");
36     for (int i = 0; i < n; ++i)
37         printf("%5ld %6s %8.1f %8.1f %8.1f %4s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
38 }
39 // 对考生信息进行处理:计算总分,排序,确定等级
40 void process(STU s[], int n) {
41     //计算总分
42     for (int i = 0; i < n; ++i)
43         s[i].sum=s[i].objective+s[i].subjective;
44     //排序(冒泡排序,降序)
45     STU temp;
46     for (int i = 0; i < n-1; ++i) {
47         for (int j = 0; j < n-1-i; ++j) {
48             if (s[j].sum<s[j+1].sum){
49                 temp=s[j];
50                 s[j]=s[j+1];
51                 s[j+1]=temp;
52             }
53         }
54     }
55     //根据比例划分等级
56     for (int i = 0; i < n; ++i) {
57         if (i<=(n/10)-1)          //数组序列从0开始
58             strcpy(s[i].level,"优秀");
59         else if (i<=(n/2)-1)
60             strcpy(s[i].level,"合格");
61         else
62             strcpy(s[i].level,"不合格");
63     }
64 }

运行结果如下:

技术图片

 

实验做完的感想:感觉编输入数据比写代码还费脑子......所以往里塞了巨量私货(

似乎感受到文件输入的好处了。

 

实验6

标签:考证   const   can   subject   调整   感受   return   string   元素   

原文地址:https://www.cnblogs.com/namelessbird/p/14851451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!