c语言d_namlen,c程序设计第九章结构体

《c程序设计第九章结构体》由会员分享,可在线阅读,更多相关《c程序设计第九章结构体(10页珍藏版)》请在人人文库网上搜索。

1、一、概念题二、判断题1. 结构体中的成员不可以单独使用(F)。 2. 成员名可以与程序中的变量名相同,二者不代表同一对象(T)。 3. 不能将一个结构体变量作为一个整体进行输入输出(T)。 4. 结构体变量所占内存长度是各成员占的内存长度之和(T)。5. 结构体中的成员不可以单独使用(F )。 9. 一个结构体变量的指针就是该变量所占内存段的起始地址(T)。 10. 用结构体变量作实参,形参也必须是同类型的结构体变量(T )。 三、单选题1. 设变量定义如下,则对其中的结构分量num正确的引用是( )。struct student int num ;char name20;float scor。

2、e; stud10;A. stud1.num=10;B. student.stud.num=10;C. struct.stud.num=10;D. struct student.num=10;2. 已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是( )。struct worker int no; char name20; char sex;struct birth int day; int month; int year;a;struct worker w;A day=25; month=10; year=1993;B w.birth.da。

3、y=25; w.birth.month=10; w.birth.year=1993;C w.day=25; w.month=10; w.year=1993;D w.a.day=25; w.a.month=10; w.a.year=1993;3. 对于以下的变量定义,语句( )在语法和语义上都是正确的。struct node float x,y;char s10; point=1,2,”abc”,*p;A. *p=point;B. p=&point;C. point=p;D. p-x=point.y;4. 设有以下语句typedef struct S int g;char h; T;则下面叙述中。

4、正确的是( )。A. 用S定义结构体变量B. 可以用T定义结构体变量C. S是struct类型的变量D. T是struct S类型的变量5. 设有如下说明typedef struct na int n; char c; double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是( )。A. STD tt2=1,A,62,2, B,75;B. STD tt2=1,A,62,2, B,75;C. struct tt2=1, A,2, B;D. struct tt2=1,A,62.5,2, B,75.0;6. 若要说明一个类型名STP,使得定义语句STP s等价于char *s,以。

5、下选项中正确的是( )。A. typedef STP char *s;B. typedef *char STP;C. typedef stp *char; D. typedef char* STP;7. 设有如下定义:struct ss char name10;int age; char sex;std3,*p=std;下面各输入语句中错误的是( )。A. scanf(%d,&(*p). age); B. scanf(%s,&std.n ame);C. scanf(%c,&std0.sex) D. scanf(%c,&(p- sex);8. 以下程序执行后输出结果是( )。main() uni。

6、on unsigned int n;unsigned char c;u1ul.c=A;printf(%cn,u1.n);A. 产生语法错 B. 随机值 C. A D. 65四、程序填空题Li ming: WHang kai: MFang ke: W1. 运行以下程序将打印出如下结果:#define NULL 0struct person char *nam;char sex;struct person *next;main() struct person a,b,c,d,*head,*s;a.nam=Li ming; a.sex=W;b.nam=Hang kai; b.sex=M;c.nam=。

7、Liu fei; c.sex=M;d.nam=Fang ke; d.sex=W【1】 ;head=&a;a.next= &b 【2】 ;b.next= &d【3】 ;d.next=NULL;s=head;doprintf(%s:【4】%c n,s-nam,s-sex);s=s-next;while(s!=NULL);2. 以下程序中给指针p分配三个double型动态内存单元,请填空。# include main ( ) double *p;p=(double *) malloc(sizeof(double)【1】);p0=1.5;p1=2.5;p2=3.5;printf(%f%f%fn,p0,。

8、p1,p2);3. 已知结构数组person中存有N个人员的姓名和年龄,以下程序的功能为输出数组中最大者的姓名和年龄。请填空:#define N 3struct manchar name20;int age;struct man find(struct man *p ,int n)struct man *q;int i;q=p;for(i=0;iageq-age【5】)q=p;p+;return q;main() struct man *p, *q;struct man personN=“zhang”,27,”li”,18,”wang”,73;p=person;q= find(p,N)【6】;。

9、printf(“年龄最大者为:%s,其年龄为:%dn”,q-name, q-age【7】)4. 已知head指向一个带头结点的链表,链表中每个结点包含整型数据域(data)和指向链表结点的指针域(next),以下函数返回链表中所有结点数据域之和,请填空:struct list int data;struct list *next;main()struct list *head;int s;s=sum(head);sum( struct list *h 【5】)struct list *p;int s=0;p=h-next;while(p!=NULL)s= p-data【6】;p= p-next。

10、 【7】;return s;5. 下列程序读入时间数值,将其加1秒后,输出,时间格式为hh:mm:ss,即时:分:秒。当小时等于24小时,置为0。#includestructint hour;int minute;int second;time;main()scanf(“%d:%d:%d”, &time.hour,&time.minute,&time.second【1】);time.second+;if(【2】time.second =60)time.minute+;【3】time.second=0;if(time.minute=60)time.hour+;time.minute=0;if(t。

