版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上上机7 结构体与共用体一、 目的掌握结构体类型、共用体类型以及相应类型变量的定义方法和引用方法。学习运用链表解决实际问题。二、 要求1. 掌握结构体类型与结构体变量的定义、引用和初始化方法。2. 熟悉结构体与共用体的区别。三、 内容及步骤1、 程序s7-1.c是按学生姓名查询其排名和平均成绩,查询可连续进行,直到键入0时结束。试完善该程序。#include <stdio.h>#include <string.h>#define NUM 4struct studentint rank;char *name;float score;struct s
2、tudent stu=3,”Tom”,89.5,4,”Mary”,76.5,1,”Jack”,98.0,2,”Jim”,92.0;void main()char str10;int i;doprintf(“Enter a name:”);【指导】连续查询可以在do循环语句中实现。其算法步骤如下:输入一个学生姓名;与已知结构体数组中的姓名进行比较。如果找到与输入的学生姓名相同者,则输出该学生的姓名、排名和平均成绩;如果查找的人数大于等于NUM,则输出:Not found;如果输入的学生姓名是0,则结束查询,程序运行结束;否则转向继续执行。注意:这里的转向构成了循环,可以用循环语句实现。源程序s7
3、-1.c: #include <stdio.h>#include <string.h>#define NUM 4struct studentint rank;char *name;float score;struct student stu=3,"Tom",89.5,4,"Mary",76.5,1,"Jack",98.0,2,"Jim",92.0;void main()char str10;int i;doprintf("Enter a name:");scanf(&qu
4、ot;%s",str);for(i=0;i<4;i+)if(!strcmp(str,)printf("%s的排名:%d,平均分为:%.1fn",str,stui.rank,stui.score);while(*str!='0');2、有4名学生,每人有两门课程的考试成绩。试完善程序s7-2.c,编写函数index()检查总分高于160分和任意一科不及格的两类学生,将结果输出到屏幕上,并写出运行结果。#include <stdio.h>struct studentchar name10;int num;float
5、score1;float score2;stu4=“李一”,1,84.0,82.0,“王二”,2,71.0,73.0,“赵三”,3,90.0,68.0,“刘四”,4,67.0,56.0;void main()struct student *p;int index(struct student * pt);p=stu;index(p);【指导】调用函数index()时,实参是结构体指针变量。因此,定义函数index()时,形参也应该是一个同类型的结构体指针变量,例如struct student * pt。程序要检查两类学生:总分高于160分和任意一科不及格的。可以分别用两条for循环语句for(
6、i=0;i<4;i+,pt+)来实现。 总分高于160分可以表示为pt->score1+pt->score2>160;任意一科不及格可以表示为pt->score1<60|pt->score2<60。int index(struct student * pt)int i;float sum;printf("总分高于160的学生有:");for(i=0;i<4;i+)sum=stui.score1+stui.score2;if(sum>160)printf("%sn",);prin
7、tf("不及格的学生有:");for(i=0;i<4;i+)if(stui.score1<60|stui.score2<60)printf("%sn",);return 0;3、分析并测试下列程序的输出结果。#include<stdio.h>void main()unionint a;int b;s3,*p;int n=1,k;for(k=0;k<3;k+)sk.a=n;sk.b=sk.a*2;n+=2;p=s;printf("%d,%dn",p->a,+p->a);程
8、序输出的结果为: 共用体所有元素共用一个储存区域,故a,b没有区别。 【指导】注意理解共用体的内存分配和正确使用。四、 编程1. 结构体变量的成员包括年、月、日,输入日期并计算该日是当年中第几天。源程序1: #include <stdio.h>struct dateint year;int month;int day;a;void main()int i=0;printf("请输入日期,用空格间隔n");scanf("%d%d%d",&a.year,&a.month,&a.day); switch(a.month)ca
9、se 12:i=30;case 11:i+=31;case 10:i+=30;case 9:i+=31;case 8:i+=31;case 7:i+=30;case 6:i+=31;case 5:i+=30;case 4:i+=31;case 3:(a.year%400=0)|(a.year%4=0&&a.year%100=0)?(i+=29):(i+=28);case 2:i+=31;case 1:i+=a.day; printf("%d %d %d是%d年的第%d天。n",a.year,a.month,a.day,a.year,i);/1.结构体变量的成
10、员包括年、月、日,输入日期并计算该日是当年中第几天。 2. 使用结构体变量输入学生姓名、学号及三门课的成绩,计算各自的平均成绩。源程序2: #include <stdio.h>struct studentchar name20; int num20;float score1,score2,score3;a3;void main()int i;float sum3; for(i=0;i<3;i+)printf("请输入学生姓名:");gets();printf("请输入学生学号:");gets(ai.num);printf("请输入学生成绩:");scanf("%f%f%f",&ai.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业团队协作与管理制度
- 福建省福州永泰第一中学2024届高三年级第一次校模拟考试数学试题
- 2024年杭州客运资格证专业能力考试题
- 2024年西宁考客运资格证需要什么资料
- 2024年红河小型客运从业资格证2024年考试题
- 2024年海南客运资格证需要什么条件
- 2024年河南考客运资格证实操考的是什么内容
- 2024年黄山货运从业资格证考试题
- 2024年南通办理客运从业资格证版试题
- 治安保安员试题库+参考答案
- 接交车辆检查表-原版
- 剪辑师职业生涯规划与管理
- 水稻栽培技术-水稻常规栽培技术
- 四风整改台账清单
- 标准报价单模板(二)
- 【期中】第1-4单元易错题专项攻略-数学四年级上册苏教版(含答案)
- 《mc入门教程》课件
- 福建省厦门市第一中学2023-2024学年七年级上学期期中数学试卷
- 医院病房超市经营管理服务方案
- 社会秩序的维护主要靠法律还是靠道德辩论赛
- 中国各区域矢量地图素材(详细到省市、能编辑)
评论
0/150
提交评论