实验9 结构体、共用体与枚举类型答案

更新时间:2023-12-08 21:43:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单 元 教 案 续 页 实验九 结构体、共用体与枚举类型

实验时间: 年 月 日

一、上机验证与分析题

1、写出程序ex9_1.c运行的结果。

/*文件名ex9_1.c*/ #include struct HAR {

int x,y; struct HAR *p;

}h[2]; int main() { } 答案:3 2

2、写出程序ex9_2.c运行的结果。

/*文件名ex9_2.c*/ #include \void main() {

int z; union data

{ int x; int y; }a; h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=&h[1]; h[1].p=h;

printf(\return 0;

a.x=3; z=a.x+a.y;

printf(\

- 2 -

a.y=6;

单 元 教 案 续 页

}

答案:z=12

3、阅读程序ex9_3.c,预测结果并上机验证。

/*文件名ex9_3.c*/ #include void main() { }

答案:b.i=9,c.i=9 4、运行下列程序,写出结果

/*文件名ex9_4.c*/ #include void main() { } 答案:1 3 1

- 3 -

union data {

int i; char ch; float f;

}a,b,c; a.i=9; b=a; c=b;

printf(\

struct List { };

struct List a[3]={1,&a[1],2,&a[2],3,&a[0]}, * p; p=&a[1] ;

printf(\printf(\printf(\

int data ; struct List *next;

单 元 教 案 续 页

三、编程题:

1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex9_5.c命名,保存在自己的文件夹内。

解:struct worker

{ char number[20]; char name[20]; char sex; int age; char worked_time[80];

char phone[20]; };

注:本题答案中变量的名称和类型可由学生自行取,只要遵守标识符的命名规则和数据类型与实际情况相吻合。 2、试用结构体定义一个学院教师的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex9_6.c命名,保存在自己的文件夹内。

解:

struct teacher { char number[20]; char name[20]; char sex; int age; char worked_time[80];

char phone[20]; };

注:本题答案中变量的名称和类型可由学生自行取,只要遵守标识符的命名规则和数据类型与实际情况相吻合。

3、5位同学《C语言程序设计》课程考核成绩如下表所示: 班级 (char banji) 本网络102班 本软件103班 本软件106班 本网络103班 本网络106班 学号 (int num) 010002 020001 030008 040006 050007 - 4 -

姓名 (char name) 张小兵 李莉嘉 王明星 刘 伟 吴 菲 C语言程序设计课程考核成绩 (float score) 89 54 68 92 49 单 元 教 案 续 页

试编程求这5位同学该门课程的平均成绩,并输出成绩不及格的同学的班级、学号、姓名与成绩等信息。源程序以ex9_7.c命名,保存在自己的文件夹内。

解:

#include struct student {

char banji[20]; char num[8]; char name[20]; float score;

}stu[5] = {{\本网络102\张小兵\

{\本软件103班\李莉嘉\{\本软件106班\王明星\{\本网络103班\刘 伟\{\本网络106班\吴 菲\

main() { int i;

float average, s=0; for(i=0; i<5; i++) {

s += stu[i].score; if(stu[i].score<60) {

printf(\班级:%s \printf(\学号:%d \printf(\姓名:%s \printf(\成绩:%.2f\\n\} }

average = s/5 ;

- 5 -

单 元 教 案 续 页

printf(\平均成绩:%.2f\\n\ }

4、5位职工的月收入如下表所示: 部门 (char department) 技术科 生产科 检验科 后勤部 经营科 工号 (int num) 010002 020006 030018 040026 050068 姓名 (char name) 张援朝 李明瑞 王国庆 刘小兵 吴 伟 月收入 (float salary) 6800 2600 4800 3700 1900 试编程求这5位职工的平均月收入,并输出月收入小于3000元的职工的部门、工号、姓名与月收入等信息。源程序以ex9_8.c命名,保存在自己的文件夹内。

解:

#include struct worker {

char department[20]; int num; char name[20]; float salary;

}work[5] = {{\技术科\张援朝\

{\生产科\李明瑞\{\检验科\王国庆\{\后勤部\刘小兵\{\经营科\吴 伟\

main()

{ int i;

float average, s=0; for(i=0; i<5; i++) {

s += work[i].salary;

- 6 -

本文来源:https://www.bwwdw.com/article/o5ut.html

Top