C语言程序设计 结构体和共用体样本教案
- 格式:doc
- 大小:100.00 KB
- 文档页数:13
实验10 结构体与公用体1.实验目的、要求(1)掌握结构体类型变量的定义和使用。
(2)掌握结构体类型数组的概念和使用。
(3)掌握公用体的概念与使用。
2.实验内容(1)输入程序并运行,观察运行结果#include “stdio.h”int main( ){ struct cmplx{ int x;int y;} cnum[2]={1 , 3 , 2 , 7};printf(“%d\n”, cnum[0].y / cnum[0].x * cnum[1].x );return(0); }运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:6(2)输入程序并运行,观察运行结果union ks{ int a;int b;};union ks s[4];union ks *p;#include “stdio.h”int main( ){ int n=1, i;printf(“\n”);for(i=0;i<4;i++){ s[i].a=n;s[i].b=s[i].a+1;n=n+2;}p=&s[0];printf(“%d,”,p->a);printf(“%d” ,++ p->a);return(0); }运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按任意键返回源程序行,按alt+F5看结果,结果显示:23(3)编写程序有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
要求用input 函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。
#include"stdio.h"struct student{char num[6];char name[8];int score[4];float avr;}stu[10];main(){int i,j,max,maxi,sum;float average;for(i=0;i<10;i++){printf("number");scanf("%s",stu[i].num);printf("name");scanf("%s",stu[i].name);for(j=0;j<3;j++){printf("\nscore\n");scanf("%d",&stu[i].score[j]); } }average=0;max=0;maxi=0;for(i=0;i<10;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;if(sum>max){max=sum;maxi=i; }}average/=5;printf("number name score1 score2 score3 average\n");for(i=0;i<10;i++){printf("%8s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%7d",stu[i].score[j]);printf("%6.2f\n",stu[i].avr); }printf("average=%5.2f\n",average);printf("The best student is %s,sum=%d\n",stu[maxi].name,max);}运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按要求输入十个学生的数据,按任意键返回源程序行,按alt+F5看结果,结果显示:number name score1 score2 score3 average01 san 76 87 79 80.6702 tian 65 75 86 75.3303 yuan 98 68 78 81.3304 ping 97 86 78 87.0005 shuo 65 74 82 73.6706 ying 90 80 68 79.3307 xiao 87 80 58 75.0008 hu 64 98 60 74.0009 xing 65 82 90 79.0010 xu 60 98 76 78.00average=156.67The best student is ping,sum=2613.思考及总结(1结构体、共用体定义方式、引用方式和功能的相同点与不同点。
C语言程序设计实验报告(结构体和共用体)1实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。
2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。
要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。
3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。
以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。
8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。
实验8:结构体与共用体一、实验目的1.掌握结构体类型变量的定义和使用;2.掌握共用体的概念与使用。
二、实验内容编写程序,实现如下功能:1.定义结构体变量,用它表示考生的学号、姓名(用英文表示)以及语文、数学、外语成绩。
输入两个考生的信息和各门课成绩并比较(按总分进行高低排序;当总分相同时,依次按语、数、外的顺序排序)。
2.设有一个教师与学生通用的表格,数据项包括:姓名、年龄、职业和单位,其中“职业”一项可分为“教师”和“学生”两类;对“单位”一项,教师填入“系部名称”(用字符类型表示),学生填入“班级编号”(用整型量表示)。
编程输入人员数据,再以表格输出。
三、实验结果记录第1题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.总分不同2.总分相同的情况2.1总分完全相同2.2总分相同但语文成绩不同2.3总分相同、语文成绩相同但数学成绩不同第2题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.正确输入2.错误输入四、实验小结:经过此次实验,我熟悉掌握了结构体的定义和使用,同时也掌握了共用体的使用。
对于程序1,基本思路是通过结构体定义变量,采用if-else语句嵌套,当总分相同且语文数学成绩均相同时就不必再进行一轮的if语句判断,因为此时两考生的英语成绩一定相同。
对于程序2,在结构体中定义了共用体,可对不同职业进行不同单位的划分。
基本思路是用malloc函数进行动态内存分配,确定要输入的样本数量,再进行数据的输入,在单位数据的输入时需要判断输入对象是学生还是老师,此时要用strcmp函数进行比较判断,输入结束后打印表格,用转义字符\t让表格更加美观,最后通过free进行内存释放。