新概念C语言能力教程练习试题10答案.pdf
《新概念C语言能力教程练习试题10答案.pdf》由会员分享,可在线阅读,更多相关《新概念C语言能力教程练习试题10答案.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、10.1 答 案:结 构 型 是 一 种 数 据 类 型,与 int,float类 似,用 于 规 定 相 关 存 储 单 元 的 类 型,但 结 构 型 是 用 户 自 己 定 义 的 数 据 类 型。结 构 型 变 量 与 整 型 变 量 类 似 是 相 关 存 储 单 元 的 标 识。结 构 型 用 于 定 义 结 构 型 变 量。10.2 答 案:结 构 型 中 成 员 的 类 型 可 以 是 其 它 结 构 型。测 试 程 序 代 码:#include#include struct date(int year,month,day;);struct student(int no;cha
2、r nameflO;struct date birthday;float fm,fe;);int main()(struct student stu 1;stul.no=8;strcpy(stu 1.name,“张 三);stu 1.fm=stu 1.fe=90.0;stu 1.birthday.day=1;stu l.birthday.month=1;stu 1.birthday.year=2012;printf(学 号:dn,stul.no);printf(姓 名:sn,stu 1.name);printf(n 生 日:d 年%d 月%d 日 n,stul.birthday.year,st
3、ul.birthday.month,stul.birthday.day);printf(数 学 成 绩:.1 fnn,stul.fin);printf(英 语 成 绩:.1 fn,stu l.fe);return 0;)10.3 答 案:#include#include struct studentint no;char name10;float fm,fe;);int main()struct student stul,stu2;prinlf(请 输 入 两 个 学 生 的 学 号,姓 名,数 学 和 英 语 成 绩 n);scanf(%d%s%f%f&stu l.no,&stu 1.nam
4、e,&stu l.fm,&stu 1.fe);scanf(%d%s%f%f&stu2.no,&stu2.name,&stu2.fm,&stu2.fe);if(strcmp(stu 1.name,stu2.name)0)(printf(n 学 号:d 姓 名:s绩:.lfn*stul.no,stul.name,stuLfm,stul.fe);printf(H 学 号:%d 姓 名:s绩:.11n”,slu2.no,stu2.name,stu2.fm,stu2.fe);)else(printfC,学 号:d 姓 名:s绩:.1 fnu,stu2.no,stu2.name,stu2.fm,stu2.
5、fe);p r in t f(学 号:d 姓 名:s绩:.1 fnu,stu 1.no,stu l.name,stu l.fm,stu l.fe);)return 0;)10.4答 案:#include struct student(int no;char name10;float fm,fe;);int main()数 学 成 数 学 成 数 学 成 数 学 成 绩:%.lf绩:%.lf绩:%,lf绩:%.lf英 语 成 英 语 成 英 语 成 英 语 成 struct student stu5,temp;int i=0,j=0;printf(”请 输 入 5 个 学 生 的 学 号,姓 名
6、,数 学 和 英 语 成 绩 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+l;jstuj.fm)temp=stui;stui=stuj;stuj=temp;printf(按 照 数 学 成 绩 升 序 排 列:n);for(i=0;i更 简 便。通 过 变 量 直 接 使 用 结 构 型 存 储 单 元 的 成 员 变 量 时 使 用 成 员 操 作 符。10.7答 案:例 10-2中 construct。函 数 将 两 个 double型 小 数“组
7、合”成 一 个 结 构 型 的 复 数 变 量。#include struct date(int year,month,day;);struct date construct(int year,int month,int day)(struct date temp;仅 进 行 了 简 单 的 检 测 if(year0&month0&month0&day31)(temp.day=day;temp.month=month;temp.year=year;elsetemp.day=temp.month=temp.year=1;)return temp;)int main()(int year,mont
8、h,day;struct date date 1;printf(请 输 入 年,月,日 n”);scanf(n%d%d%dH,&year,&month,&day);date 1=construct(year,month,day);printf(%d 年 4 月 4 日 n,date 1.year,date 1.month,date 1.day);return 0;)10.8答 案:函 数 中 没 有 必 要 检 测 参 数 的 合 法 性。struct date addDay(struct date d)(struct date d2;int flag=0;d2=d;+d2.day;switc
9、h(d2.month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(d2.day 31)(flag=1;break;)case 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(Rag=1)(d2.day=1;+d2.month;if(d2.month=13)(d2.month=1;+d2.year;)retu
10、rn d2;)10.9答 案:测 试 程 序 如 下:#include struct student(int no;char nameflO;float fm,fe;int main()(struct student stu 1;printf(%dnM,sizeof(stu 1);return 0;程 序 的 输 出24结 构 型 中 成 员 分 别 占 4 个、1 0个、4 个、4 个,原 本 为 2 2字 节,但 由 输 出 结 果 可 知,实 际 上 占 了 2 4个 字 节。结 构 型 变 量 所 占 存 储 单 元 空 间 之 和 有 时 并 不 等 于 各 成 员 变 量 所 占
11、存 储 单 元 之 和。在 缺 省 情 况 下,C 编 译 器 为 每 一 个 变 量 或 是 数 据 单 元 按 其 自 然 对 界 条 件 分 配 空 间。在 结 构 中,编 译 器 为 结 构 的 每 个 成 员 按 其 自 然 对 界(alignm ent)条 件 分 配 空 间。各 个 成 员 按 照 它 们 被 声 明 的 顺 序 在 内 存 中 顺 序 存 储(成 员 之 间 可 能 有 插 入 的 空 字 节),第 一 个 成 员 的 地 址 和 整 个 结 构 的 地 址 相 同。C 编 译 器 缺 省 的 结 构 成 员 自 然 对 界 条 件 为“N 字 节 对 齐”,N
12、 即 该 成 员 数 据 类 型 的 长 度。如 in t型 成 员 的 自 然 对 界 条 件 为 4 字 节 对 齐,而 double类 型 的 结 构 成 员 的 自 然 对 界 条 件 为 8 字 节 对 齐。若 该 成 员 的 起 始 偏 移 不 位 于 该 成 员 的“默 认 自 然 对 界 条 件”上,则 在 前 一 个 节 面 后 面 添 加 适 当 个 数 的 空 字 节。C 编 译 器 缺 省 的 结 构 整 体 的 自 然 对 界 条 件 为:该 结 构 所 有 成 员 中 要 求 的 最 大 自 然 对 界 条 件。若 结 构 体 各 成 员 长 度 之 和 不 为“结
13、 构 整 体 自 然 对 界 条 件 的 整 数 倍,则 在 最 后 一 个 成 员 后 填 充 空 字 节 10.10答 案:代 码 如 下:#include#include struct student(int no;char namef 10;float fm,fe;);int studentcmp(const void*pl,const void*p2)(return(struct student*)pl)-fm-(struct student*)p2)-fm;)int main()(struct student stu5;int i=0,j=0;printf(”请 输 入 5 个 学
14、 生 的 学 号,姓 名,数 学 和 英 语 成 绩 n)for(i=0;i5;+i)scanf(%d%s%f%f&stui.no5&stui.name,&stui.fm,&stui.fe);qsort(stu,5,sizeof(struct student),studentcmp);printf(按 照 数 学 成 绩 升 序 排 列 后:n)for(i=0;i5;+i)printf(n学 号:d 姓 名:s 数 学 成 绩:.If 英 语 成 绩:.1 fnn,stui.no,stui.name,stui.fm,stui.fe);return 0;10.11答 案:#include#inc
15、lude 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;printf(”请 输 入 学 生 人 数:n);scanf(d;&n);fbr(i=l;ino,ptemp-name,&ptemp-fm,&ptemp-fe);if(i=l)phead=stu=ptemp;else(stu-next=ptemp;stu=stu-next;)if(stu!=NULL 防 止 一 个 学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新概念 语言 能力 教程 练习 试题 10 答案
限制150内