教材习题答案-第2章.doc

上传人:wj 文档编号:1068870 上传时间:2023-04-30 格式:DOC 页数:6 大小:25KB
下载 相关 举报
教材习题答案-第2章.doc_第1页
第1页 / 共6页
教材习题答案-第2章.doc_第2页
第2页 / 共6页
教材习题答案-第2章.doc_第3页
第3页 / 共6页
教材习题答案-第2章.doc_第4页
第4页 / 共6页
教材习题答案-第2章.doc_第5页
第5页 / 共6页
教材习题答案-第2章.doc_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

教材习题答案-第2章.doc

《教材习题答案-第2章.doc》由会员分享,可在线阅读,更多相关《教材习题答案-第2章.doc(6页珍藏版)》请在冰点文库上搜索。

教材习题答案-第2章.doc

1.C++中define与const定义常量有什么区别?

(1)编译器处理方式不同

define宏是在预处理阶段展开。

const常量是编译运行阶段使用。

(2)类型和安全检查不同

define宏没有类型,不做任何类型检查,仅仅是展开。

const常量有具体的类型,在编译阶段会执行类型检查。

(3)存储方式不同

define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

const常量会在内存中分配(可以是堆中也可以是栈中)。

(4)作用域

define宏展开,没有作用域概念。

const常值变量具有作用域。

2.C++引入了I/O流运算符,与C语言的输入输出有什么区别?

(1)I/O流运算符是运算符;C语言的输入输出是函数。

(2)I/O流运算符自动识别类型(多态、重载);C语言的输入输出格式控制非常复杂。

3.简易计算器,从键盘输入两个整数和一个字符(+、-、*、/),分别对两个数进行加、减、乘和除的运算。

如输入:

23123+;输出计算结果:

23+123=146。

要求利用IO流运算符进行输入和输出。

#include

usingnamespacestd;

intmain()

{

inta,b,r;

charc;

cin>>a>>b>>c;

switch(c)

{

case'+':

r=a+b;break;

case'-':

r=a-b;break;

case'*':

r=a*b;break;

case'/':

r=a/b;break;

}

cout<

}

4.解决换钱问题:

将1元人民币兑换成1、2、5分的人民币,有多少种换法?

#include

usingnamespacestd;

intmain()

{

intcount=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)

{

cout<<"1分:

"<

"<

"<

count++;

}

cout<<"换法:

"<

}

5.分别用穷举法和迭代法计算两个整数的最大公约数。

#include

usingnamespacestd;

intmain()

{

inta,b,i;

cin>>a>>b;

cout<<"穷举法:

";

for(i=a;i>=1;i--)

if(a%i==0&&b%i==0)

break;

cout<

cout<<"迭代法:

";

intr;

while(r=a%b)

{

a=b;b=r;

}

cout<

}

6.输入一个整型数组,数组元素有正数有负数。

数组中连续的一个或多个整数构成一个子数组。

求所有子数组中元素和值最大的子数组。

例如:

3,2,-6,4,7,-3,5,-2和值最大的子数组为4,7,-3,5

#include

#defineN8

usingnamespacestd;

intmain()

{

inta[N]={3,2,-6,4,7,-3,5,-2},i,j;

intsum;/*当前位置的和*/

intmax;/*目前为止最大的子数组和*/

intleft,right;/*子数组的位置*/

intt1;/*子数组的临时左位置*/

/*初始化*/

sum=max=a[0];

left=right=t1=0;

for(i=1;i

{

sum+=a[i];

if(sum<0)

{

sum=0;/*如果和为负了,就应该重新计算*/

t1=i+1;/*t1也从下一个位置开始*/

continue;

}

if(sum>max)

{/*如果当前和比原先的最大值还大*/

max=sum;/*最大值等于当前值*/

left=t1;/*左右区间也要调成相应的*/

right=i;

}

}

for(i=left;i<=right;i++)

cout<

return0;

}

7.函数重载设计不当会产生二义性问题,二义性主要体现在参数隐式类型转换和默认参数两个方面,举例说明这两方面的问题,你认为该如何解决。

重载函数定义:

intmax(inta,intb){…}

floatmax(floata,floatb){…}

调用max(1.2,3.4) ;

出现二义性错误,因为1.2,和3.4均为double类型,不能明确匹配哪一个函数。

因此,函数重载时尽量避免类型转换,最好定义不同函数准确匹配参数类型。

默认参数与函数重载不要同时使用。

8.在主函数中定义2个整型元素a、b,用引用作函数参数,在函数voidswap(int&x,int&y)中实现将数据a和b交换存放,并在主函数中输出交换后的结果。

#include

usingnamespacestd;

voidswap(int&x,int&y)

{intp;p=x;x=y;y=p;}

intmain()

{

inta,b;

cin>>a>>b;//输入a,b两变量的值

swap(a,b);//直接以变量a和b作为实参调用swap函数

cout<

return0;

}

9.假设一个班级有50名同学,每个同学都报出自己的生日,每个同学的生日都不相重的概率只有0.0296,如果有100个同学,不相重的概率为3.0725´10-7。

相重复的概率如此之大与我们主观想象不同。

写一个程序,输入同学的人数n,利用统计方法计算出其生日不重复的概率。

然后再用彷真的方法,利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。

学生的生日可以用随机函数rand()产生,调用rand()前首先调用srand(longint*)函数设置种子,以上函数需要包含头文件stdlib.h。

#include

#include

#defineNUM50

usingnamespacestd;

intmain()

{

inti,j;

doubleprobability=1;

for(i=1;i<=NUM;i++)

probability=probability*((365+1-i)/365.0);

cout<<"统计方法:

"<

//以下为仿真方法

inttotal=100000;//采样次数

intduplicateNumber=0;

inta[366]={0};//存放生日,放于a[1]到a[365],值为1。

inttemp;

srand(time(0));

for(i=1;i<=total;i++)

{

for(j=1;j

{

temp=rand()%365+1;

if(a[temp])

{

duplicateNumber++;break;

}

else

a[temp]=1;

}

for(j=1;j<=365;j++)

a[j]=0;

}

cout<<"仿真方法:

"<<(double)(total-duplicateNumber)/total;

}

10.用new和delete运算符实现动态内存空间管理的方法编写程序。

从键盘输入3´3整型数组的数据,计算并输出所有元素之和、最大值和最小值。

提示:

申请空间可以采用两种方法:

(1)一次申请二维数组;

(2)对二维数组一行一行申请。

#include

#defineM3

#defineN3

usingnamespacestd;

intmain()

{

inti,j;

/****二维方式***/

//int(*p)[N];

//p=newint[M][N];

/****一维方式****/

int**p=newint*[M];

for(i=0;i

p[i]=newint[N];

cout<<"输入:

"<

for(i=0;i

for(j=0;j

cin>>p[i][j];

cout<<"输出:

"<

intsum=0,max=p[0][0],min=p[0][0];

for(i=0;i

for(j=0;j

{

sum=sum+p[i][j];

if(max

if(min>p[i][j])min=p[i][j];

}

cout<<"sum="<

cout<<"max="<

cout<<"min="<

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2