c课后部分习题答案_第1页
c课后部分习题答案_第2页
c课后部分习题答案_第3页
c课后部分习题答案_第4页
c课后部分习题答案_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

第一题

1题目:一位亿万富翁遇到一个陌生人,陌生人找他谈一个换计划,该计划如下:

我每天给你十万元,而你第一天只需要给我一分钱,第2天我仍给你10万,你

给我两分钱,第3天我仍给你十万元,你给我四分钱……。你每天给我的钱是前

一天的两倍,知道满30天。亿万富翁很高兴个,欣然接受了这个契约。编写一

个程序,计算这个月中陌生人给了亿万富翁多少钱,亿万富翁给陌生人多少钱。

2..从题目可知道亿万富翁给陌生人的钱呈现等比数列,q=2~,而陌生人给亿万

富翁的钱一直是10万元,令suml是亿万富翁给陌生人的钱,sum2是陌生人亿给

万富翁的钱。

3.

4#include<iostream>

#include<cmath>

usingnamespacestd;

intmain()

(

intsum1=0,sum2=0,n;

cout«nsuml是亿万富翁给陌生人的钱,sum2是陌生人亿给万富翁的钱

H«endl;

for(n=l;n<=30;n++)

suml+=pow(2,n-l);

sum2=100000*30;

cout«nsum1="«sum1«endl;

cout«"sum2="«sum2«endl;

return0;

}\

•"E:\C++\MicrosoftVisualStudio\MyProjects\201105125\Debug\20110512

suni=1073741823

SUR2=3000000

Pressanykeytocontinue

5这次编译没有碰到问题。

第二题

1题目:信函的重量不超过100G时,每20G付邮资80分,即信函的重量不超

过20G时付邮资80分;信函的重量超过20G、不超过40G时,付邮资160分。

编写程序,输入信函的重量,输出应付的邮资。

2经分析后知道若令x为信函的重量,y为所需的邮资,则必存在:

X<=20y=80

20<x<=40y=160

40<x<=60y=240

60<x<80y=320

80<x<=100y=400

3

#include<iostream>

usingnamespacestd;

intmain()

(

intx,y;

cin»x;

if(x<=20)

y=80;

elseif(x<=40)

y=160;

elseif(x<=60)

y=240;

elseif(x<=80)

y=320;

elseif(x<100)

y=400;

cout«y«endl;

v*E:\C++\MicrosoftVisualStudio\MyProjects\20111

60

240

Pressanykeytocontinue

第3题

1题目:编写程序,将输入的小写字母变为大写,大写字母不变。

1利用ASCH码去求解此题,'A'的ASCH为65,'a'的为97,'z'为129.、

2

3#include<iostream>

usingnamespacestd;

intmainO

charch;

cin>>ch;

if(ch-32>65)

(

ch-=32;

cout«ch«endl;

)

elsecout<<ch<<endl;

return0;

)

*E:\C++\MicrosoftVisualStudio\MyProjects\201105125\DebL

ressanykeytocontinue

第4题

1题目:编写名为sqoot()的函数,返回其参数的平方根。重载sqroot()三次,

让它分别返回整数、长整数与双精度的平方根。

2使用重载函数的必须要知道,只有当数据的类型不同或数据个数不同时才能

使用。做此题要注意调用到#include〈cmath>函数.

3

・#include<iostream>

#include<cmath>

usingnamespacestd;

intf(intn)

(

intx;

x=sqrt(n);

returnx;

)

doubleh(doublen)

{doublex;

x=sqrt(n);

returnx;

)

longintg(longintn)

(

longintx;

x=sqrt(n);

returnx;

)

intmainO

{

doublen,xl,x2,x3;

cin>>n;

xl=f(n);

x2=h(n);

x3=g(n);

cout«zzxl=z/<<xl<<endl;

cout«z,x2=/,<<x2<<endl;

cout«/zx3=//<<x3<<endl;

return0;

)

"E:\C++\MicrosoftVisualStudio\MyProjects\20110!

