ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:20.36KB ,
资源ID:27814100      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27814100.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(新概念C语言能力教程练习10答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

新概念C语言能力教程练习10答案.docx

1、新概念C语言能力教程练习10答案10.1答案:结构型是一种数据类型,与int,float类似,用于规定相关存储单元的类型,但结构型是用户自己定义的数据类型。结构型变量与整型变量类似是相关存储单元的标识。结构型用于定义结构型变量。10.2答案:结构型中成员的类型可以是其它结构型。测试程序代码:#include #include struct date int year,month,day;struct student int no; char name10; struct date birthday; float fm,fe;int main() struct student stu1; stu

2、1.no=8; strcpy(stu1.name,张三); stu1.fm=stu1.fe=90.0; stu1.birthday.day=1;stu1.birthday.month=1;stu1.birthday.year=2012; printf(学号:%dn, stu1.no); printf(姓名:%sn, stu1.name); printf(生日:%d年%d月%d日n, stu1.birthday.year, stu1.birthday.month, stu1.birthday.day); printf(数学成绩:%.1fn,stu1.fm); printf(英语成绩:%.1fn,

3、 stu1.fe); return 0;10.3答案:#include #include struct student int no; char name10; float fm,fe;int main() struct student stu1,stu2; printf(请输入两个学生的学号,姓名,数学和英语成绩n); scanf(%d%s%f%f,&stu1.no,&stu1.name,&stu1.fm,&stu1.fe); scanf(%d%s%f%f,&stu2.no,&stu2.name,&stu2.fm,&stu2.fe); if(strcmp(stu1.name,stu2.nam

4、e)0) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩:%.1fn,stu1.no,stu1.name,stu1.fm,stu1.fe); printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩:%.1fn,stu2.no,stu2.name,stu2.fm,stu2.fe); else printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩:%.1fn,stu2.no,stu2.name,stu2.fm,stu2.fe); printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩:%.1fn,stu1.no,stu1.name,stu1

5、.fm,stu1.fe); return 0;10.4答案:#include struct student int no; char name10; float fm,fe;int main() struct student stu5,temp; int i=0,j=0; printf(请输入5个学生的学号,姓名,数学和英语成绩n); for(i=0;i5;i+) scanf(%d%s%f%f,&stui.no,&stui.name,&stui.fm,&stui.fe); for(i=0;i5;+i) for(j=i+1;jstuj.fm) temp=stui; stui=stuj; stuj

6、=temp; printf(按照数学成绩升序排列:n); for(i=0;i更简便。通过变量直接使用结构型存储单元的成员变量时使用成员操作符。10.7答案:例10-2中construct()函数将两个double型小数“组合”成一个结构型的复数变量。#include struct date int year,month,day;struct date construct(int year,int month,int day) struct date temp;/仅进行了简单的检测 if(year0 & month0 &month0 & day 31) flag = 1; break; case

7、 2: if(d2.year%4=0 & d2.year%100!=0 | d2.year%400=0) if(d2.day 29) flag = 1; break; else if(d2.day 28) flag = 1; break; default: if(d2.day 30) flag = 1; if(flag = 1) d2.day = 1; +d2.month; if(d2.month = 13) d2.month = 1; +d2.year; return d2;10.9答案:测试程序如下:#include struct student int no; char name10;

8、float fm,fe;int main() struct student stu1; printf(%dn, sizeof(stu1); return 0;程序的输出结构型中成员分别占4个、10个、4个、4个,原本为22字节,但由输出结果可知,实际上占了24个字节。结构型变量所占存储单元空间之和有时并不等于各成员变量所占存储单元之和。在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一个成员的地址和整个结构的地址相

9、同。C编译器缺省的结构成员自然对界条件为“N字节对齐”,N即该成员数据类型的长度。如int型成员的自然对界条件为4字节对齐,而double类型的结构成员的自然对界条件为8字节对齐。若该成员的起始偏移不位于该成员的“默认自然对界条件”上,则在前一个节面后面添加适当个数的空字节。C编译器缺省的结构整体的自然对界条件为:该结构所有成员中要求的最大自然对界条件。若结构体各成员长度之和不为“结构整体自然对界条件的整数倍,则在最后一个成员后填充空字节10.10答案:代码如下:#include #include struct student int no; char name10; float fm,fe;

10、int studentcmp(const void * p1, const void * p2) return (struct student * )p1)-fm - (struct student * )p2)-fm;int main() struct student stu5; int i=0,j=0; printf(请输入5个学生的学号,姓名,数学和英语成绩n); for(i=0;i5;+i) scanf(%d%s%f%f,&stui.no,&stui.name,&stui.fm,&stui.fe); qsort(stu,5,sizeof(struct student),studentc

11、mp); printf(按照数学成绩升序排列后:n); for(i=0;i5;+i) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩:%.1fn,stui.no,stui.name,stui.fm,stui.fe); return 0;10.11答案:#include #include struct student int no; char name10; float fm,fe; struct student * next;int main() struct student *phead,*ptemp,*stu; int i,n; phead = stu = NULL;

