第九章 习题及答案_第1页
第九章 习题及答案_第2页
第九章 习题及答案_第3页
第九章 习题及答案_第4页
第九章 习题及答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.第九章 习题一、选择题1.以下选项中不能正确把cl定义成结构体变量的是( )a)typedef struct b)struct color cl int red; int red;int green; int green;int blue; int blue; color; color cl; c)struct color d)struct int red; int red;int green; int green;int blue; int blue; cl; cl;2.有以下说明和定义语句struct student int age; char num8;struct student s

2、tu3=20,200401,21,200402,109,200403; struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是( )a) (p+)-num b)p-num c)(*p).num d)stu3.age3.有以下结构体说明、变量定义和赋值语句 struct std char name10; int age; char sex; s5,*ps; ps=&s0;则以下scanf函数调用语句中错误引用结构体变量成员的是( )。a)scanf(“%s”,);b)scanf(“%d”,&s0.age);c)scanf(“%c”,&(ps-sex

3、); d)scanf(“%d”,ps-age);4以下叙述中错误的是( )a)可以通过typedef增加新的类型b)可以用typedef将已存在的类型用一个新的名字来代表c)用typedef定义新的类型名后,原有类型名仍有效d)用typedef可以为各种类型起别名,但不能为变量起别名5.有以下程序段( )typedef struct node int data; struct node *next; *node;node p;精品.以下叙述正确的是(c)a)p是指向struct node结构变量的指针的指针b)node p;语句出错c)p是指向struct node结构变量的指针d)p是str

4、uct node结构变量6.若有以下定义和语句 union data int i; char c; float f;x; int y; 则以下语句正确的是( )。a)x=10.5;b)x.c=101; c)y=x;d)printf(“%dn”,x);7有以下程序main() union unsigned int n; unsigned char c; u1; ul.c=a; printf(%cn,u1.n);执行后输出结果是()a) 产生语法错 b) 随机值 c) a d) 658.有以程序#include #include typedef struct char name9; char se

5、x; float score2; stu; void f( stu a) stu b=“zhao” ,m,85.0,90.0 ; int i; strcpy(,); a.sex=b.sex; for(i=0;inext=r-next; p-next=r; r-next=q; b) p-next=r; q-next=r-next; r-next=q; c) q-next=r-next; r-next=q; p-next=r;d) r-next=q; p-next=r; q-next=r-next;10有以下程序段struct st int x; int *y;*pt: i

6、nt a=1,2,b=3,4; struct st c2=10,a,20,b;pt=c; 以下选项中表达式的值为11的是( )a) *pt-y b) pt-x c) +pt-x d) (pt+)-x二、填空题1.设有说明struct dateint year;int month; int day;请写出一条定义语句,该语句定义d为上述结构体变量,并同时为其成员year、month、day 依次赋初值2006、10、1。2已有定义如下:struct node int data;struct node *next; *p;以下语句调用malloc函数,使指针p指向一个具有struct node类型

7、的动态存储空间。请填空。p = (struct node *)malloc( );精品.3.以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为m的记录的个数,存入变量n中,并做为函数值返回。请填空: #include #define n 3 typedef struct int num;char nam10; char sex;ss; int fun(ss person) int i,n=0; for(i=0;ik=+i; p+; q-k=i+; q-; q-k=i; for(i=0;idata= (2) ; q-next=p; q= (3) ; s+; p-n

8、ext=0; return h; main() char str=link list; struct node *head; head=creatlist(str); . 三、编程题1. 定义一个能正常反映教师情况的结构体teacher,包含教师姓名、性别、年龄、所在部门和薪水;定义一个能存放两人数据的结构体数组tea,并用如下数据初始化:“mary “, w,40, computer , 1234 ,“andy “, m,55, english , 1834;要求:分别用结构体数组tea和指针p输出各位教师的信息,写出完整定义、初始化、输出过程。2.定义一个结构体变量(包括年、月、日)。计算