21

xl=4

x2=4.58258

x3=4

Pressanykeytocontinue

第五题

1假设美元与人民币的汇率是1美元兑换7.19元人民币。编写程序,输入人民

币的钱数,输出能兑换的美元的金额。

2若用p表示人民币,sum表示兑换的美元金额,m表示美元,y为人民币的数目,

则可以建立一个等式sum=(p*y)/7.19

3.#include<iostream>

usingnamespacestd;

intmain()

(

doublesum=0,y;

cout«z/sum表示兑换的美元金额,y为人民币的数目〃0endl;

cin>>y;

sum=y/7.19;

cout<</zsum=z/<<sum<<endl;

return0;

)

*E:\C++\MicrosoftVisualStudio\MyProjects\2011

sum表示兑换的美元金额,y为人民币的数目

6000

sun=834.492

Pressanykeytocontinue.

4

第六题

1编写一个程序,将一串字符倒序存放后输出。歹U如,原数组A的内容为

“VISUALC++PROGRAM”,倒序后为“MARGORP++CLAUSIV”。

2.直接用数组名作为函数,若所交换的长度为10,则可知a[9]与a[0]交换位子,

a[8]与a[l]交换位子•••a[i]a[10T-i]交换位子,当i=j的时候退出.

3.#include<iostream>

#include<string>

usingnamespacestd;

voidf(charx[],intn)

{

inti,j,m=(n-l)/2;

chart;

for(i=0;i<=m;i++)

(

j=n-i-l;

t=x[i];

x[i]=x[j];

x[j]=t;

)

)

intmainO

(

inti;

charaLJ={I,,l,o,v,e,,c,+,+);

for(i=0;i<10;i++)

(

cout<<a[i];

}

cout«endl;

f(a,10);

for(i=0;i<10;i++)

(

cout«a[i];

)

cout<<endl;

return0;

}

*E:\C++\MicrosoftVisualStudio\MyProje

IloueC++

++ceuolI

Pressanykeytocontinue

第七题

1题目:求下面分数序列的前13项之和。

2/13/25/38/513/821/13••••

2从题目可以知道,若用fl,f2表示,则可以知道后一个分数的分母是前一个数

的分子,及fl/f2下一个为(fl+f2)/fl。

3#include<iostream>

usingnamespacestd;

intmain()