11、ime.hour=24)time.hour=0;printf(“%d:%d:%dn”,time.hour,time.minute,time.second);6. 下列函数用于将链表中各结点的数据依次输出。请填空:struct studentint data;struct student *next;void out(struct student *head)【8】struct student *p;p=head;if(head!=NULL)doprintf(“%dn”,p-data);【9】p=p-next;while(【10】p!=NULL);五、程序阅读题1. 以下程序执行后输出结果:st。

12、ruct STU char name10;int num; ;void f1(struct STU c) struct STU b=LiSiGuo,2042;c=b;void f2(struct STU *c) struct STU b=SunDan,2044;*c=b;main( ) struct STU a=YangSan,2041,b=WangYin,2043;f1(a);f2(&b);printf(%d %dn,a.num,b.num);2041 20442. 以下程序执行后输出结果是:struct STU char name10;int num;int Score;main( ) s。

13、truct STU s5=YangSan,20041,703,LiSiGuo,20042,580,wangYin,20043,680,SunDan,20044,550,Penghua,20045,537,*p5,*t;int i,j;for(i=0;iScorepj-Score) t=pi;pi=pj;pj=t;printf(5d %dn,s1.Score,p1-Score);580 5503. 以下程序的运行结果是:。# include typedef struct studentchar name10;long sno;float score;STU;main( ) STU a=zhang。

14、san,2001,95,b=Shangxian,2002,90,c=Anhua,2003,95,d,*p=&d;d=a;if(strcmp(a.name,b.name)0) d=b;if(strcmp(c.name,d.name)0) d=c;printf(%ld%sn,d.sno,p-name);2002 Shangxian4. 以下程序执行后的输出结果是:#include struct stu int num;char name10;int age; void py(struct stu *p) printf(%sn,(*p).name); void main() struct stu s。

15、tudent3=1001,Sun,25, 1001,Ling,23, 1003,Shen,22; py(student+2); Shen5. 以下程序执行后的输出结果是:# include void main() struct T1 char c4, *s; s1=abc, def; struct T2 char *cp; struct T1 ss1; s2=ghi, jkl, mno; printf(%c, %cn, s1.c0, *s1.s); printf(%s, %sn, s1.c, s1.s); printf(%s, %sn, s2.cp, s2.ss1.s); printf(%s,。

16、 %sn, +s2.cp, +s2.ss1.s); 6. 以下程序执行后的输出结果是: #include struct NODEint num;struct NODE *next;main( ) struct NODE *p,*q,*r;int sum=0;p=(struct NODE *)malloc(sizeof(struct NODE);q=(struct NODE *)malloc(sizeof(struct NODE);r=(struct NODE *)malloc(sizeof(struct NODE);p-num=1;q-num=2;r-num=3;p-next=q;q-next。

17、=r;r-next=NULL;sum+=q-next-num;sum+=p-num;printf(%dn,sum); 47. 以下程序执行后输出结果:# include #define LEN sizeof(struct line)struct line int num ;struct line *next;void main( ) int k ;struct line *p , *head ;head=NULL;for(k=10; k0; k-)p=(struct line *) malloc (LEN) ;p-num=k;p-next=head;head=p;while(p=p-next)。

18、!=NULL)printf(%d, , p-num) ;p=p-next;六、程序设计题1. 定义一个结构体变量,其中每个成员都从键盘接收数据,然后对结构中的浮点数求和,并显示运算结果。提示:结构体类型为: struct char name8; int age; char sex2; char depart20; float w1,w2,w3,w4,w5;a;注意:结构体成员的引用方法。2. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天。注意闰年问题。提示:计算该日是本年中的第几天,是从本年1月1日起。3. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5。

19、个学生数据,要求在屏幕上显示出3门课程的平均成绩,以及最高分数的学生的数据(包括学号、姓名、3门课程成绩、平均分)。提示:定义结构体数组类型为:struct student char num6; char name8; int score3; float avr; stu5;最高分数是指每个学生3门课程的平均分最高。4. 设有一组学生的成绩数据已经放在结构数组BOY中,计算各个学生的不及格人数。 1)要求:使用结构指针变量作为函数参数编程。struct stu int num; char *name; char sex; float score; boy5=101,“li ping ”,m,4。

20、5, 102,“zhang ping”,m,62.5, 103,“he fang”,m,92.5, 104,“cheng ling”,f,87, 106,“wang ming”,m,58,; 2) 在学生Wang Ming之前添加一条记录“105, ma li, f, 20”,并打印结果。(1) 参考书上的插入结点函数。(2)在主函数中调用该函数。3) 学生cheng ling已转学,请将其记录从链表中删除,并打印结果;(1) 参考书上的删除结点函数。(2) 在主函数中调用该函数。(3) 考虑如果已知被删除结点位于链表末端,程序可以如何简化。5. 编写求链表长度的函数。提示:从链表指针头往表尾移动计算结点的个数。6. 已有两个链表a、b,每个链表的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。提示:可以定义一个新的链表,先从链表a,再从链表b中取出结点,依次按学号升序插入到新的链表中。7. 如果我有若干面值为0.1元,0.5元,1元的硬币,任意取出其中三枚,如果其和大于1元就打印该排列。(1) 参考书上程序定义枚举类型数据结构。(2) 用穷举法计算所有可能的排列情况,计算其和。(3) 将和大于1的排列输出。8. 声明新的类型名,用“R”来定义实数,用“Z”来定义整数,计算表达式“x/3+y”的值,分别取x=6.3,y=5。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值