实验六

时间:2019-06-10
本文章向大家介绍实验六,主要包括实验六使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

part 1

ex1_2源代码:

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

运行结果:

ex1_3源代码:

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

运行结果:

这一部分里犯的错误主要是

part 2

共用体与结构体的区别:共用体的特点是几个不同类型的变量共占一段内存,而结构体内的数据在内存中是连续存放的。

part 3

枚举类型用于描述取值有限的数据,不能直接输入或输出,枚举类型可以隐含转换为整型,但整型转换为枚举类型,必须显式转换。

原文地址:https://www.cnblogs.com/ningchenyang/p/11000981.html