12、printf(请输入学生人数:n); scanf(%d,&n); for(i=1;ino, ptemp-name, &ptemp-fm, &ptemp-fe); if(i=1) phead = stu = ptemp; else stu-next=ptemp; stu=stu-next; if(stu != NULL/防止一个学生也没有 stu-next=NULL; printf(nn); for(ptemp=phead; ptemp!=NULL; ptemp=ptemp-next) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩:%.1fn,ptemp-no,ptemp-

13、name,ptemp-fm,ptemp-fe); return 0;10.12答案:#include #include struct student int no; char name10; float fm, fe; struct student *next;/假设头结点head为链表中第0个结点。int insert(struct student *phead, int n, struct student *pnew) int i=0; struct student *p1, *p2; if(pnew = NULL) return 2; for(p1=phead; p1!=NULL & i

14、next) +i; if(p1 = NULL) return 1; p2 = p1-next; p1-next = pnew; pnew-next = p2; return 0;int main( ) struct student head, *ptail = &head, *ptemp; int i, n; printf(请输入学生人数:n); scanf(%d, &n); for(i=1; ino, ptemp-name, &ptemp-fm, &ptemp-fe); ptail-next = ptemp; ptail = ptail-next; ptail-next = NULL; pt

15、emp = (struct student *)malloc(sizeof(struct student); if(ptemp = NULL) printf(内存分配失败!n); return -1; printf(请输入新加学生的位置:n); scanf(%d, &i); printf(请输入新加学生的信息:n); scanf(%d%s%f%f, &ptemp-no, ptemp-name, &ptemp-fm, &ptemp-fe); printf(%dn, insert(&head, i, ptemp); for(ptemp=head.next; ptemp!=NULL; ptemp=p

16、temp-next) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩%.1fn, ptemp-no, ptemp-name, ptemp-fm, ptemp-fe); return 0;10.13答案:int del(struct student *phead, int n) int i=0; struct student *p1, *p2; for(p1=phead; p1!=NULL & i!=n-1; p1=p1-next) +i; if(p1 = NULL | n next; if(p2 != NULL) p1-next = p2-next; delete p2;

17、return 0; return 2; 10.14答案:#include #include struct student int no; char name10; float fm, fe; struct student *next;int main( ) struct student head, *ptail = &head, *ptemp; int i, n; printf(请输入学生人数:n); scanf(%d, &n); for(i=1; ino, ptemp-name, &ptemp-fm, &ptemp-fe); ptail-next = ptemp; ptail = ptail

18、-next; ptail-next = NULL; for(ptemp=head.next; ptemp!=NULL; ptemp=ptemp-next) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩%.1fn, ptemp-no, ptemp-name, ptemp-fm, ptemp-fe); ptail = head.next; ptemp=ptail-next; ptail-next=NULL; while(ptemp!=NULL) head.next = ptemp; ptemp=ptemp-next; head.next-next = ptail; ptail

19、 = head.next; printf(转置后的链表:n); for(ptemp=head.next; ptemp!=NULL; ptemp=ptemp-next) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩%.1fn, ptemp-no, ptemp-name, ptemp-fm, ptemp-fe); return 0;10.15答案:#include #include struct student int no; char name10; float fm, fe; struct student *next;int main( ) struct student

20、head, *ptail = &head, *ptemp, *p1,*p2; int i, n; printf(请输入学生人数:n); scanf(%d, &n); for(i=1; ino, ptemp-name, &ptemp-fm, &ptemp-fe); ptail-next = ptemp; ptail = ptail-next; ptail-next = NULL; for(ptemp=head.next; ptemp!=NULL; ptemp=ptemp-next) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩%.1fn, ptemp-no, ptemp-n

21、ame, ptemp-fm, ptemp-fe); ptail = head.next-next; head.next-next = NULL; while(ptail != NULL) p1 = ptail; ptail = ptail-next; for(p2=&head; p2-next!=NULL & (p2-next)-fm fm; p2=p2-next) ; if(p2-next = NULL) p1-next = NULL; p2-next = p1; else p1-next = p2-next; p2-next = p1; printf(按数学成绩排序后的学生信息如下:n); for(ptemp=head.next; ptemp!=NULL; ptemp=ptemp-next) printf(学号:%d 姓名:%s 数学成绩:%.1f 英语成绩%.1fn, ptemp-no, ptemp-name, ptemp-fm, ptemp-fe); return 0;10.16答案:函数construct(int n) 是例10-4中construct函数的另一种形式,它通过函数的返回值给出了循环链表的一个结点的地址。10.17答案:函数play同样模拟了例10-4中的报数过程。10.18答

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1