教材习题答案-第2章Word格式文档下载.doc

上传人:b****1 文档编号:13147870 上传时间:2022-10-06 格式:DOC 页数:6 大小:25KB
下载 相关 举报
教材习题答案-第2章Word格式文档下载.doc_第1页
第1页 / 共6页
教材习题答案-第2章Word格式文档下载.doc_第2页
第2页 / 共6页
教材习题答案-第2章Word格式文档下载.doc_第3页
第3页 / 共6页
教材习题答案-第2章Word格式文档下载.doc_第4页
第4页 / 共6页
教材习题答案-第2章Word格式文档下载.doc_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

教材习题答案-第2章Word格式文档下载.doc

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

教材习题答案-第2章Word格式文档下载.doc

iostream>

usingnamespacestd;

intmain()

{

inta,b,r;

charc;

cin>

>

a>

b>

c;

switch(c)

{

case'

+'

:

r=a+b;

break;

case'

-'

r=a-b;

*'

r=a*b;

/'

r=a/b;

}

cout<

<

a<

c<

b<

"

="

r;

}

4.解决换钱问题:

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

intcount=0,one,two,five;

for(one=0;

one<

=100;

one++)

for(two=0;

two<

two++)

for(five=0;

five<

five++)

if(one+2*two+5*five==100)

{

cout<

1分:

2分:

5分:

endl;

count++;

}

换法:

count<

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

inta,b,i;

b;

穷举法:

;

for(i=a;

i>

=1;

i--)

if(a%i==0&

&

b%i==0)

break;

i<

迭代法:

intr;

while(r=a%b)

a=b;

b=r;

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

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

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

例如:

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

#defineN8

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;

N;

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;

=right;

i++)

cout<

a[i];

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交换存放,并在主函数中输出交换后的结果。

voidswap(int&

y)

{intp;

p=x;

x=y;

y=p;

}

intmain()

inta,b;

cin>

//输入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。

ctime>

#defineNUM50

inti,j;

doubleprobability=1;

for(i=1;

=NUM;

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

统计方法:

probability;

//以下为仿真方法

inttotal=100000;

//采样次数

intduplicateNumber=0;

inta[366]={0};

//存放生日,放于a[1]到a[365],值为1。

inttemp;

srand(time(0));

=total;

for(j=1;

j<

i&

j++)

{

temp=rand()%365+1;

if(a[temp])

{

duplicateNumber++;

}

else

a[temp]=1;

}

=365;

a[j]=0;

仿真方法:

(double)(total-duplicateNumber)/total;

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

从键盘输入3´

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

提示:

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

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

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

#defineM3

#defineN3

inti,j;

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

//int(*p)[N];

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

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

int**p=newint*[M];

for(i=0;

p[i]=newint[N];

cout<

输入:

M;

for(j=0;

cin>

p[i][j];

输出:

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

{

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

if(max<

p[i][j])max=p[i][j];

if(min>

p[i][j])min=p[i][j];

}

sum="

sum<

max="

max<

min="

min<

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

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1