《C++程序设计基础(第二版)[周霭如等编著]课后习题1-5答案.pdf》由会员分享,可在线阅读,更多相关《C++程序设计基础(第二版)[周霭如等编著]课后习题1-5答案.pdf(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1章 基 本 数 据 与 表 达 式 1.1选 择 题 1.一 个 最 简 单 的 C+程 序,可 以 只 有 一 个(c)0(a)库 函 数(b)自 定 义 函 数(c)main函 数(d)空 函 数 2.用 C+语 言 编 制 的 源 程 序 要 变 为 目 标 程 序 必 须 要 经 过(a)解 释(b)汇 编(c)编 辑 d)o(d)编 译 3.C+程 序 中 的 简 单 语 句 必 须 以(b)结 束。(a)冒 号(b)分 号(c)空 格 4.有 说 明 int a=0;double x=5.1 6;以 下 语 句 中,(d)花 括 号 c)属 于 编 译 错 误。(a)x=a/
2、x;(b)x=x/a;(c)a=a%x;5.执 行 C+程 序 时 出 现 的“溢 出”错 误 属 于(c(a)编 译 6.下 列 选 项 中,(a)while(c)sizeof(b)连 接(c)运 行(d)x=x*a;)错 误。(d)逻 辑 7.8.9.全 部 都 是 C+关 键 字 的 选 项 为(cIF Staticcase extern)o(b)break char go(d)switch float integer按 C+标 识 符 的 语 法 规 定,合 法 的 标 识 符 是(a)_abc下 利 选 项 中,(a)标 识 符(b)new(c)a)oJ i(d)“agea)不 能
3、作 为 C+的 分 隔 符。(b);(c)(d)+卜 列 正 确 的 八 进 制 整 型 常 量 表 示 是(b(a)OaO(b)0151 0.下 列 错 误 的 十 六 进 制 整 型 常 量 表 示 是(a)0 x11(b)Oxaf(c)o(c)c:Oxg080)。(d)0 x10(d)Oxlf1 1.在 下 列 选 项 中,全 部 都 合 法 的 浮 点 型 数 据 的 选 项 为(b)o(a)-le3.50.IE-12(c)0.2e-28e+215.2e-4-12345.e-51 2.下 列 正 确 的 字 符 常 量 为(d)。(a)a1 3.下 列 选 项 中,(a)t=b;b=a
4、;(c)t=a;a=b;(b)name(b)(d)(c)a12.345.0e(l+4)(d)10l-le+50.1d)不 能 交 换 变 量 a和 b的 值。a=t;b=t;(b)a=a+b;b=a-b;a=a-b;(d)a=b;b=a;14.关 于 下 列 语 句 叙 述 错 误 的 是(int i=10,*p=&i;(a)p的 值 为 10(c)*p表 示 变 量 i的 值 a)o(b)p指 向 整 型 变 量 i(d)p的 值 是 变 量 i的 地 址 1 5.有 以 下 变 量 说 明,下 面 不 正 确 的 赋 值 语 句 是(b)。int a=5,b=10,c;int*pl=&a,
5、*p2=&b(a)*p2=b;(b)pl=a;(c)p2=pl;(d)c=*pl*(*p2);16.有 以 下 变 量 说 明,下 面 正 确 的 语 句 是(b)。int a=10,b;int&pa=a,&pb=b;(a)&pb=a;(b)pb=pa;(c)pb=&pa;(d)*pb=*pa;17.执 行 下 面 语 句 序 列 后,a和 b的 值 分 别 为(b)oint a=5,b=3,t;int&ra=a;int&rb=b;t=ra;ra=rb;rb=t;25.设 X为 整 型 变 量,不 够 正 确 表 达 数 学 关 系 1 X 5 的 C+逻 辑 表 达 式 是(a)3和 3(b
6、)3和 5(c)5和 3(d)5和 518.在 下 列 运 算 符 中,(d)优 先 级 最 高。(a)=(b)*=(c)+(d)*19.在 下 列 运 算 符 中,(d)优 先 级 最 低。(a)!(b)&(c)!=(d)?:20.设 int i=l,j=2;则 表 达 式 i+j的 值 为(C)o(a)1(b)2(c)3(d)421.设 int i=l,j=2;则 表 达 式+i+j的 值 为(d)o(a)1(b)2(c)3(d)422.在 下 列 表 达 式 选 项 中,(c)是 正 确。(a)+(a+)(b)a+b(c)a+b(d)a+b2 3.已 知 int i=0,j=l,k=2;
7、则 逻 辑 表 达 式+i-j&+k 的 值 为(b)。(a)0(b)1(c)2(d)324.执 行 下 列 语 句 后,x的 值 是(d),y的 值 是(C)oint x,y;x=y=1;+x|+y;(a)不 确 定(b)0(c)1(d)2(a)o(a)1 X 5(b)X=2|X=3|X=4(c)1X&X5(d)!(X=5)26.已 知 int x=5;执 行 下 列 语 句 后,x的 值 为(c)。x+=x-=x*x;(a)25(b)40(c)-40(d)2027.设 int a=l,b=2,c=3,d=4;则 以 下 条 件 表 达 式 的 值 为(a)。a b?a:c d?c:d(a)
8、1(b)2(c)3(d)428.以 下 逗 号 表 达 式 的 值 为(d)o(x=4*5,x*5),x+25(a)25(b)20(c)100(d)451.2 把 下 列 数 学 表 达 式 写 成 C+算 术 表 达 式 1.11-.1+-x+y2.x xx(ax+b)+cj+d+e3.In(l+la+fel10)a-b5.cot(=与 4.1+y cos 4 8 6.lg(a2+ab+b2)【答 案】1.1/(1+1/(1+l/(x+y)2.x*(x*(x*(a*x+b)+c)+d)+e3.log(1+pow(fabs(a+b)/(a-b),10)4.sqrt(1+3.14159/2*co
9、s(48*3.14159/180)5.1/tan(1-x*x)/(1+x*x)或 者 cos(1-x*x)/(1+x*x)/sin(1-x*x)/(1+x*x)6.loglO(a*a+a*b+b*b)1.3 用 关 系 表 达 式 或 逻 辑 表 达 式 表 示 下 列 条 件 1.i 被 j 整 除 2.n 是 小 于 正 整 数 k 的 偶 数 3.lWx10 4.x,y 其 中 有 一 个 小 于 z5.y-100,-10,并 且 ye 10,1006.坐 标 点(x,y)落 在 以(10,2 0)为 圆 心,以 3 5 为 半 径 的 圆 内 7.三 条 边 a,b 和 c 构 成 三
10、 角 形 8.年 份 Year能 被 4 整 除,但 不 能 被 100整 除 或 者 能 被 400整 除【答 案】1.3.5.6.7.8.i%j=0K=x&x=-100&y=-10sqrt(pow(x-10),2)+2.(nk)&(n%2=0)4.xz|y=10&y=100)pow(y-20),2)c&b+ca&c+ab(year%4=0)&(year%100!=0)i i(year%400=0)1.4阅 读 下 列 程 序,写 出 执 行 结 果 1.#include void main()(int a=1,b=2,x,y;cout a+b endl;cout b;y=x-&b;cout
11、 x endl;cout y endl;)【答 案】42-102.ttinclude void mainOint x,y,z,f;x=y=f=xcout cout cout cout Z=1;I|y-&z+;x=x endl;y=y endl;“z=z endl;f=f endl;【答 案】x=0y=0z=2f=l3.#include#includevoid mainO int a=123;int&ra=a;int*pa=&a;coutsetw(5)decasetw(5)octrasetw(5)hex*paendl;)【答 案】123 173 7b1.5 思 考 题 1,什 么 叫 数 据 类
12、 型?数 据 的 类 型 定 义 有 什 么 作 用?2.数 据 对 象 在 C+中 有 什 么 不 同 的 访 问 方 式?请 编 写 一 个 程 序 验 证 之。3.普 通 数 据 类 型 变 量 和 指 针 类 型 变 量 的 定 义、存 储、使 用 方 式 上 有 何 区 别?请 编 写 一 个 程 序 验 证 之。4.什 么 叫 数 据 对 象 的 引 用?对 象 的 引 用 和 对 象 的 指 针 有 什 么 区 别?请 用 一 个 验 证 程 序 说 明 之。5.为 了 约 束 只 能 对 数 据 对 象 的 值 做 读 操 作,C+采 用 什 么 方 式?请 做 出 简 要 归
13、 纳。6.什 么 叫 表 达 式?表 达 式 值 的 类 型 由 什 么 因 素 决 定?使 用 不 同 运 算 符 连 接 以 下 3个 变 量,请 写 出 5个 以 上 获 得 值 等 于 1的 表 达 式。int a=l,b=2;double x=0.5;1.6 编 程 题 L 输 入 一 个 三 位 整 数,将 它 反 向 输 出。【解 答】ttinclude void mainO int x,i,j,k;cout x;i=x/100;j=(x-i*100)/10;k=x-i*100-j*10;cout k j i endl;2.输 入 平 面 上 某 点 横 坐 标 x 和 纵 坐
14、标 y,若 该 点 在 由 图 1.11表 示 的 方 块 区 域 内,则 输 出 1;否 则,输 出 0。图 1.1 1 正 方 形【解 答】#include void main()float x,y,b;cout please input x,y:;cin x y;b=(-2=x)&(x=2)&(-2=y)&(y=2);cout b endl;3.输 入 三 个 整 数,求 出 其 中 最 小 数(要 求 使 用 条 件 表 达 式)。【解 答】#include void main()int a,b,c,temp,min;cout c;temp=(ab)?a:b;min=(tempc)?t
15、emp:c;cout min=min 0C)o(a)y=1;if(x=0)if(x=0)y=0;else y=-1;(c)if(x=0)if(x 0)y=1;else y=0(d)y=-1;if(x=0)if(x 0)y=-1else y=1;3.假 设 i=2,执 行 下 列 语 句 后 i 的 值 为(b)0switch(i)case 1:i+case 2:i-case 3:+icase 4:ibreak;default:i+;)(a)1(b)2(c)3(d)44.已 知 int i=0,x=0;下 面 whi le语 句 执 行 时 循 环 次 数 为(d)。while(!x&i 3)x
16、+;i+;(a)4(b)3(c)2(d)15.已 知 int i=3;下 面 do_while语 句 执 行 时 循 环 次 数 为(b)。do i;c o u t i en d l;w h ile(i!=1);(a)1(b)2(c)6.下 面 for语 句 执 行 时 循 环 次 数 为(3b)o(d)无 限 cout i j endl;for(int i=0,j=5;i=j;)i+;j-;(b)5(c)10(d)无 限)(a)07.以 下 死 循 环 的 程 序 段 是(b)o(a)for(int x=0;x=0);(c)int a=5;while(a)a;(d)int i 二 3;for
17、(;i;i);2.2阅 读 下 列 程 序,写 出 执 行 结 果 1.include void main()int a,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;else if(!b)if(!c)x=15;else x=25;cout d endl;)【答 案】202.Sinclude void main()int a=0,b=1;switch(a)case 0:switch(b)case 0:cout a=a b=b endl;break;case 1:cout a=a b=b endl;break;)case 1:a+;b+;cout a=a b=b endl
18、;)【答 案】a=0 b=1a=1 b=23.#include void main()int i=1;while(i=10)if(+i%3!=1)continue;else cout i endl;【答 案】47104.#include void main()int i=0,j=5;do i+;j;if(i3)break;while(j0);cout i=i t j=j【答 案】i=4 j=15.#include endl;void main()int i,j;for(i=l,j=5;j;cout i 7)【答 案】3 3ij;i+)tf j endl;6.Sinclude void main
19、()int i,s=0;for(i=0;i5;i+)switch(i)case 0:s+=icase 1:s+=icase 2:s+=ibreak;break;break;default:s+=2cout s=s endl;)【答 案】s 二 77.Sinclude void main()int i,j,x=0;for(i=0;i=3;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;)x+;cout x=x endl;)【答 案】x=162.3 思 考 题 1.C+中 有 什 么 形 式 的 选 择 控 制 语 句?归 纳 它 们 语 法 形 式、应 用 场 合
20、。根 据 一 个 实 际 问 题 使 用 不 同 的 条 件 语 句 编 程。2.什 么 叫 循 环 控 制?归 纳 比 较 C+中 各 种 循 环 控 制 语 句 的 语 法、循 环 条 件 和 循 环 结 束 条 件 的 表 示 形 式 及 执 行 流 程。3.根 据 一 个 实 际 问 题,用 不 同 的 循 环 语 句 编 程,分 析 其 优 缺 点。4.用 if语 句 和 goto语 句 组 织 循 环,改 写 思 考 题 2.3 第 3 小 题 编 写 的 程 序。分 析 在 什 么 情 况 下 可 以 适 当 使 用 goto语 句。2.4 编 程 题 1.输 入 某 学 生 成
21、 绩,若 成 绩 在 8 5 分 以 上 输 出“very good,若 成 绩 在 60分 到 85分 之 间 输 出“good”,若 成 绩 低 于 60分 输 出“no good”。【解 答】#include void mainO float score;cout=85)cout”Very good!”;else if(score=60)cout Good!;else cout No good!”;)2.输 入 三 个 数,按 从 小 到 大 的 顺 序 输 出。【解 答】#include void main()int a,b,c,t;cout a,b,c二;cin a b c;if(a
22、b)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;cout a Jt J b t c endl;)3.输 入 三 角 形 的 三 条 边,判 别 它 们 能 否 形 成 三 角 形,若 能,则 判 断 是 等 边、等 腰、还 是 一 般 三 角 形。【解 答】include void main()float a,b,c;cout b c;if(a+b c&b+c a&c+a b)if(a=b&b=c)cout 等 边 三 角 形!endl;else if(a=b|a=c|b=c)cout 等 腰 三 角 形!endl;else cout 一 般
23、 三 角 形!endl;)else cout 不 能 形 成 三 角 形!endl;)4.输 入 百 分 制 成 绩,并 把 它 转 换 成 五 级 分 制,转 换 公 式 为:A(优 秀)90-100B(良 好)8 0-8 9grade(级 别)=C(中 等)7 0-7 9D(合 格)6 0-6 9E(不 合 格)0-5 9【解 答】#include void mainO float score;char grade;cout”score二;cin score;if(score=0&score=100)switch(int(score)/10)case 8:grade=b;break;cas
24、e 7:grade=c;break;casecase10:9:grade=a;break;casecasecasecasecasecasecase6:grade=d;break;5:4:3:2:1:0:grade=e;break;else cout 数 据 输 入 错 误!endl;goto end;cout grade endl;e n d:;分 号 不 能 省 5.编 程 序 模 拟 剪 刀、石 头 和 纸 游 戏。游 戏 规 则 为:剪 刀 剪 纸,石 头 砸 剪 刀,纸 包 石 头。玩 游 戏 者 从 键 盘 上 输 入 s(表 示 剪 刀)或 r(表 示 石 头)或 p(表 示 纸)
25、,要 求 两 个 游 戏 者 交 替 输 入,计 算 机 给 出 输 赢 的 信 息。【解 答】23456789101112Sinclude void main()char first,second;cout First input(s,r or p):;cin first;cout Second input(s,r or p):;cin second;switch(first)case s:switch(second)case s:cout Scissor ties scissor.endl;goto end;13 case r:cout Scissor is crushed byrock.
26、z,endl;goto end;14 case p:cout Scissor cuts paper.endl;goto end;15 default:cout second input error!,z endl;goto end;161718)case r:switch(second)19 case s:cout Rock crushes scissor.20 endl;goto end;case r:cout”Rock ties rock.endl;21goto end;case p:cout Rock is wrapped by22paper.z,endl;goto end;defaul
27、t:cout second input error!zz 23endl;goto end;)24case p:25 switch(second)26 case s:cout”Paper is cut by scissor.27 endl;goto end;case r:cout”Paper wraps the rock.28 endl;goto end;case p:cout Paper ties paper.,z 29endl;goto end;default:cout second input error!30endl;goto end;)31 default:cout First inp
28、ut error!/z endl;goto32end;)33 e n d:;34 35 6.输 入 一 个 整 数,输 出 该 整 数 的 所 有 素 数 因 子。例 如,输 入【解 答】120,输 出 为 2、2、2、3 和 5。#include void main()int m,i=2;cout please input m:;cin m;while(i=m)if(m%i=0)cout i,;m=m/i;)else i+;)36 7.使 用 迭 代 公 式 1川=(乙+4/工)/2(=0,12.;/=/2)编 程 序 求 某 一 正 整 数 a 的 平 方 根。【解 答】ttinclude
29、#include void mainO const float eps=le-8;float a,xO,x;cout eps)xO=x;x=(xO+a/xO)/2;cout x endl;)37 8.已 知 X=0,10,20,,180,求 sinx,cosx 和 tanx的 值。【解 答】#include#include#include void main()const double pi=3.14159265;int i;double x,yl,y2,y3;cout setw(2)x setw(15)sin(x)setw(15)cos(x)setw(15)tg(x)endl;for(i=0
30、;i=18;i+)x=i*10*pi/180;yl=sin(x);y2=cos(x);y3=yl/y2;cout setw(2)i setw(15)yl setw(15)y2 setw(15)y3 endl;)38 9.在 100到 200中 找 出 同 时 满 足 用 3 除 余 2,用 5 除 余 3 和 用 7 除 余 2 的 所 有 整 数。【解 答】#include void mainO int i;fo r(i=100;i=200;i+)if(i%3=2)&(i%5=3)&(i%7=2)cout i endl;)39 10.求 100到 999中 的 水 仙 花 数。所 谓 水 仙
31、 花 数 是 指 一 个 三 位 数,它 的 每 位 数 字 的 立 方 之 和 等 于 该 数。例 如,因 为 153=13+53+3 所 以 153为 水 仙 花 数。【解 答】#include void main0 int i,a,b,c;fo r(i=100;i=999;i+)a=i/100;b=(i-a*100)/10;c=i-a*100-b*10;if(i=a*a*a+b*b*b+c*c*c)cout i endl;)40 11.求 1000之 内 的 所 有 完 数。所 谓 完 数 是 指 一 个 数 恰 好 等 于 它 的 所 有 因 子 之 和。例 如,因 为 6=1+2+3
32、,所 以 6 为 完 数。【解 答】ttinclude void mainO int x,j,s;f o r(x=l;x=1000;x+)s=0;f o r(j=l;jx;j+)i f(x%j=0)s=s+j;i f(x=s)cout x endl;)41 12.编 一 程 序 显 示 如 下 图 案:*【解 答】ttinclude void main()int i,j,k;for(i=l;i=5;i+)for(k=l;k=5-i;k+)cout;for(j=l;j=2*iT;j+)cout*;cout endl;)42 13.已 知 XYZ+YZZ=532,其 中 X,Y 和 Z 为 数 字
33、,编 一 程 序 求 出 X,Y 和 Z。【解 答】ttinclude void main()int x,y,z,i;for(x=l;x=9;x+)for(y=l;y=9;y+)for(z=0;z=9;z+)i=100*x+10*y+z+100*y+10*z+z;if(i=532)cout x=x r t y=y tz z=z endl;)第 3章 函 数 3.1 选 择 题 1.以 下 正 确 的 函 数 原 型 为(d)。(a)fl(int x;int y);(b)void fl(x,y);(c)void fl(int x,y);(d)void fl(int,int);2.有 函 数 原
34、型 void fun2(int);下 面 选 项 中,不 正 确 的 调 用 是(c)。(a)int x=21;fun2(x);(b)int a=15;fun2(a*3);(c)int b=100;fun2(&b);(d)fun2(256);3.有 函 数 原 型 void fun3(int*);下 面 选 项 中,正 确 的 调 用 是(c)。(a)double x=2.17;fun3(&x);(b)int a=15;fun3(a*3.14);(c)int b=100;fun3(&b);(d)fun3(256);4.有 函 数 原 型 void fun4(int&);下 面 选 项 中,正
35、确 的 调 用 是(c)。(a)int x=2.17;fun4(&x);(b)int a=15;fun4(a*3.14);(c)int b=100;fun4(b);(d)fun4(256);5.有 声 明 int fun5(int);int(*pf)(int)=fun5;卜.面 选 项 中,正 确 的 调 用 是(c)0(a)int a=15;int n=fun5(&a);(b)int a=15;cout(&pf)(a);(c)cout(*pf)(256);(d)cout*pf(256);6.在 VC中,若 定 义 一 个 函 数 的 返 回 类 型 为 void,以 下 叙 述 正 确 的
36、是(c)。(a)函 数 返 回 值 需 要 强 类 型 转 换(b)函 数 不 执 行 任 何 操 作(c)函 数 本 身 没 有 返 回 值(d)函 数 不 能 修 改 实 际 参 数 的 值 7.函 数 参 数 的 默 认 值 不 允 许 为(c)。(a)全 局 常 量(b)直 接 常 量(c)局 部 变 量(d)函 数 调 用 8.使 用 重 载 函 数 编 程 序 的 目 的 是(a)。(a)使 用 相 同 的 函 数 名 调 用 功 能 相 似 的 函 数(b)共 享 程 序 代 码(c)提 高 程 序 的 运 行 速 度(d)节 省 存 贮 空 间 9.下 列 的 描 述 中(b)
37、是 错 误 的。(a)使 用 全 局 变 量 可 以 从 被 调 用 函 数 中 获 取 多 个 操 作 结 果(b)局 部 变 量 可 以 初 始 化,若 不 初 始 化,则 系 统 默 认 它 的 值 为 0(c)当 函 数 调 用 完 后,静 态 局 部 变 量 的 值 不 会 消 失(d)全 局 变 量 若 不 初 始 化,则 系 统 默 认 它 的 值 为 010.下 列 选 项 中,(c)的 具 有 文 件 作 用 域。(a)语 句 标 号(b)局 部 变 量(c)全 局 变 量(d)静 态 变 量 3.2 阅 读 下 列 程 序,写 出 执 行 结 果 1.Sinclude#in
38、clude int f(int);void main0 int i;for(i=0;i 3;i+)cout f(i)endl;)int f(int a)int b=0,c=1;b+;c+;return(a+pow(b,2)+c);)【答 案】3452.void func(int a,int b,int c=3,int d=4);#include void main()func(10,15,20,30);func(10,11,12);func(12,12);void func(int a,int b,int c,int d)cout a t b t c t d endl;【答 案】10 15 2
39、0 3010 11 12 412 12 3 43.#include void func(int,int,int*);void mainO int x,y,z;func(5,6,&x);func(7,x,&y);func(x,y,&z);cout x,zz y,z endl;)void func(int a,int b,int*c)b+=a;*c=b-a;【答 案】6,6,64.#include void func(int,int,int&);void mainO int x=0,y=l,z=2;func(1,2,x);func(x+y,y,y);func(z,x+y,z);cout x,y,v
40、oid func(int a,int b,int&c)endl;b+=a;c=b-a;【答 案】2,1,35.Sinclude int f2(int,int);int fl(int a,int b)int c;a+=a;b+=b;c=f2(a+b,b+1);return c;)int f2(int a,int b)int c;c=b%2;return a+c;)void mainO int a=3,b=4;cout f1(a,b)endl;)【答 案】156.#include int age(int n)int f;if(n=1)f=10;else f=age(n-l)+2;return f;
41、void main()cout age:age(5)endl;【答 案】age:187.include int fl(int a,int b)return a+b;int f2(int a,int b)return a-b;int f3(int(*t)(int,int),int a,int b)return(*t)(a,b);)void main()int(*p)(int,int);P 二 fl;cout f3(p,4,8)endl;P 二 f2;cout f3(p,8,4)endl;)【答 案】1248.Sinclude int sub(int,int);int a=1;void main(
42、)int m=1,n=2,f;f 二 sub(m,n);cout a t f endl;f=sub(m,n);cout a t f endl;)int sub(int c,int d)static int m=2,n=5;cout m t n t endl;a=+a;c=m+;d=n+;return c+d;)【答 案】43 52 73 63 93.3思 考 题 1.函 数 的 作 用 是 什 么?如 何 定 义 函 数?什 么 叫 函 数 原 型?2.什 么 叫 函 数 值 的 返 回 类 型?什 么 叫 函 数 的 类 型?如 何 通 过 指 向 函 数 的 指 针 调 用 一 个 已 经
43、 定 义 的 函 数?请 写 一 个 验 证 程 序 说 明。3.什 么 叫 形 式 参 数?什 么 叫 实 际 参 数?C+函 数 参 数 有 什 么 不 同 的 传 递 方 式?请 写 一 个 验 证 程 序 说 明。4.C+函 数 通 过 什 么 方 式 传 递 返 回 值?当 一 个 函 数 返 回 指 针 类 型 时,对 返 回 表 达 式 有 什 么 要 求?若 返 回 引 用 类 型 时,是 否 可 以 返 回 一 个 算 术 表 达 式?为 什 么?5.变 量 的 生 存 期 和 变 量 作 用 域 有 什 么 区 别?请 举 例 说 明。6.静 态 局 部 变 量 有 什 么
44、 特 点?编 写 一 个 应 用 程 序,说 明 静 态 局 部 变 量 的 作 用。7.在 一 个 语 句 块 中 能 否 访 问 一 个 外 层 的 同 名 局 部 变 量?能 否 访 问 一 个 同 名 的 全 局 变 量?如 果 可 以,应 该 如 何 访 问?请 写 一 个 验 证 程 序 说 明。3.4 编 程 题 1.已 知 y=Sh(l+Shx),其 中 S h为 双 曲 正 弦 函 数,即$=3。编 一 sh2x+sh3x 2程 序,输 入 X的 值,求 y 的 值。【解 答】#include#include double sh(double t);void main()do
45、uble x,y;cout x=;cin x;y=sh(1+sh(x)/(sh(2*x)+sh(3*x);cout y=y n 和 p 的 值,求 s算 中 的 溢 出。【解 答】ttinclude 1+2+m+13+23+.+3的 侑。注 意 判 断 运 l5+25+-+p5ttinclude double f(long k,long num);void main()long m,n,p;double s,fl,f2,f3;cout mnp;f l=f(1,m);f2=f(3,n);f3=f(5,p);if(fl&f2&f3)s=(fl+f2)/f3;cout s=s endl;else c
46、out 溢 出!n;double f(long k,long num)long i;double sum=0;for(i=l;i=num&sum2147483647;i+)sum=sum+pow(i,k);if(i=num)return 0;溢 出 时 返 回 0return sum;)3.输 入 a,b和 c 的 值,编 写 一 个 程 序 求 这 三 个 数 的 最 大 值 和 最 小 值。要 求 把 求 最 大 值 和 最 小 值 编 写 成 函 数,并 使 用 指 针 或 引 用 作 为 形 式 参 数 把 结 果 返 回 函 数 maino【解 答】(1)使 用 指 针 参 数#in
47、cludevoid fmaxmin(float,float,float,float float*);void main()float a,b,c,max,min;cout a,b,c=;cin a b c;fmaxmin(a,b,c,&max,&min);cout max=max endl;cout min=y)u=x;v=y;else u=y;v=x;if(zu)u=z;if(zv)v=z;*pl=u;*p2=v;)(2)使 用 引 用 参 数#includevoid fmaxmin(float,float,float,float&,floatfe);void main()float a,b
48、,c,max,min;cout a,b,c二;cin a b c;fmaxmin(a,b,c,max,min);cout“max=max endl;cout min=min endl;)void fmaxmin(flo a t x,flo a t y,flo at z,flo a t&pl,flo a t&p2)flo a t u,v;i f(xy)else i f(zu)i f(zv)pl=u;p2=v;uuV4.用 线 性 同 余 法 生 成 随 机 数 序 列 的 公 式 为:rk=(m u ltip lier*rk-,+increment)%modulus序 列 中 的 每 一 个 数
49、“,可 以 由 它 的 前 一 个 数 r z 计 算 出 来。例 如,如 果 有:rk=(25173*rk-1+13849)%65536可 以 产 生 65536个 各 不 相 同 的 整 型 随 机 数。设 计 一 个 函 数 作 随 机 数 生 成 器,生 成 一 位 或 两 位 数 的 随 机 数。利 用 这 个 随 机 数 生 成 器,编 写 一 个 小 学 生 四 则 运 算 的 练 习 程 序:44 可 以 进 行 难 度 选 择。一 级 难 度 只 用 一 位 数,二 级 难 度 用 两 位 数;45 可 以 选 择 运 算 类 型,包 括 加、减、乘、除 等;46,给 出 错
50、 误 提 示;47 可 以 统 计 成 绩。【解 答】函 数 Rand用 于 生 成 指 定 范 围 的 随 机 整 数。主 函 数 为 了 使 用 户 正 确 输 入 计 算 难 度 和 运 算 符,用 了 两 个 w h ile循 环。for循 环 出 10道 题 让 用 户 计 算,每 答 对 一 道 题 加 10分。最 外 层 的 w h ile循 环 控 制 练 习 的 开 始,使 得 用 户 可 以 反 复 练 习,直 至 键 入 N或 n。ttinclude in t Rand(int,i n t);生 成 指 定 范 围 的 随 机 数 void main()int w,i,r