皮德常c++全套答案.docx
- 文档编号:28681530
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:103
- 大小:40.86KB
皮德常c++全套答案.docx
《皮德常c++全套答案.docx》由会员分享,可在线阅读,更多相关《皮德常c++全套答案.docx(103页珍藏版)》请在冰豆网上搜索。
皮德常c++全套答案
第2章习题
2-5、计算一个人一段时期的薪水,第1天1分钱,第2天2分钱,每天翻倍。
要求用户输入天数(输入检验),列表显示每天的薪水,及薪水总和(输出人民币的单位:
“元”)。
#include
usingnamespacestd;
voidmain()
{
intdaynum;
floatdaypay,paysum=0;
do{
cout<<"请输入天数(>1整数):
";
cin>>daynum;
}while(daynum<=1);//有效性检验
for(inti=1;i<=daynum;i++)
{daypay=i/100.0;
cout<<"第"<
"< if(i%2==0) cout< paysum+=daypay;//列表输出每天薪水,计算总薪水 } cout< cout<<"薪水总和: "< } 2-7、用for循环计算1/30+2/29+3/28+…+30/1。 #include usingnamespacestd; voidmain() { inti; floatsum=0; for(i=1;i<=30;i++) sum+=i/float(31-i); cout<<"sum="< } 2-8、用循环语句输出如下图形。 AAAAAAA AAAAA AAA A AAA AAAAA AAAAAAA #include usingnamespacestd; voidmain() { inti,j,k; for(i=0;i<=3;i++)//控制行 {for(j=0;j cout<<'';//控制每行输出的''的数目 for(k=7-i;k>i;k--)//控制每行输出的'A'的数目 cout<<'A'; cout< } for(i=1;i<=3;i++) {for(j=3;j>i;j--) cout<<'';//控制每行输出的''的数目 for(k=0;k<2*i+1;k++)//控制每行输出的'A'的数目 cout<<'A'; cout< } } 2-9、采用循环结构计算公式s的前30项和。 s=2/1+3/2+5/3+… #include usingnamespacestd; #defineN30 voidmain() {inti; floata1,a2,sum=0,temp;//a1分子,a2分母 for(a1=2,a2=1,sum=0,i=1;i<=N;i++){ sum+=a1/a2; temp=a1;a1=a1+a2;a2=temp;//为下一次求和做准备 } cout<<"\nsumis: "< } 2-10、求sum=a+aa+…+aa…a,a和n由键盘输入。 #include usingnamespacestd; voidmain() { inti,a,n; longsum,temp; sum=temp=0; cout<<"\nEnteraandn: "; cin>>a>>n; for(i=1;i<=n;i++) {temp=a+temp*10; sum+=temp; } cout<<"theresultis: "< } 2-11、输入一行字符,以回车结束,分别统计其中出现的大写英文字母、小写英文字母、数字字符、空格和其他字符出现的次数。 #include usingnamespacestd; voidmain() {charc; intlletters=0,uletters=0,spaces=0,digits=0,others=0; cout<<"Pleaseenterthecharacters: \n"; while((c=cin.get())! ='\n') {if(c>='a'&&c<='z') lletters++; elseif(c>='A'&&c<='Z') uletters++; elseif(c=='') spaces++; elseif(c>='0'&&c<='9') digits++; else others++; } cout<<"thenumberoflowercaseletters: "< cout<<"thenumberofuppercaseletters: "< cout<<"thenumberofdigits: "< cout<<"thenumberofspaces: "< cout<<"thenumberofothers: "< } 第3章习题: 3-1、编写求阶乘及组合的函数,在主函数调用求组合的函数。 #include usingnamespacestd; longfac(intn) { longfac=1; for(inti=2;i<=n;i++) fac*=i; returnfac; } longcomb(intn,intk) { returnfac(n)/(fac(k)*fac(n-k)); } voidmain() {intn,k; cout<<"Pleaseinputthenandthek: "; cin>>n>>k; cout<<"thecombinationnumberofnandk: "< } 3-2、编写函数计算ex的近似值,在主函数中输入x及精度10-9(要求最后一项小于10-9)。 #include #include usingnamespacestd; doubleex(doublex,doubleeps) { inti=1; doublee=1,t=1; while(fabs(t)>eps) {t=t*x/i; e=e+t; i++; } return(e); } voidmain() {doublex,eps; cout<<"Pleaseinoutxandeps: \n"; cin>>x>>eps; cout<<"e**x: \n"< } 3-3、编写被调函数,求出1000以内素数,在主函数中调用函数并输出素数,每行输出5个素数。 #include #include #include usingnamespacestd; voidPrimeNum(intn=1000) {inti,j,k,flg=1,num=0; for(i=2;i { k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0) flg=0; if(flg==1) {cout< num++; if(num%5==0) cout< } flg=1; } } voidmain() {PrimeNum(); } 3-4、输出1000以内的所有完数。 #include #include usingnamespacestd; voidprint(intn)//输出因子 {inti; for(i=1;i<=n/2;i++) if(n%i==0)cout< cout< } voidwanshu(intn) {inti; inta,s=0; a=n/2; for(i=1;i<=a;i++) if(n%i==0)s+=i; if(s==n) {cout< "; print(n); } } voidmain() {inti; for(i=1;i<=1000;i++) wanshu(i); } 3-5、编写函数(递归和非递归)求两个整数的最大公约数和最小公倍数。 #include usingnamespacestd; intgcd(intx,inty) {intr; r=x%y; while(r! =0) {x=y;y=r;r=x%y;} return(y); } //intgcd(inta,intb) //{if(a%b==0) //returnb; //else //returngcd(b,a%b); //} intgbs(intx,inty) {intbs,ys; ys=gcd(x,y); bs=x*y/ys; returnbs; } voidmain() {intx,y,g,bs; cout<<"Entertwonumber: \n"; cin>>x>>y; g=gcd(x,y); bs=gbs(x,y); cout<<"thegcd: "< cout<<"thegbs: "< } 3-6、递归函数反序输出数位。 #include usingnamespacestd; voidrev(intx)/*反向输出*/ {if(x>0) {cout< rev(x/10); } } voidmain() {intx; cout<<"Pleaseinputaninteger: \n"; cin>>x; cout<<"reverse: "; if(x<0) {cout<<"-"; x=-x; } rev(x); } 3-8、递归函数实现十进制到二进制转换。 #include usingnamespacestd; voidfun(inti) { if(i>1) fun(i/2); cout< } voidmain() {intn; cout<<"Pleaseinputthedecimalnumber: "; cin>>n; cout<<"thebinarynumber: "; fun(n); } 3-9、编写函数输出图形。 (略) 3-10、编写min函数模板和max函数模板。 #include usingnamespacestd; template Tmin(T&var1,T&var2) {if(var1 return(var1); else return(var2); } template Tmax(T&var1,T&var2) {if(var1 return(var2); else return(var1); } voidmain(void) {intuserInt1,userInt2; floatuserFloat1,userFloat2; charuserChar1,userChar2; cout<<"Pleaseinputtwointegarnumbers: "; cin>>userInt1>>userInt2; cout<<"theminis: "< cout<<"themaxis: "< cout<<"Pleaseinputtwofloatnumbers: "; cin>>userFloat1>>userFloat2; cout<<"theminis: "< cout<<"themaxis: "< cout<<"Pleaseinputtwocharnumbers: "; cin>>userChar1>>userChar2; cout<<"theminis: "< cout<<"themaxis: "< } 3-11、绝对值函数模板。 #include usingnamespacestd; template TAbs(constTvar) {if(var<0) return(-var); else return(var); } voidmain(void) {//测试整型量求绝对值 inttest1=12,test2=-34; cout<<"测试整型量: "< cout<<"test1="< "< cout<<"test2="< "< //测试浮点型量求绝对值 floattest3=12.67f,test4=-34.43f; cout<<"测试浮点型量: "< cout<<"test3="< "< cout<<"test4="< "< } 第4章习题: 4-1、编程实现由用户输入10个数据到数组,输出数组中的最大值和最小值及其相应的下标。 #include usingnamespacestd; #defineN10 voidmain() {inti,array[N],max,maxid,min,minid; for(i=0;i cin>>array[i]; max=min=array[0]; maxid=minid=0; for(i=1;i { if(array[i]>max) {max=array[i];maxid=i;} if(array[i] {min=array[i];minid=i;} } cout<<"themaxofthearrayis"< cout<<"theindexofthemaxis"< cout<<"theminofthearrayis"< cout<<"theindexoftheminis"< } 4-2、编写函数实现将字符串中每个单词的首字母大写。 #include usingnamespacestd; voidWords(charstr[]) {inti; charch='';//存放前一字符 for(i=0;str[i]! ='\0';i++) { if(ch==''&&str[i]! ='')//单词数首字母 {if(str[i]>='a'&&str[i]<='z') str[i]-=32; } ch=str[i]; } } voidmain() {charstr[100]; cout<<"Pleaseinputastring: "; cin.getline(str,100); Words(str); cout< } 4-4、编程实现线性查找账号,账号由用户输入,若找到,则输出合法信息,否则输出非法信息。 #include usingnamespacestd; #definearrSize5 intsearchList(intlist[],intnumElems,intvalue) {for(inti=0;i if(value==list[i]) returni; return-1; } voidmain() {inttests[arrSize]={5658845,4562555,3852085,4520125,5552012}; intresult,x; cout<<"请输入账号: "; cin>>x; result=searchList(tests,arrSize,x); if(result==-1) cout< "< else cout< "; } 4-5、采用二分查找实现上述程序。 #include #include usingnamespacestd; #definearrSize5 voidselectionSort(inta[],intn)//选择排序 {inti,j,t,minIndex; for(i=0;i { minIndex=i; for(j=i+1;j if(a[j] minIndex=j; if(minIndex! =i) {t=a[minIndex]; a[minIndex]=a[i]; a[i]=t; } } } //二分查找函数,在a数组中查找value intbinarySearch(inta[],intnumElems,intvalue) {intlow=0,mid,hight=numElems-1; while(low<=hight) { mid=(low+hight)/2; if(value==a[mid])//查找成功 returnmid;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 皮德常 c+ 全套 答案