《皮德常c++全套答案.doc》由会员分享,可在线阅读,更多相关《皮德常c++全套答案.doc(78页珍藏版)》请在金锄头文库上搜索。
1、第2章习题2-5、计算一个人一段时期的薪水,第1天1分钱,第2天2分钱,每天翻倍。要求用户输入天数(输入检验),列表显示每天的薪水,及薪水总和(输出人民币的单位:“元”)。#includeusing namespace std;void main()int daynum;float daypay, paysum=0;docout1整数): ;cindaynum;while(daynum=1);/有效性检验for(int i=1; i=daynum; i+)daypay=i/100.0;cout第i天薪水:daypay 元t;if(i%2=0)coutendl;paysum+=daypay;/列
2、表输出每天薪水,计算总薪水 coutendl;cout薪水总和:paysum元; /输出总薪水2-7、用for循环计算1/302/29+3/28+30/1。#includeusing namespace std;void main()int i;float sum=0;for(i=1;i=30;i+)sum+=i/float(31-i);coutsum=sum;2-8、用循环语句输出如下图形。AAAAAAA AAAAA AAA A AAA AAAAAAAAAAAA#includeusing namespace std;void main()int i,j,k;for(i=0;i=3;i+)/控
3、制行for(j=0;ji;j+)couti;k-)/控制每行输出的A的数目coutA;coutendl;for(i=1;ii;j-)cout ;/控制每行输出的 的数目for(k=0;k2*i+1;k+)/控制每行输出的A的数目coutA;coutendl;2-9、采用循环结构计算公式s的前30项和。s=2/1+3/2+5/3+#includeusing namespace std;#define N 30void main( )int i;float a1,a2,sum=0,temp; /a1分子,a2分母for(a1=2,a2=1,sum=0,i=1;i=N;i+)sum+=a1/a2;t
4、emp=a1; a1=a1+a2; a2=temp; /为下一次求和做准备coutnsum is : sum;2-10、求sum=a+aa+aaa,a和n由键盘输入。#includeusing namespace std;void main()int i,a,n;long sum,temp;sum=temp=0;coutan;for(i=1;i=n;i+)temp=a+temp*10;sum+=temp;coutthe result is : sum;2-11、输入一行字符,以回车结束,分别统计其中出现的大写英文字母、小写英文字母、数字字符、空格和其他字符出现的次数。#includeusing
5、 namespace std;void main()char c; int lletters=0,uletters=0,spaces=0,digits=0,others=0;cout=a&c=A&c=0&c=9) digits+; else others+; coutthe number of lower case letters: llettersendl;coutthe number of upper case letters: ulettersendl;coutthe number of digits: digitsendl;coutthe number of spaces: space
6、sendl;coutthe number of others: others;第3章习题:3-1、编写求阶乘及组合的函数,在主函数调用求组合的函数。#includeusing namespace std;long fac(int n)long fac=1;for(int i=2;i=n;i+)fac*=i;return fac;long comb(int n, int k)return fac(n)/(fac(k)*fac(n-k);void main()int n,k;coutnk;coutthe combination number of n and k: comb(n,k);3-2、编写
7、函数计算ex的近似值,在主函数中输入x及精度10-9(要求最后一项小于10-9)。#include#includeusing namespace std;double ex(double x,double eps) int i=1;double e=1,t=1;while(fabs(t)eps) t=t*x/i;e=e+t;i+; return(e); void main()double x,eps;coutxeps; coute*x:nex(x,eps);3-3、编写被调函数,求出1000以内 素数,在主函数中调用函数并输出素数,每行输出5个素数。#include#include#inclu
8、deusing namespace std;void PrimeNum(int n=1000) int i, j, k, flg=1, num=0;for(i=2;in;i+) k=sqrt(i); for(j=2;j=k;j+) if(i%j=0) flg=0; if(flg=1)coutsetw(5)i;num+;if(num%5=0)coutendl;flg=1;void main( ) PrimeNum();3-4、输出1000以内的所有完数。#include#includeusing namespace std;void print(int n)/输出因子int i;for(i=1;
9、i=n/2;i+)if(n%i=0) coutsetw(5)i;coutendl;void wanshu(int n)int i;int a,s=0;a=n/2;for(i=1;i=a;i+)if(n%i=0) s+=i;if(s=n)coutn its factors are: ;print(n); void main( )int i;for(i=1;i=1000;i+)wanshu(i);3-5、编写函数(递归和非递归)求两个整数的最大公约数和最小公倍数。#includeusing namespace std;int gcd(int x,int y)int r;r=x%y;while (r
10、!=0)x=y; y=r; r=x%y;return(y);/int gcd(int a, int b)/if(a%b=0) / return b;/else / return gcd(b, a%b);/int gbs(int x,int y)int bs,ys;ys=gcd(x,y);bs=x*y/ys;return bs;void main()int x,y,g,bs;coutxy;g=gcd(x,y);bs=gbs(x,y);coutthe gcd: gendl;coutthe gbs: bs;3-6、递归函数反序输出数位。#includeusing namespace std;void rev(int x) /*反向输出*/if(x0)coutx%10; rev(x/10); void main( )int x;coutx;coutreverse:;if(x0) cout-;x=-x;rev(x); 3-8、递归函数实现十进制到二进制转换。#includeusing namespace std;void fun(int i) if(i 1) fun(i/2);couti%2;