您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验08-结构体和共用体的应用
黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-1-实验8结构体和共用体的应用实验目的:1.掌握结构体类型变量的定义和使用;2.掌握使用结构指针和结构变量名使用结构成员的方法;3.掌握结构体类型数组的概念和使用;4.了解共用体的概念与使用。实验内容:1.程序阅读理解训练。1)输入并运行下面的程序,分析输出的结果。#includestdio.hstructstu{intnum;floatTotalScore;};voidf(structstup){structstus[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;}voidmain(){structstus[2]={{20041,703},{20042,580}};f(s[0]);printf(%d%3.0f\n,s[0].num,s[0].TotalScore);}黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-2-2)输入并运行下面的程序,分析输出的结果。#includestdio.hstructstu{charname[10];intnum;};voidf(char*name,intnum){structstus[2]={{SunDan,20044},{Penghua,20045}};num=s[0].num;strcpy(name,s[0].name);}voidmain(){structstus[2]={{YangSan,20041},{LiSiGuo,20042}},*p;p=&s[1];f(p-name,p-num);printf(%s%d\n,p-name,p-num);}思考:将“printf(%s%d\n,p-name,p-num);”改为“printf(%s%d\n,(*p).name,(*p).num);”和“printf(%s%d\n,s[1].name,s[1].num);”会怎样?其实表达是一样的..不过表达的方式不同3)输入并运行下面的程序,分析输出的结果。#includestdio.huniondata{inti[2];floata;longb;charc[4];}u;黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-3-voidmain(){scanf(%d,%d,&u.i[0],&u.i[1]);printf(i[0]=%d,i[1]=%d,a=%f,b=%1d,c[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\n,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);}只是给i[2]赋值.其他的并没有赋值所以得出只有i[0],i[1]有值输出输入两个整数10000、20000给u.i[0]和u.i[l],分析运行结果。然后将scanf语句改为:scanf(%ld,&u.b);输入60000给b,再分析运行结果。longb是一个长整型的数….2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整,并上机进行调试验证)1)程序说明:下列程序输出两个小孩的记录信息。1个男孩和1个女孩,其姓名首字母分别为“R”和“H”;男孩15岁,女孩比男孩小1岁子;男孩的成绩为75,女孩的成绩为82。(该案例涉及结构体变量的定义、初始化和结构体变量成员的引用)。#includestdio.hvoidmain(){structchildren//定义结构体类型.{charinitial;//姓名首字母.黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-4-intage;//年龄.intgrade;//成绩.}boy,girl;boy.initial='R';girl.initial='H';boy.grade=75;boy.age=15;girl.age=boy.age-1;girl.grade=82;printf(boy:%cis%dyearsoldandgotagradeof%d\n,boy.initial,boy.age,boy.grade);printf(girl:%cis%dyearsoldandgotagradeof%d\n,girl.initial,girl.age,girl.grade);}请写出运行结果:这个程序是一个简单的结构体的运用2)程序说明:设有4个学生,每个学生包括学号、姓名和成绩数据,要求找出成绩最高者的姓名和成绩并输出。(本题涉及指向结构体数组的指针的定义和使用)#includestdio.hvoidmain(){structstudent{intnum;charname[20];floatscore;}stu[4],*p;inti,temp=0;黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-5-floatmax;for(i=0;i4;i++)scanf(%d%s%f,&stu[i].num,stu[i].name,&stu[i].score);max=stu[0].score;for(i=1;i4;i++){if(maxstu[i].score)//maxstu[i].score。{max=stu[i].score;temp=i;}}p=stu+temp;printf(\nThemaxscore:\n);printf(No.:%d\nname:%s\nscore:%4.1f\n,p-num,p-name,p-score);}输入:16101Zhang90.516102Wang8616103Li98.016104Zhou77请写出运行结果:3)程序说明:有一个结构体变量stu,内含学生学号、姓名和三门课成绩。要求在mian()中赋值,在函数print中打印输出学生信息。(本题涉及结构体指针作为函数参数的使用)#includestdio.h黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-6-#includestring.h#defineFORMAT%d\n%s\n%f\n%f\n%f\nstructstudent{intnum;charname[20];floatscore[3];};voidprint(structstudent*p);voidmain(){structstudentstu;stu.num=12345;strcpy(stu.name,LiMin);stu.score[0]=68;stu.score[1]=87;stu.score[2]=98.9;print(&stu);}voidprint(structstudent*p){printf(FORMAT,p-num,p-name,p-score[0],p-score[1],p-score[2]);printf(\n);}3.程序设计(根据题意编写程序并上机进行调试)1)有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。要求:用input函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。黔南民族师范学院数学系C程序设计实验班级:姓名:学号:-7-2)使用结构数组输入10本书的名称和单价,调用函数按照书名的字母顺序序进行排序,在主函数输出排序结果。最后,对这次实验作一个简要的总结。这一章的填空不是很难…只是在运用指针的时候不怎么会用…
本文标题:实验08-结构体和共用体的应用
链接地址:https://www.777doc.com/doc-4445613 .html