教材习题答案第2章.pdf

上传人:赵** 文档编号:52468260 上传时间:2022-10-23 格式:PDF 页数:9 大小:302.82KB
返回 下载 相关 举报
教材习题答案第2章.pdf_第1页
第1页 / 共9页
教材习题答案第2章.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《教材习题答案第2章.pdf》由会员分享,可在线阅读,更多相关《教材习题答案第2章.pdf(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1C+中 define 与 const 定义常量有什么区别?(1)编译器处理方式不同define 宏是在预处理阶段展开。const 常量是编译运行阶段使用。(2)类型和安全检查不同define 宏没有类型,不做任何类型检查,仅仅是展开。const 常量有具体的类型,在编译阶段会执行类型检查。(3)存储方式不同define 宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。const 常量会在内存中分配(可以是堆中也可以是栈中)。(4)作用域define 宏展开,没有作用域概念。const 常值变量具有作用域。2 C+引入了I/O流运算符,与C语言的输入输出有什么区别?(1)I/O 流运

2、算符是运算符;C 语言的输入输出是函数。(2)I/O 流运算符自动识别类型(多态、重载);C 语言的输入输出格式控制非常复杂。3简易计算器,从键盘输入两个整数和一个字符(+、-、*、/),分别对两个数进行加、减、乘和除的运算。如输入:23 123+;输出计算结果:23+123=146。要求利用 IO 流运算符进行输入和输出。#include第 1 页using namespace std;int main()int a,b,r;char c;cinabc;switch(c)case+:r=a+b;break;case-:r=a-b;break;case*:r=a*b;break;case/:r

3、=a/b;break;coutacb=r;4解决换钱问题:将 1 元人民币兑换成 1、2、5 分的人民币,有多少种换法?#includeusing namespace std;int main()int count=0,one,two,five;for(one=0;one=100;one+)for(two=0;two=100;two+)for(five=0;five=100;five+)if(one+2*two+5*five=100)cout1 分:one2 分:two第 2 页5 分:fiveendl;count+;cout换法:countendl;5分别用穷举法和迭代法计算两个整数的最大公

4、约数。#includeusing namespace std;int main()int a,b,i;cinab;cout=1;i-)if(a%i=0&b%i=0)break;coutiendl;cout迭代法:;int r;while(r=a%b)a=b;b=r;coutbendl;6输入一个整型数组,数组元素有正数有负数。数组中连续的一个或多个整数构成一个子数组。求所有子数组中元素和值最大的子数组。第 3 页例如:3,2,-6,4,7,-3,5,-2和值最大的子数组为 4,7,-3,5#include#define N 8using namespace std;int main()inta

5、N=3,2,-6,4,7,-3,5,-2,i,j;int sum;/*当前位置的和*/int max;/*目前为止最大的子数组和*/int left,right;/*子数组的位置*/int t1;/*子数组的临时左位置*/*初始化*/sum=max=a0;left=right=t1=0;for(i=1;iN;i+)sum+=ai;if(summax)/*如果当前和比原先的最大值还大*/第 4 页max=sum;/*最大值等于当前值*/left=t1;/*左右区间也要调成相应的*/right=i;for(i=left;i=right;i+)coutai;return 0;7函数重载设计不当会产生

6、二义性问题,二义性主要体现在参数隐式类型转换和默认参数两个方面,举例说明这两方面的问题,你认为该如何解决。重载函数定义:int max(int a,int b)float max(float a,float b)调用 max(1.2,3.4);出现二义性错误,因为 1.2,和 3.4 均为 double 类型,不能明确匹配哪一个函数。因此,函数重载时尽量避免类型转换,最好定义不同函数准确匹配参数类型。默认参数与函数重载不要同时使用。8在主函数中定义2 个整型元素 a、b,用引用作函数参数,在函数 void s&x,int&y)中实现将数据 a 和 b 交换存放,并在主函数中输出交换后的结果。#

7、includeusing namespace std;第 5 页void s&x,int&y)int p;p=x;x=y;y=p;int main()int a,b;cinab;/输入 a,b 两变量的值s);/直接以变量 a 和 b 作为实参调用 swap 函数couta b;/输出结果return 0;9假设一个班级有 50 名同学,每个同学都报出自己的生日,每个同学的生日都不相重的概率只有 0.0296,如果有 100 个同学,不相重的概率为 3.072510-7。相重复的概率如此之大与我们主观想象不同。写一个程序,输入同学的人数n,利用统计方法计算出其生日不重复的概率。然后再用彷真的方

8、法,利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。学生的生日可以用随机函数 rand()产生,调用 rand()前首先调用srand(long int*)函数设置种子,以上函数需要包含头文件 stdlib.h。#include#include#define NUM 50using namespace std;int main()int i,j;第 6 页double probability=1;for(i=1;i=NUM;i+)probability=probability*(365+1-i)/365.0);cout统计方法:probability;/以下为仿真方

9、法int total=100000;/采样次数int duplicateNumber=0;int a366=0;/存放生日,放于 a1到 a365,值为 1。int temp;srand(time(0);for(i=1;i=total;i+)for(j=1;ji&j=NUM;j+)temp=rand()%365+1;if(atemp)duplicateNumber+;break;elseatemp=1;for(j=1;j=365;j+)aj=0;cout仿真方法:(double)(total-duplicateNumber)/total;第 7 页10 用 new 和 delete 运算符实现

10、动态内存空间管理的方法编写程序。从键盘输入 33 整型数组的数据,计算并输出所有元素之和、最大值和最小值。提示:申请空间可以采用两种方法:(1)一次申请二维数组;(2)对二维数组一行一行申请。#include#define M 3#define N 3using namespace std;int main()int i,j;/*二维方式*/int(*p)N;/p=new intMN;/*一维方式*/int*p=new int*M;for(i=0;iN;i+)pi=new intN;cout输入:endl;for(i=0;iM;i+)for(j=0;jpij;第 8 页cout输出:endl;int sum=0,max=p00,min=p00;for(i=0;iM;i+)for(j=0;jN;j+)sum=sum+pij;if(maxpij)min=pij;coutsum=sumendl;coutmax=maxendl;coutmin=minendl;return 0;第 9 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com