好文档 - 专业文书写作范文服务资料分享网站

(完整版)谭浩强c程序设计课后习题答案

天下 分享 时间: 加入收藏 我要投稿 点赞

//计算各位数字

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<<\ switch(place) {case

5:cout<

cout<

4:cout<

cout<

3:cout<

case 2:cout<

case 1:cout<

cout<<\ cout<

return 0; } 3.13题

#include using namespace std; int main ()

{ long i; //i为利润 float

bonus,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<<\ cin>>i;

if (i<=100000)

bonus=i*0.1; //利润在10万元以内按10%提成奖金 else if (i<=200000)

bonus=bon1+(i-100000)*0.075; //利润在10万元至20万时的奖金 else if (i<=400000)

bonus=bon2+(i-200000)*0.05; 利润在20万元至40万时的奖金 else if (i<=600000)

bonus=bon4+(i-400000)*0.03; 利润在40万元至60万时的奖金 else if (i<=1000000)

bonus=bon6+(i-600000)*0.015; 利润在60万元至100万时的奖金 else

bonus=bon10+(i-1000000)*0.01; 利润在100万元以上时的奖金 cout<<\

//

//

//

//

6 / 75

return 0; }

3.13题另一解

#include using namespace std; int main () {long i;

float bonus,bon1,bon2,bon4,bon6,bon10; int c;

bon1=100000*0.1;

bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; cout<<\ 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: case5:

bonus=bon4+(i-400000)*0.03;break; case 6: case 7: case 8:

case 9: bonus=bon6+(i-600000)*0.015; break;

case 10: bonus=bon10+(i-1000000)*0.01; }

cout<<\ return 0; }

3.14题

#include using namespace std; int main () {int t,a,b,c,d;

cout<<\

cin>>a>>b>>c>>d; cout<<\b=\c=\ if (a>b)

{t=a;a=b;b=t;} if (a>c)

{t=a; a=c; c=t;} if (a>d)

{t=a; a=d; d=t;} if (b>c)

{t=b; b=c; c=t;} if (b>d)

{t=b; b=d; d=t;} if (c>d)

{t=c; c=d; d=t;}

cout<<\

cout<

3.15题

#include using namespace std; int main ()

{int p,r,n,m,temp;

cout<<\enter two positive integer numbers n,m:\ cin>>n>>m;

if (n

m=temp; //把大数放在n中, 小数放在m中 }

p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用

while (m!=0) //求n和m的最大公约数 {r=n%m; n=m; m=r; }

cout<<\

cout<<\ // p是

7 / 75

原来两个整数的乘积 return 0; }

3.16题

#include using namespace std; int main () {char c;

int letters=0,space=0,digit=0,other=0; cout<<\ while((c=getchar())!='\\n')

{if (c>='a' && c<='z'||c>='A' && c<='Z') letters++; else if (c==' ') space++;

else if (c>='0' && c<='9') digit++; else other++; }

cout<<\

space:\ other:\ return 0; } 3.17题

#include using namespace std; int main ()

{int a,n,i=1,sn=0,tn=0; cout<<\ cin>>a>>n; while (i<=n)

{tn=tn+a; //赋值后的tn为i个a组成数的值

sn=sn+tn; //赋值后的sn为多项式前i项之和 a=a*10; ++i; }

cout<<\

return 0; } 3.18题

#include using namespace std; int main () {float s=0,t=1; int n;

for (n=1;n<=20;n++) {

t=t*n; // 求n!

s=s+t; // 将各项累加 }

cout<<\ return 0; }

3.19题

#include using namespace std; int main () {int i,j,k,n;

cout<<\ for (n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n;

if (n == i*i*i + j*j*j + k*k*k) cout<

cout<

#include using namespace std; int main()

{const int m=1000; // 定义寻找范围

int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10; int i,a,n,s;

for (a=2;a<=m;a++) // a是2~1000之间的整数,检查它是否为完数

{n=0; // n用来累计

8 / 75

a的因子的个数

s=a; // s用来存放尚未求出的因子之和,开始时等于a

for (i=1;i

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 case 2: k2=i; break; // 找出的笫2个因子赋给k2 case 3: k3=i; break; // 找出的笫3个因子赋给k3 case 4: k4=i; break; // 找出的笫4个因子赋给k4 case 5: k5=i; break; // 找出的笫5个因子赋给k5 case 6: k6=i; break; // 找出的笫6个因子赋给k6 case 7: k7=i; break; // 找出的笫7个因子赋给k7 case 8: k8=i; break; // 找出的笫8个因子赋给k8 case 9: k9=i; break; // 找出的笫9个因子赋给k9 case 10: k10=i; break; // 找出的笫10个因子赋给k10

} }

if (s==0) // s=0表示全部因子都已找到了

{cout<

if (n>1) cout<1表示a至少有2个因子

if (n>2) cout<<\// n>2表示至少有3个因子,故应再输出一个因子 if (n>3) cout<<\// n>3表示至少有4个因子,故应再输出一个因子 if (n>4) cout<<\ // 以下类似

if (n>5) cout<<\ if (n>6) cout<<\ if (n>7) cout<<\ if (n>8) cout<<\ if (n>9) cout<<\ cout<

return 0; }

3.20题另一解

#include using namespace std; int main() {int m,s,i;

for (m=2;m<1000;m++) {s=0;

for (i=1;i

if ((m%i)==0) s=s+i; if(s==m)

{cout<

if (m%i==0) cout<

return 0; }

3.20题另一解

9 / 75

#include using namespace std; int main() {int k[11]; int i,a,n,s;

for (a=2;a<=1000;a++) {n=0; s=a;

for (i=1;i

k[n]=i; // 将找到的因子赋给k[1]┅k[10] } if (s==0)

{cout<

return 0; }

3.21题

#include using namespace std; int main()

{int i,t,n=20;

double a=2,b=1,s=0; for (i=1;i<=n;i++) {s=s+a/b; t=a;

a=a+b; // 将前一项分子与分母之和作为下一项的分子

b=t; // 将前一项的分子作为下一项的分母 }

cout<<\ return 0; }

3.22题

#include using namespace std; int main()

{int day,x1,x2; day=9; x2=1;

while(day>0)

{x1=(x2+1)*2; // 第1天的桃子数是第2天桃子数加1后的2倍 x2=x1; day--; }

cout<<\ return 0; }

3.23题

#include #include using namespace std; int main()

{float a,x0,x1;

cout<<\ cin>>a; // 输入a的值 x0=a/2;

x1=(x0+a/x0)/2; do

{x0=x1;

x1=(x0+a/x0)/2; }

while(fabs(x0-x1)>=1e-5);

cout<<\square root of \is \ return 0; }

3.24题

#include using namespace std; int main() {int i,k;

for (i=0;i<=3;i++) // 输出上面4行*号

10 / 75

(完整版)谭浩强c程序设计课后习题答案

//计算各位数字ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousa
推荐度:
点击下载文档文档为doc格式
004f01ke202xzhu2kzn0175lm26kup00a11
领取福利

微信扫码领取福利

微信扫码分享