泛型编程与C标准库_第1页
泛型编程与C标准库_第2页
泛型编程与C标准库_第3页
泛型编程与C标准库_第4页
泛型编程与C标准库_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、自测练习奇数题答案1.1节1 .软件1.2节1存储单元0: 75.625存储单元2: 0.005存储单元999: 75.623 位,字节,存储单元,主存储器,辅助存储器,LAN , WAN1.3节1. a、b、c的值相加,把和存储到x;y除以z,将结果存储到x ;c减b,然后加a,将结果存储到d;z加1,并将结果存储到z ;celsius 加273.15,并将结果存储到 kelvin 。3 源程序,编译器,编辑器(字处理器)1.4节1问题需求,分析,设计,实现,测试和验证,维护1.5节1.算法细化(1) 获得以公里表示的距离。(2) 把距离转化成英里。2.1用英里表示的距离是用公里表示的距离的

2、0.621倍。(3) 显示用英里表示的距离。第2章2.1节1 . a.void doubleJ1returnJb.printfc.MAX ENTRIESJGd.time , xyz123 ,this_is_a_long_onee.Sues , part#2char#includeJJ3 .预处理器,#define 和 #include2.2节1.a. 0.01031234500.0123450.0b. 1.3e+31.2345e+24.26e- 33.double1intchar1566自测练习奇数题答案t it */显示提示。当调用scanf后有数据回应时调用printf2.3节1. Ent

3、er two integers5 7m = 10n = 213. My name is Jane Doe.I live in Ann Arbor, MIand I have 11 years of programming experience.2.4节1. /* This is a comment? */* This one seems like a comment doesn2.5节1. a. 22/7 为 37/22 为 022 % 7 为17 % 22为7b. 16 / 15为 115 / 16 为 016 % 15为115 % 16为15c. 23 / 3为 73 / 23 为 023

4、 % 3 为23 % 23为3d. 16 / -3为?-3 / 16 为?16 % -3为?-3 % 16为?(?意为结果是变化的)3. a. 3g. 未定义m.-3.14159b. ?h.未定义n.1.0c. 1i. ?o.1d.-3.14159j. 3p.未定义e. ?k. -3.0q.3f. 0.0l. 9r.0.75(?意为结果是变化的)5. a. white 为 1.6666 c. orange 为 0e.lime 为 2b. green 为0.6666 d. blue 为-3.0f.purple为0.02.6节1. printf(Salary is %10.2fn,salary);

5、3. xIs 2.34 Is 00i 00 x 2.32.7节1 在调用scanf获得数据之前先调用printf提示用于交互式程序而不用于批处理程序。批处理程序应该回显输入,交互程序也可以回显输入。3.1节1问题输入double hoursdouble rate/* number of hours worked */* hourly rate of pay */问题输岀double gross/* gross salary */算法(1)输入工作时间hours和每小时所付的工资率rate。(2)计算总工资gross。自测练习奇数题答案5672.1 把 hours * rate 的值赋给 gro

6、ss568自测练习奇数题答案c.*4.2节1 . 1 (TRUE)0 (FALSE)1 (TRUE)1 (TRUE)(3)显示总工资gross。3 .问题输入double reg_hours /* number of regular hours worked */double ot_hours /* number of overtime hours worked */double rate /* hourly rate of pay*/问题输岀double gross /* gross salary*/算法(1) 输入常规工作时数(reg_hours )、加班时数(ot_hours )和每小时