9、该日在本年中是第几天,注意闰年问题。3.构建简单的手机通讯录,手机通讯录包括信息(姓名、年龄、联系电话),要求实现新建、查询功能。假设通信录最多容纳50名联系人信息。4.建立一个教师链表,每个结点包括学号(no),姓名(name8),工资(wage),写出动态创建函数creat和输出函数print。5.在上一题基础上,假如已经按学号升序排列,写出插入一个新教师的结点的函数insert。精品.第9章 习题答案一、选择题1-5 b d d a c 6-10 b c a d c二、填空题1. struct data d=2006,10,1;2. sizeof(struct node)3. perso

10、ni.sex4. 134315. (1)struct node* (2)*s (3)p三、编程题1. 定义一个能正常反映教师情况的结构体teacher,包含教师姓名、性别、年龄、所在部门和薪水;定义一个能存放两人数据的结构体数组tea,并用如下数据初始化:“mary “, w,40, computer , 1234 ,“andy “, m,55, english , 1834;要求:分别用结构体数组tea和指针p输出各位教师的信息,写出完整定义、初始化、输出过程。#includestruct teacher char name8;char sex;int age;char department

11、20;float salary; ; struct teacher tea2= mary , w,40, computer , 1234 ,andy , m,55, english , 1834 ; main() int i; struct teacher *p;for( i=0;i2;i+)printf(%s,t%c,t%d,t%s,t%f, ,teai.sex,teai.age,teai.department,teai.salary); for(p=tea;pname, p-sex, p-age, p-department, p-salary); 2. 定义一个结构体变量

12、(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。#includestruct int year; 精品. int month; int day; date; main() int days; printf(“input year,month,day:”); scanf(“%d,%d,%d”,&date.year,&date.month,&date.day); switch(date.month) case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break

13、; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+31; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334

14、; break; if(date.year%4=0&date.year%100!=0|date.year%400=0)&date.month=3)days+=1; printf(“n%d/%d is the %dth day in%d.”,date.month,date.day,days,date.year); 3.构建简单的手机通讯录,手机通讯录包括信息(姓名、年龄、联系电话),要求实现新建、查询功能。假设通信录最多容纳50名联系人信息。#include#include/*手机通讯录结构定义*/struct friends_list char name10; /* 姓名 */ int age

15、; /* 年龄 */ char telephone13; /* 联系电话 */; int count = 0; /* 定义全局变量count,记录当前联系人总数 */void new_friend(struct friends_list friends );void search_friend(struct friends_list friends , char *name);精品.int main(void) int choice; char name10; struct friends_list friends50; /* 包含50个人的通讯录 */ do printf(手机通讯录功能选项

16、:1:新建 2:查询 0:退出n); printf(请选择功能:); scanf(%d, &choice); switch(choice) case 1: new_friend(friends); break; case 2: printf(请输入要查找的联系人名:); scanf(%s, name); search_friend(friends, name); break; case 0: break; while(choice != 0); printf(谢谢使用通讯录功能!n); return 0;/*新建联系人*/void new_friend(struct friends_list

17、friends ) struct friends_list f; if(count = 50) printf(通讯录已满!n); return; printf(请输入新联系人的姓名:); scanf(%s, ); printf(请输入新联系人的年龄:); scanf(%d, &f.age); printf(请输入新联系人的联系电话:);精品. scanf(%s, f.telephone); friendscount = f; count+;/*查询联系人*/void search_friend(struct friends_list friends , char *name) in

18、t i, flag = 0; if(count = 0) printf(通讯录是空的!n); return; for(i = 0; i count; i+) if(strcmp(name,) = 0) /* 找到联系人*/ flag=1; break; if(flag) printf(姓名: %st, ); printf(年龄: %dt, friendsi.age); printf(电话: %sn, friendsi.telephone); else printf(无此联系人!);4. 建立一个教师链表,每个结点包括学号(no),姓名(nam

19、e8),工资(wage),写出动态创建函数creat和输出函数print。#include#include#define null 0#define len sizeof(struct teacher)struct teacherint no;char name8;float wage;struct teacher * next; ;int n;struct teacher *creat(void) struct teacher *head;struct teacher *p1,*p2;精品.n=0;p1=p2= (struct teacher *)malloc(len);scanf(“%d%s%f”,&p1-no,p1-name, &p1-wage);head=null;while(p1-no!=0) n=n+1;if(n=1) head=p1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论