C++第三章课后习题标准答案谭浩强Word文档下载推荐.docx
《C++第三章课后习题标准答案谭浩强Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++第三章课后习题标准答案谭浩强Word文档下载推荐.docx(54页珍藏版)》请在冰点文库上搜索。
![C++第三章课后习题标准答案谭浩强Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/12/eaccee8d-382f-42a6-8828-b1a9a2edfcdc/eaccee8d-382f-42a6-8828-b1a9a2edfcdc1.gif)
cout<<
请输入两个字符c1,c2:
c1=getchar();
//将输入的第一个字符赋给c1
c2=getchar();
//将输入的第二个字符赋给c2
用putchar函数输出结果为:
putchar(c1);
putchar(c2);
cout<<endl;
cout<<"用cout语句输出结果为:
;
c1<
c2<
endl;
return0;
}
3.4题另一解
#include<
using namespacestd;
int main()
{charc1,c2;
请输入两个字符c1,c2:
c1=getchar();
//将输入的第一个字符赋给c1
c2=getchar();
//将输入的第二个字符赋给c2
cout<
用putchar函数输出结果为:
putchar(c1);
putchar(44);
putchar(c2);
用cout语句输出结果为:
c1<<","
endl;
return0;
3.5题
#include<
iostream>
usingnamespacestd;
intmain()
{char c1,c2;
inti1,i2;
//定义为整型
cout<
请输入两个整数i1,i2:
cin>
i1>
>i2;
c1=i1;
c2=i2;
按字符输出结果为:
"<
c1<<
"<
<c2<
endl;
3.8题
#include<
iostream>
usingnamespacestd;
intmain()
{inta=3,b=4,c=5,x,y;
(a+b>c&&
b==c)<
<endl;
cout<<
(a||b+c&
&
b-c)<
endl;
cout<<
(!
(a>b) &
!
c||1)<
cout<<
(x=a)&&
(y=b)&
0)<
<endl;
(a+b)+c-1&
b+c/2)<
<endl;
return0;
}
3.9题
include<
iostream>
using namespacestd;
intmain ( )
{inta,b,c;
cout<
pleaseenterthreeintegernumbers:
";
cin>
a>
b>
c;
if(a<
b)
if(b<
c)
cout<
max="<
else
cout<
max="
b;
elseif(a<
c)
cout<<
"max="
else
cout<
a;
cout<
endl;
ﻩreturn0;
}
3.9题另一解
#include <
iostream>
using namespacestd;
intmain( )
{int a,b,c,temp,max ;
cout<
please enterthreeintegernumbers:
temp=(a>
b)?
a:
b;
/*将a和b中的大者存入temp中*/
max=(temp>
c)?
temp:
c;
/*将a和b中的大者与c比较,最大者存入max
*/
max="
<max<
return0;
}
3.10题
#include<
iostream>
usingnamespacestd;
intmain()
{intx,y;
"enter x:
x;
if(x<
1)
{y=x;
cout<
"x="<
x<
y=x="
y;
}
elseif(x<
10) // 1≤x<
10
{y=2*x-1;
cout<
x="
,y=2*x-1="
}
else // x≥10
{y=3*x-11;
cout<<
x="
<x<
y=3*x-11="<<
}
cout<<endl;
ﻩreturn0;
3.11题
#include<iostream>
usingnamespacestd;
intmain()
{float score;
chargrade;
pleaseenterscoreofstudent:
cin>>
score;
while(score>100||score<0)
{cout<
"data error,enter data again."
cin>
score;
}
switch(int(score/10))
{case10:
case 9:
grade='A';
break;
case8:
grade='B'
break;
case7:
grade='
C';
break;
case 6:
grade='
D'
break;
default:
grade='E'
}
cout<
<"scoreis"
score<<
",gradeis"
grade<
<endl;
return 0;
3.12题
#include <iostream>
usingnamespace std;
intmain()
{longintnum;
intindiv,ten,hundred,thousand,ten_thousand,place;
/*分别代表个位,十位,百位,千位,万位和位数
*/
cout<<
"enteran integer(0~99999):
cin>>
num;
if(num>9999)
place=5;
else if(num>
999)
place=4;
elseif (num>99)
place=3;
else if(num>
9)
place=2;
elseplace=1;
cout<<
place="
<place<
//计算各位数字
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
cout<
"originalorder:
switch(place)
{case
5:
cout<
ten_thousand<<
"
thousand<
","<
hundred<
ten<
","<<
indiv<
en
dl;
ﻩ cout<
reverseorder:
cout<
<indiv<
ten<<hundred<
thousand<<
ten_thousand<
endl;
ﻩbreak;
case4:
cout<<
thousand<
,"
<hundred<<
ten<<
","
<indiv<
endl;
"reverse order:
ﻩ cout<
<indiv<
ten<<
hundred<
thousand<<
endl;
ﻩ break;
case3:
cout<
hundred<
indiv<<endl;
ﻩ cout<<"
reverseorder:
ﻩ cout<<indiv<
<ten<
hundred<<
ﻩ break;
case2:
cout<
indiv<
ﻩcout<
reverseorder:
cout<
indiv<
ﻩ break;
case 1:
cout<
indiv<<
ﻩ cout<
reverseorder:
ﻩcout<
indiv<<
break;
return0;
}ﻩ
3.13题
#include<
iostream>
usingnamespacestd;
intmain()
{longi;
//i为利润
floatbonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
//利润为10万元时的奖金
bon2=bon1+100000*0.075;
//利润为20万元时的奖金
bon4=bon2+100000*0.05;
//利润为40万元时的奖金
bon6=bon4+100000*0.03;
//利润为60万元时的奖金
bon10=bon6+400000*0.015;
//利润为100万元时的奖金
cout<<
"enteri:
cin>
i;
if(i<
=100000)
bonus=i*0.1;
//利润在10万元以内按10%提成奖金
else if(i<
=200000)
bonus=bon1+(i-100000)*0.075;
//利润在10万元至20万时的奖金
elseif (i<
=400000)
bonus=bon2+(i-200000)*0.05;
//利润在20万元至40万时的奖金
elseif(i<
=600000)
bonus=bon4+(i-400000)*0.03;
//利润在40万元至60万时的奖金
elseif(i<
=1000000)
bonus=bon6+(i-600000)*0.015;
//利润在60万元至100万时的奖金
else
bonus=bon10+(i-1000000)*0.01;
//利润在100万元以上时的奖金
bonus="
bonus<<
return0;
3.13题另一解
#include<
iostream>
using namespacestd;
intmain()
{longi;
floatbonus,bon1,bon2,bon4,bon6,bon10;
intc;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
<"enteri:
cin>>
i;
c=i/100000;
if(c>
10)c=10;
switch(c)
{case 0:
bonus=i*0.1;
break;
case 1:
bonus=bon1+(i-100000)*0.075;
break;
case 2:
case3:
bonus=bon2+(i-200000)*0.05;
break;
case 4:
case 5:
bonus=bon4+(i-400000)*0.03;
break;
case6:
case7:
case 8:
case 9:
bonus=bon6+(i-600000)*0.015;
break;
case10:
bonus=bon10+(i-1000000)*0.01;
cout<
"bonus="
bonus<
return0;
3.14题
#include<iostream>
usingnamespacestd;
intmain ()
{intt,a,b,c,d;
cout<<
"enterfournumbers:
cin>
>a>
b>
c>
d;
cout<<
"a="<<a<
,b="
b<
c="
<c<
d="
d<
endl;
if(a>b)
{t=a;
a=b;
b=t;
}
if(a>
{t=a;
a=c;
c=t;
if(a>
d)
{t=a;
a=d;
d=t;
if(b>
{t=b;
b=c;
if (b>
{t=b;
b=d;
d=t;
{t=c;
c=d;
d=t;
thesortedsequence:
<a<
,"
b<<
"<<
c<
, "<
d<
return0;
3.15题
#include<iostream>
usingnamespacestd;
intmain()
{int p,r,n,m,temp;
"pleaseentertwopositiveintegernumbersn,m:
cin>
n>
m;
if (n<
m)
{temp=n;
n=m;
m=temp;
//把大数放在n中,小数放在m中
}
p=n*m;
//先将n和m的乘积保存在p中,以便求最小公倍数时用
while(m!
=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
HCF="<
n<<
cout<
LCD="
p/n<<
//p是原来两个整数的乘积
return 0;
}
3.16题
#include <
using namespacestd;
intmain()
{char c;
intletters=0,space=0,digit=0,other=0;
cout<<"enterone line:
while((c=getchar())!
='\n'
)
{if(c>
='
a'
&&
c<='
z'
||c>
='A'
&
& c<
Z'
letters++;
elseif (c=='
'
space++;
else if(c>
='0'
='
9'
digit++;
else
ﻩ other++;
cout<
letter:
<letters<
space:
space<
, digit:
digit<
other:
other<
<endl;
return 0;
}
3.17题
#include <iostream>
usingnamespacestd;
intmain()
{inta,n,i=1,sn=0,tn=0;
a,n=:
cin>
n;
while (i<
=n)
{tn=tn+a;
//赋值后的tn为i个a组成数的值
sn=sn+tn;
//赋值后的sn为多项式前i项之和
a=a*10;
++i;
cout<
a+aa+aaa+...="<
sn<
<endl;
return0;
3.18题
#include<
iostream>
usingnamespacestd;
{floats=0,t=1;
intn;
for(n=1;
n<
=20;
n++)
{
t=t*n;
//求n!
s=s+t;
//将各项累加
"1!
+2!
+...+20!
="
endl;
return 0;
}
3.19题
#include<
iostream>
usingnamespace std;
int main()
{inti,j,k,n;
cout<
narcissus numbersare:
for (n=100;
1000;
n++)
{i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+ k*k*k)
<n<
"
cout<
endl;
return0;
3.20题
#include <iostream>
usingnamespacestd;
intmain()
{constintm=1000;
// 定义寻找范围
intk1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
inti,a,n,s;
for(a=2;
a<=m;
a++) // a是2~1000之间的整数,检查它是否为完数
{n=0;
// n用来累计a的因子的个数
s=a;
//s用来存放尚未求出的因子之和,开始时等于a
for (i=1;
i<
i++)//检查i是否为a的因子
if(a%i==0) //如果i是a的因子
ﻩ{n++;
//n加1,表示新找到一个因子
ﻩs=s-i;
//s减去已找到的因子,s的新值是尚未求出的因子
之和
ﻩ switch(n) //将找到的因子赋给k1,...,k10
ﻩ{case 1:
ﻩ k1=i;
break;
//找出的笫1个因子赋给k1
ﻩ k2=i;
break;
// 找出的笫2个因子赋给k2
ﻩ case 3:
k3=i;
break;
//找出的笫3个因子赋给k3
case 4:
ﻩ k4=i;
break;
//找出的笫4个因子赋给k4
case5:
k5=i;
break;
//找出的笫5个因子赋给k5
case6:
k6=i;
break;
//找出的笫6个因子赋给k6
ﻩ case 7:
k7=i;
break;
//找出的笫7个因子赋给k7
case8:
k8=i;
break;
//找出的笫8个因子赋给k8
ﻩcase9:
k9=i;
//找出的笫9个因子赋给k9
k10=i;
break;
//找出的笫10个因子赋给k10
ﻩ}
if(s==0) //s=0表示全部因子都已找到了
{cout<
a<
isa完数"
ﻩ cout<
itsfactorsare:
if(n>
1)cout<
k1<
"<
k2;
//n>1表示a至少有2个因子
if(n>2)cout<<
k3;
//n>
2表示至少有3个因子,故应再输出一个因子
if(n>
3)cout<<"
k4;
//n>
3表示至少有4个因子,故应再输出一个因子
if(n>
4) cout<<"
k5;
//以下类似
if(n>5) cout<<
k6;
if(n>
6)cout<
<k7;
if(n>7)cout<
,"<<k8;
if (n>
8)cout<
k9;
if (n>
9)ﻩcout<
<<k10;
cout<
<endl<<endl;
return0;
usingname