实验结论:
part1:结构体类型及编程应用
练习一:
int findMinlist(STU s[], STU t[], int n) { // 补足函数实现 // ××× int i,j,m=0; for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(s[i].score>s[j].score) break; } if(j==n) t[m++]=s[i]; } return m; }
练习二:
void input(STU s[], int n) { int i; for(i=0;i<N;i++){ scanf("%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); } } void output(STU s[], int n) { int i; for(i=0;i<N;i++){ printf("%ld,%s,%f,%f,%f,%s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); } } void process(STU s[], int n) { int i,m,p,j; STU temp; for(i=0;i<N;i++){ s[i].sum=s[i].objective+s[i].subjective; } for(m=0;m<N-1;m++){ for(p=0;p<N-1-m;p++){ if(s[p].sum<s[p+1].sum){ temp=s[p]; s[p]=s[p+1]; s[p+1]=temp; } } } for(j=0;j<N;j++){ if(s[j].sum>95){ strcpy(s[j].level,"优秀"); } else if(s[j].sum>90&&s[j].sum<=95){ strcpy(s[j].level,"合格"); } else{ strcpy(s[j].level,"不合格"); } } }
part 2:
共用体与结构体的区别:
(1)结构体是将不同类型的元素存放到一段内存里,所占内存之和是每个元素所占内存的总和,因此结构体内的各个元素可以同时存在。
(2)共用体也是将不同类型的元素存放到一段内存里,所占内存为各个元素中占据内存最大的内存,因此共用体中的元素只有一个是存在的,如果下一个被赋值了那么上一个就没有了。
总的来说结构体与共用体最大的区别就是一个其中的元素可以同时存在而另一个只能存在一个。
part 3:
(1)枚举类型用于描述有限的整型数据,如一年有十二个月,一星期有七天这一类型。
(2)不可以直接输入或者输出枚举值,输入时要输入的是一个整型数据,所以要进行类型转换;输出时也不可直接输出,可以借助函数和switch来输出。
(3)不可以直接把一个整形数值赋值给枚举类型的变量,必须要进行类型转换才能赋值。但是可以把一个枚举值赋值给一个整形的变量(枚举值是一个常量)。
踩坑吐槽环节~~
这次实验的练习部分还算顺利,在一顿思考之后解决了,练习二与给出的例子很相似,所以很轻松(虽然在编程的过程中出现一些小失误,但没有困扰我很久)。唯一想吐槽的是关于共用体和枚举只在上课的时候听了一下,找不到课件什么的,只好自己在网上看看各种大神的总结分析,也理解了一些,有所收获吧。
马上要考试啦,大家共勉!!