(

inti;

floatt;

doublef3=0,f2=2,f1=1;

for(i=0;i<13;i++)

(

f3=f3+(fl/f2);

t=f1;

fl=fl+f2;

f2=f1;

)

cout<<”前十三个数的和为:“<<f3<〈endl;

return0;

开始

■"E:\C++\MicrosoftVisualStudio\MyProjects\2C

前十三个数的和为5

Pressanykeytocontinue

第八题

1题目:输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的

个数。

2经过分析可以知道,在对于字母的时候可以用ASCII码值去计数,空格键直接

用对于数字则是从‘0'到'9',用getchar()去输入字符。

3

#include<iostream>

usingnamespacestd;

intmain()

(

intnl=0,n2=0,n3=0,n4=0;

charc;

while((c=getchar())!='\n')

if(c>=,A'&&c<='Z,||c>:=,a,&&c<=,z,)

nl++;

else')

n2++;

elseif(c>=,0,&&c<=,9,)

n3++;

elsen4++;

cout«"nl为字母的个数,n2为空格的个数,n3数字的个数,

n4为其它字符"<<endl;

cout«"n1="«nI«"n2="«n2«"n3="«n3«"n4="«n4«endl;

return0;

开始

5.做这道题的时候,在那个结束性字符那里出错了,导致了我一直无法输入完

毕,在后来发现了原来不是这样“/n”而是这样的‘\n'。

第9题

1.题目:编程求出1000以内的完全数。所谓完全数是指以个数恰好等于它所有

的因子之和。例如:6是完全数,因为6的因子1、2、3,而6=1+2+3.

2从题目可以知道,完全数就是所有的因子相加后等于他原来的数,但是因子不

能大于它本身。

3

#include<iostream>

usingnamespacestd;

intmain()

(

inti,j,s;

for(i=2;i<=1000;i++)

(

s=0;

for(j=l;j<i;j++)

if(i%j==0)

s=s+j;

)

if(s==i)cout<<"完全数是为"<<i«endl;

return0;

处理看从1000内的数

有没有它的因子之和

等于它本身。

5,完全数就是因子之和等于原来的数,在开始做的时候,没注意到因子不能大

于它本身,这个是主要的。

第10题

I题目:如下所示的杨辉三角形(要求打印10行)

1

11

121

1331

14641

2.在结果分析后可以知道,在a[10][10]中,a[i][j]=a[i-l][j]+a[i-l][j-1],

且当j=0或者i=j时候a[i]当]都为1.

3

#include<iostream>

usingnamespacestd;

intmain()

(

inta[10][10],i,j;

for(i=0;i<10;i++)

for(j=0;j<=i;j++)

if(j==O||i==j)

a[i][j]=l;

elsea[i][j]=a[i-l][j-l]+a[i-l][j];

)

for(i=0;i<10;i++)

(

for(j=0;j<=i;j++)

cout«a[i][j]<<z/"\

cout<<endl;

)

return0;

*EAC++\MicrosoftVisualStudio\MyProjectsVtel\Debug\2fil.exe"

uk21

1331

14641

15101051

115201561

172135352171

18285670562881

126126843691

keytocontinue

输出

5.这道题目在找规律的时候,曾经出现过错误,就是我没发现原来

还有当i==j的时候,数组全部为1,这样的

规律,当初做的时候,没有发现原来i==j的时候a[i][j]=O,导致输出的时候

完全出错。

第11题

1题目:编写一个程序,输入若干人员的名字及电话号码,以字符表

示输入结束。然后输入姓名,查找该人的电话号码。

2要用到结构体,在查找的时候用到string类,以及数组。

3.

#include<iostream>

#include<string>

usingnamespacestd;

structnumber

(

stringname;

longnum;

);

intmain()

(

inti=0;

stringnamel;

numbermember[100];

cout«〃请输入姓名和电话号码:〃;

for(i=0;i<100;i++)

(

cin>>member[i].name;

if(member[i].name=〃#〃)

break;

cin>>member[i].num;

)

coutC〈〃请输入要查找人的姓名:〃;

cin>>namel;

for(i=0;i<100;i++)

(

if(name1==member[i].name)

{

cout<<member[i].num;

break;

}

}

return0;

"

声E:\C++\MicrosoftVisualStudio\MyProjects\361\Debug\2fil.exe*

开始

/输入人员名/

/:/

处理把输入的存入数

组中去。

,输出;

V

5.这道结构题可以说花费了我多的时间,我之所以把它放到最后是因为刚

才开始的时候想不出来,碰到的第一个错误是我在用string类的时候,

没注意用数组去存放我所输入的string字母。第2个错误就是在查找人

员的号码的时候,我弄错了等于号应该是“=="。第3个错误就是必须在

main函数中在用一次stringnamel然后在用它去查找人员的号码。

第12题

1题目:定义一个学生类,包含姓名、学号、平均分等数据成员,并以成员函数

实现对数据成员的各种操作。在main函数中使用一个该类的对象,将读者的个

人信息传送给它并输出。

2.彘题可以模仿书本上的一道例题做,但是跟例题不一样,在调用函数的时

候,用到string不能再用数组去定义name或者num这样了,注意一下调用函数

是否有返回值。

3#include<iostream>

#include<string>

usingnamespacestd;

classstudent

{

public:

inti,j;

floatave;

stringnum,name;

floatscore[4];

voidf()

(

cout«"请输入学生的姓名和学号〃*endl;

cin>>name>>num;

for(j=0;j<4;j++)

cin»score[j];

温馨提示

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

评论

0/150

提交评论