7、所付工资比率rate(2) 计算总工资gross。2.1将reg_hours * rate的值赋给 gross。2.2前一步 gross 的值再加上 ot_hours * 1.5 * rate。(3) 显示总工资gross。3.2节1 . a. sqrt(u + v) * pow(w,2)b.log(pow(x,y)c.sqrt(pow(x 3)d.fabs(x * y- w / z)3.3节1 设计阶段3.4节1 . HI MOM被用较大的印刷体字母垂直地输出3.5节1 . a. 3141.590000b.31.415900* 31.42 * *d.3.141590e.3.1415903 函

8、数参数被用来在一个程序的各个模块之间、主程序与其模块之间传递信息。参数使函数更容易被其 他函数或程序复用。带参数的函数是建造更大程序的基石。3. x = 3.0 y = 4.0 z = 2.0 flag = 0! ( flag II ( y + z = x- z )04.0 2.03.0 2.06.0 1.0115. ans 为 2。自测练习奇数题答案5694.3节1. a. not lessb.greater than4.4节1. if (x y )x = x + 10.0;printf(x Biggern); else printf(x Smallern);printf(y is %.2f

9、n,y);3. if (engine_type = J) printf(Jet engine); speed_category = 1; else printf(Propellers);speed_category = 2;4.5节1额外的程序常量:CAP_GALLONS 100 /* maximum number of gallons (in thousands) for basic fee */额外的程序变量:int excess /* number of gallons over CAP_GALLONS */comp_use_charge 的改写算法:(1)used 为 current

10、-previous(2)if used CAP_GALLONSexcess为 used - GAP_GALLONSuse_charge为 CAP_GALLONS * PRE_1000_CHG +excess * PER_1000_CHG * 2elseuse_charge为 used * PER_1000_CHG4.7节1.语句部分工资税结果if (salary 0.0 )23500.00?23500.00 0.00为假else if (salary 15000.00 )23500.00 15000.00为假else if (salary 30000.00 )23500.00 7 )if (p

11、H 2) printf(Acidic);elseprintf(Very acidic);4.8节1.redblue yellow570自测练习奇数题答案5.1节1 . a.计数循环(1) 初始化sum为0。(2) 设置lev为0。(3)while lcv100 , count 加 1 ;(5) 获得下一个温度并存储输入状态。5.2节1 . 0 1019283746555.3节1 . a. Enter an integer5525125625b. Enter an integer 66362161296c.Enter an integer 77493432401一般地,该循环显示n, n2, n

12、3和n4。3 . count = 0;sum = 0;while (count ); scanf(%d, & next_num); sum += next_num; count += 1;printf(%d numbers were added; , count); printf(their sum is %d.n,sum);5.4节1.当n = 8时:语句addsum作用sum = 0;0初始化sum为0odd = 1;1初始化odd为1odd n;18为真sum += odd;1sum = 0 + 1odd +=23odd =1 +2自测练习奇数题答案571odd n;38为真sum +=

13、 odd;4sum = 1 + 3odd +=25odd = 3 + 2odd n;58为真sum +=odd;9sum = 4 + 5odd +=27odd = 5 + 2odd n;78为真sum += odd;16sum = 9 + 7odd += 29odd = 7 + 2odd n;98为假退出循环printf(Sumof Output:Sum of positiveodd numbers less than8 is 16.3.两个问题的答案都为0。5. +iT;n = i * j;m = i + j;j-;P = i + j;7. a. 1 1028364452b. j = 10;

14、for ( i = 0; i 7984.2After removal of 7984.20 gallons (190.10 barrels),Only 7980.20 barrels are left.* WARNING *Available Supply is less than 10 percent of tanks 80000.00-barrel capacity.5.6节1 .步骤a-初始化循环控制变量。步骤c循环重复的条件。步骤e循环控制变量的更新。572自测练习奇数题答案5.7节1 . a.*5.8节1 . while循环较好,因为do-while在每次迭代时对相同的条件检测两次。

15、5.9节1 . for (status = fscanf(hdd_file, %d, &next_hdd);status = 1;status = fscanf(hdd_file, %d,&next_hdd) if (next_hdd heat_deg_days) heat_deg_days = next_hdd; coldest_mon = ct; _+ct;5.10 节1 . for ( count = 0; count = n; +count) printf(DEBUG* * * count = %dn, count); sum += count;printf(DEBUG* * * su

16、m = %dn, sum);第6章6.1节1. voidsum_n_avg(double n1, /* input numbers */double n2,double n3,double *sump, /* output-sum of the three numbers */double *avgp) /* output-average of the numbers */3.引用何处合法数据类型值&manymainint *指向带灰底的单元valpsubdouble *指向带灰底的单元codemaincharg&codemainchar *指向不带底纹的单元countpsubint *指向带

17、网格的单元*countpsubint14*valpsubdouble17.1letpsubchar *指向不带底纹的单元&xmaindouble *指向带灰底的单元6.2节1.函数调用num1num2num3order(&n um3, &n um2);81210order(&n um2, &num1);128order(&n um3, &n um2);108自测练习奇数题答案573对函数order的这种调用顺序将numl、num2、num3变成降序(从最大到最小)6.4节1. voidonef(int dat, int *outlp, int *out2p)int tmp;twof(dat,

18、&tmp, out2p);voidtwof(int indat, int *result1p, int *result2p)6.5节1因为有很多值需要返回,这只能通过使用输岀参数实现。第7章7.1节1表示误差岀现在当一个 double类型变量的尾数包含的位(二进制位)数不足以精确表示某个分数时; 抵消误差发生在当两个在数量上相差悬殊的数进行某种运算时,其结果是较小的数丢失。3. xymn10.57.252a. x / (double)m2.1b. x / m2.1c. (double)( n * m)10.0d. (double)(n / m) + y7.2e. (double)(n / m)

19、0.07.2节1. a. 3b. Ec. -17.3节1. typedef enummonday, tuesday, Wednesday, thursday, friday, Saturday, Sunday dat_t;a.0b.3c.0 (FALSE)d.friday574自测练习奇数题答案e.Wednesdayf.1 (TRUE)7.4节1 . 2.0.30就是一个这样的区间。第8章8.1节1 . x3是一个有效的变量名,x3是对数组x第4个元素的引用3. double sq_root11;int cube11;8.2节x0 x1x2x3x4x5x6x71.之前16.012.06.08.

20、02.512.014.0-54.5之后x0 x1x2x3x4x5x6x716.012.06.08.012.014.014.0-54.58.3节1 . #include #define MAX_SIZE 11double cubeMAX_SIZE; int sq_rootMAX_SIZE; int i;for (i = 0; i MAX_SIZ E; +i) sq_rooti = sqrt(double)i); cubei = i * i * i;8.4节1 . seg_len = sqrt(pow(xi+13 . sum = 0;for (i = 0; i LIST_SIZ E; i += 2

21、) sum += listi;-xi, 2) + pow(yi+1-yi, 2);8.5节1 如果一个数组的几个元素都被某个函数处理,传递整个数组数据比传递单个的元素更好。3. /* Gets data to place in dbl_arr until value of sentinel* is encountered in the input.* Returns number of values stored through dbl_sizep.* Stops input prematurely if there are more than dbl_max data* values bef

22、ore the sentinel or if invalid data is encountered.* Pre: sentinel and dbl_max are defined and dbl_max*is the declared size of dbl_arr* Post: returns 1 for no error, and 0 for any error conditions.*/ intfill_to_sentinel(intdbl_max,/* inputdouble sentinel,/* inputlist */double dbl_arr,/*outputint *db

23、l_sizep) /* outputstored in dbl_arr */-declared size of dbl_arr */ -end of data value in input-array of data */-number of data values自测练习奇数题答案575576自测练习奇数题答案double data;int i, status;int result = 1;/* Sentinel input loop*/i = 0;status = scanf(%lf,&data);while (status = 1 & data != sentinel & i dbl_m

24、ax) _dbl_arri = data;i+;status = scanf(%lf, &data);/* Issues error message on premature exit */if (status != 1) printf(n* Error in data format *n);printf(* Using first %d data values *n, i);result = 0; else if (data != sentinel) printf(n* Error: too much data before sentinel *n);printf(* Using first

25、 %d data values *n, i); result = 0;/* Sends back size of used portion of array, and error status */*dbl_sizep = i;return (result);5. | $| $ -| $ ch is -.8.6节1. a. n-1作为匹配的位置返回。b.第一个匹配的位置被返回。3 .为实现降序排序,用index_of_max代替所出现的每个index_of_min ,用largest代替所有的smallest来改写选择排序算法。8.7节1. a. int i, j, k;for (i = 0;

26、 i MAXCRS; +i) printf(Processing course number %d: n, i);for (j = 0; j 5; +j) printf( Campus %dn, j);for (k = 0; k );break;case 1:printf(Sophomores );break;case 2 :printf(Juniors );break;case 3 : printf(Seniors );break;scanf(%d, &enrollijk);自测练习奇数题答案577 i, j,jcnt; /* Number of juniors. */jcnt =

27、 0;for (i = 0; i MAXCRS; +i)for (j = 0; j = 0 & rank = 0 & course MAXCRS)for (i = 0; i 5; +i)cnt += enrollcourseirank;elsecnt = -1;return (cnt);用printf(Number of sophomores in course 2 is %dn, find_students(enroll, 1,2); i, j, total, upper;total = 0;upper = 0;for (j = 0; j 5; +j) for (i = 0; i

28、MAXCRS; +i)upper += enrollij2 + enrollij3;printf(Number of upperclass students on campus );printf(%d is %d.n, j, upper);total += upper;printf(Total upperclass students on all campuses is %d.n,total);8.8节1. a. sales1fall, sales1winter, sales1spring, sales1summerb.sales0spring, sales1spring, sales2spr

29、ing,sales3spring, sales4springc.sales0fall, sales1fall, sales2fall,sales3fall, sales4fallsales0winter, sales1winter, sales2winter,sales3winter, sales4wintersales0spring, sales1spring, sales2spring, sales3spring, sales4springsales0summer, sales1summer, sales2summer, sales3summer, sales4summer9.1节1. b

30、3./* 0123456789012345678901234567890 */char blanks=;或char blanks30=;9.2节578自测练习奇数题答案1. Ad John Quincy Join9.3节1. John Adams9.4节1. a. if (strcmp(name1,name2) = 0)printf(Names match.n);elseprintf(Names do not match.n);b.if (strcmp(w1,w2) 0)strcpy(word, w1);elsestrcpy(word, w2); i, len;len = strle

31、n(s1);i = strlen(s2);if (i len)len = i;/* Since len will never be larger than STR_LEN, no need tocheck for overflow of strings. */for (i = 0; i successful input of pos*0 = error encountered*EOF = insufficient data before end of file*In case of error or EOF, value of type long_lat_t*output argument i

32、s undefined.*/intscan_long_lat(long_lat_t *pos) /* output - address oflon g_lat_tstructure to fill */int result;result = scanf(%d%d %c, &pos-degrees,& pos-minutes,&pos-direction);if (result = 3)result = 1;return(result);11.3 节1.当time_now作为一个参数传递给函数new_time时,它的成员的值被复制到new_time的形参 time_of_day。这些成员的赋值仅

33、仅对函数中局部副本的该结构体进行了改变。11.4 节1. (6.50+ 5.00i) + (3.00-4.00i) = (9.50 + 1.00i)Second result = (1.50 + 5.00i)11.5 节1. &不用于units是因为units是一个unit_t类型的数组,不带任何下标的数组名总是表示数组中第一个 元素的地址。11.6 节1. hair_info_t 类型的变量被分配了 22个字节,但当wear_wig有效时仅使用4个字节。第12章12.1 节1. a. n = 123x = 3.145str = xyzch = nb. n = 123x = 3.145str

34、= xyzch = nc. n = 3x = 123.0str = 145ch =.d. n = 35x = ?str = xyzch = z3. fscan_complex(FILE *inpstatus = fscanf(inp,12.2 节1. a. fread(&exec, sizeof(person_t), 1, psn_inp);c. fwrite(&exec, sizeof(person_t), 1, psn_outp);e. fread(&num_err3, sizeof(int), 1, nums_inp);12.3 节1. a. category 的下界 =printer

35、stands category 的上界 =printer stands price 的上界=99.99b.stock number 的下界 =5241582自测练习奇数题答案stock number 的上界=5241c.category 的下界 =data cartridgescategory 的上界 =data cartridges3.match并不检测数目因为它在一个 while循环内被调用,该循环对match的调用只适用于范围内的存货数目。第13章13.1 节1. a.当控制器正确设置时,微波炉快速加热放在里面的物体。没有必要知道炉子实际上通过特殊设计发 射能量来激励物质中的水分子,从而

36、加热食物。b. 简单地通过打开电视和更换频道,就可以看到各种各样的节目。用于收听和显示节目信号的电子器 件和用户完全隔离。c. 计算器允许用户在不知道任何嵌入计算器的电子器件和逻辑的情况下进行大量的数值计算。13.2 节1 系统头文件名被尖括号( )包围,而用户头文件名被引号(”)包围。3 .什么,怎么13.3 节1 这个宏包含在头文件中,所以用户将知道planet结构体的字符串大小。13.4 节1 . unit_max 为 autofound 为 autoconvert 为 externquantity为 auto13.5 节1 仅在一个文件中包含常量宏和类型定义使库的维护和改变更容易。13

37、.6 节1 . #if defined (UNIX)printf(Enter to quit.)# elif defined(VMS) printf(Enter to quit.) #endif13.7 节1 下列代码紧加在int ch; 之后/* See if arguments were included */if (argc name, Uranus);5 . letp = (char *)calloc(30, sizeof(char);584自测练习奇数题答案 节1. AC DC AC9115 22014.4 节1.查找5cur_nodep 为 headp (开始)cur_nodep 为 headp-restp(4 被检测)cur_nodep为 headp-restp-restp(1 被检测)cur_nodep为headp-restp-restp(5被检测,cur_nodep 被返回)查找2cur_nodep为 headp (开始)cur_nodep为 headp-restp(4 被检测)cur_nodep 为 headp-restp-restp(1 被检测)cur_nodep 为 hea

温馨提示

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

评论

0/150

提交评论