紫金15章习题参考答案Word文件下载.docx
《紫金15章习题参考答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《紫金15章习题参考答案Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
"
cin>
b;
//交换两个整数
a=b^a;
b=a^b;
交换结果:
<
a<
'
'
return0;
第二种方法:
a=a+b;
b=a-b;
a=a-b;
(2)
charc1='
O'
charc2='
l'
charc3='
y'
charc4='
m'
charc5='
p'
charc6='
i'
charc7='
c'
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
c6+=4;
c7+=4;
c1<
c2<
c3<
c4<
c5<
c6<
c7;
constfloatc=8.1456E-6;
constfloatPI=3.1415;
floatlength,z;
输入导线长度:
length;
输入导线直径:
z;
floatarea=PI*z/2*z/2;
floatr=c*length/area;
导线的电阻为:
r;
第3章习题参考答案
(1)A
(2)A(3)B(4)B(5)B、A
(6)C(7)C(8)C(9)C(10)D
(11)D(12)C(13)C(14)D、A(15)A
(1)【1】c+=5【2】c-=21
(2)【3】x:
y【4】u:
z
(3)【5】
(x>
2)&
&
(x<
=10)【6】
(x>
-1)&
=2)【7】y=-1
constdoublef=0.2;
intmain(void){
floatlen,width,height,wei,fee;
//长度,重量和费用
输入邮寄物品的长宽高(单位:
米):
len>
width>
height;
输入物品的重量(单位:
千克):
wei;
if(len>
1||width>
1||height>
1||wei>
30){
cout<
本包裹不可以邮寄"
endl;
}
else{
if(wei<
10)
fee=f+0.8*wei;
elseif((wei>
10)&
(wei<
=20))
fee=f+0.75*wei;
else
fee=f+0.70*wei;
邮寄费用:
fee;
intyear;
输入年份:
year;
boolisleap=((year%400==0)||((year%4==0)&
(year%100!
=0)));
//闰年
if(isleap)
cout<
year<
为闰年"
else
为平年"
#include<
cmath>
doubleitem=1.0,sum=0.0;
inti=1,sign=1;
while(fabs(item)>
=1e-2)
{
sum+=item;
sign*=-1;
i+=2;
item=sign/(double)i;
sum*4<
chari,j,k;
/*i是a的对手,j是b的对手,k是c的对手*/
for(i='
x'
i<
='
z'
i++)//for1
for(j='
j<
j++){//for2
if(i!
=j)//if1
for(k='
k<
k++){//for3
if(i!
=k&
j!
=k){//if2
if(i!
k!
)//if3
cout<
orderisa--"
i<
b--"
j<
c--"
k;
}//if2
}//for3
}//for2
第4章习题参考答案
(1)B
(2)B(3)C(4)A(5)B
(6)D(7)D(8)C(9)A(10)B
(1)【1】11
(2)【2】-17
(3)【3】1438
(4)【4】-1
(5)【5】3
intMaxY(inta,intb){
intc;
do{
c=a-b*(a/b);
a=b;
b=c;
}while(c!
=0);
returna;
b<
的最大公约数为:
MaxY(a,b);
intdigit(intn,intk){
for(inti=1;
i<
k;
i++)
n=n/10;
returnn%10;
intn,k;
输入n,k:
n>
n<
的第"
k<
位数字为:
digit(n,k);
intdigitCount(inti){
intcount=0;
if(i<
0)i=-i;
//变成绝对值,以能够处理负数
do{//整数至少有一位,整数0有1位。
i/=10;
count++;
}while(i>
0);
returncount;
intdigitCount(longi){
do{
intdigitCount(floati){
while(i>
=1){//只要有整数部分,该数字肯定>
=1
intdigitCount(doublei){
=1){
inti;
longl;
doubled;
floatf;
请输入整数,长整数,双精度浮点数,单精度浮点数:
i>
l>
d>
f;
整数位数有"
digitCount(i)<
位"
l<
digitCount(l)<
d<
digitCount(d)<
f<
digitCount(f)<
(4)
iomanip>
voidhanoi(int,char,char,char);
voidmove(char,char);
intmain()
{
intn;
setw(50)<
输入盘子数:
cin>
n;
hanoi(n,'
A'
B'
C'
);
voidhanoi(intn,chara,charb,charc)
if(n==1)move(a,c);
{
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
voidmove(charx,chary)
x<
移动到"
y<
\t"
(5)
#defineUPCASE
charc;
#ifdefUPCASE
if(c>
a'
&
c<
){//小写字母
c=c+'
-'
//转换为大写字母
#else
Z'
){//大写字母
#endif
第5章习题参考答案
(1)C
(2)B(3)C(4)B(5)D
(6)C(7)C(8)A、C、D(9)D(10)A
(11)D(12)B(13)D(14)B(15)B
【1】123【2】321【3】123
【4】200,100
【5】s*next;
(4)(第一行为地址,每次运行可能不同)【6】
0013FF7C0013FF7C0013FF70
151510
【7】p1++,q1++【8】*(p+i)【9】*(p+i)【10】str
intbisearch(chars[],inti,intj)
{while(i<
j)
{intk=(i+j)/2;
if('
==s[k])returnk;
elseif('
s[k])j=k-1;
elsei=k+1;
return-1;
}
{chars[100],c;
inti=0,j;
while(c!
#'
)
{cin>
c;
s[i++]=c;
j=bisearch(s,0,i-1);
if(j==-1)cout<
**"
elsecout<
s["
]"
voidinsert()
{charstr[100];
inti=0;
plealeinputastring:
str[i++]=c;
for(intj=0;
i-1;
j++)
str[j]<
'
insert();
boolinsert(Node*&
h,inta,intpos){
Node*q=newNode(a);
if(pos==0){
q->
next=h;
h=q;
returntrue;
else{
Node*p=h;
inti=1;
while(p!
=NULL&
pos){
p=p->
next;
i++;
}
if(p!
=NULL){
q->
next=p->
p->
next=q;
returntrue;
else
returnfalse;
boolremove(Node*&
h,int&
a,intpos)
{
Node*p=h,*q=null;
inti=1;
while(p!
pos)
{q=p;
p=p->
i++;
if(p!
=NULL)
{a=p->
id;
if(q!
h=p->
deletep;
returnfalse;
voidinsert_sort(Node*&
h)
if(h==NULL)return;
Node*q=h->
h->
next=NULL;
while(q!
=NULL)
{Node*p=h,*p1=NULL,*q1=q;
q=q->
while(p!
=NULL&
q1->
id>
p->
id)
{
p1=p;
p=p->
if(p!
{if(p1==NULL)
h=q1;
else
p1->
next=q1;
q1->
next=p;
{p1->
(6)
boola[8];
//a[i]表示第i行是否可以放皇后
boolb[15];
//b[k]表示"
从左下往右上"
('
/'
)的第k个对角线是否可以放皇后
boolc[15];
//c[k]表示"
从左上往右下"
\'
//与棋盘第i行、第j列的格子所对应的行和对角线为:
a[i],b[i+j],c[j-i+7]
intx[8];
//x[j]表示第j列上皇后的位置(所在的行)。
booltry_by_col(intj)
{for(inti=0;
8;
i++)//选择第j列中可放皇后的行,然后递归选择第j+1列可放皇后的行...。
{if(a[i]&
b[i+j]&
c[j-i+7])//第j列第i行的位置所在的行以及两个对角线上无皇后。
x[j]=i;
//设置第j列皇后的位置。
a[i]=b[i+j]=c[j-i+7]=false;
//把第j列皇后所在的行以及两个对角线设为已占用。
if(j==7||try_by_col(j+1))//是最后一列或第j+1列皇后位置选择成功。
returntrue;
else//第j+1列皇后位置选择失败。
a[i]=b[i+j]=c[j-i+7]=true;
//取消第j列皇后位置,准备选择下一个位置。
returnfalse;
{inti,j,k;
//初始化:
所有行以及对角线可放皇后。
for(i=0;
a[i]=true;
for(k=0;
k<
15;
k++)
b[k]=true;
c[k]=true;
if(try_by_col(0))//从第0列开始尝试放皇后的位置。
{//x[0],x[1],...,x[7]分别为第一列、第二列、...、第七列上皇后的位置(所在的行)
for(j=0;
j<
j++)//按列输出皇后
for(i=0;
x[j];
i++)cout<
|_"
cout<
|Q|"
for(i=x[j]+1;
_|"