您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 钱能--c++程序设计教程(第二版)第四章
可以在VS2010上运行,供正在学习C++的同学参考。我也是新手,可能在编程风格和思路上有待提高,也有一些题目不知道该如何下手,路过的朋友知道的可以告诉我,我的邮箱是guosheng-14@163.com,可以督促我继续写以后的答案。vc++6.0可能在头文件上有所区别。第四章第一部分//4.2.4—浮点数比较#includeiostream#includecmathusingnamespacestd;intmain(){floatf1=7.123456789;floatf2=7.123456785;cout(f1==f2?:not)sameendl;cout((abs(f1-f2)1e-5)?not:)sameendl;cout==========================endl;floatg=1.0/3.0;doubled=1.0/3.0;cout(g==d?:not)sameendl;}//4.3.2—精度丢失#includeiostreamusingnamespacestd;intmain(){floatf=7.0/3;inta=7.0/3;cout.precision(9);coutfixed7.0/3endlfendlaendl;doubled=123456789.9*9;a=f=d;coutdendlfendlaendl;}//4.3.3—显示转换类型#includeiostream#includecmathusingnamespacestd;intmain(){doubled=sqrt(123456.0);inta=static_castint(d)*8+5;coutd变换前后值不变static_castint(d)dendl;cout==========================endl;intb=d*8+5;coutdendlaendlbendl============================endl;}//4.5.2—位操作实例(1)#includeiostreamusingnamespacestd;voidprint(inta);intmain(){for(intI=0;I32;I++){if((I4)&&!((I&8)3))continue;if(!((I&4)2)&&!(I&1))continue;if(((I&8)3)==((I&4)2))continue;if((((I&4)2))!=((I&2)1))continue;if((I&1)&&!((I4)&&((I&8)3)))continue;print(I);}}voidprint(inta){cout((a&16)?A:~A)((a&8)?B:~B)((a&4)?C:~C)((a&2)?D:~D)((a&1)?E:~E)endl;}//4.5.2—位操作实例(2)#includeiostreamusingnamespacestd;voidprint(inta);intmain(){for(intI=0;I32;I++){boolA=I&16,B=I&8,C=I&4,D=I&2,E=I&1;if(A&&!B)continue;if(!D&&!E)continue;if(B==C)continue;if(C!=D)continue;if(E&&!(A&&B))continue;print(I);}}voidprint(inta){cout((a&16)?A:~A)((a&8)?B:~B)((a&4)?C:~C)((a&2)?D:~D)((a&1)?E:~E)endl;}//4.6.3指针增量操作#includeiostreamusingnamespacestd;char*mycopy(char*p1,char*p2);intmain(){chara[50];char*s=Hello,guosheng!;coutoriginal:sendl;coutaftercopy:mycopy(a,s)endl;}char*mycopy(char*p1,char*p2){char*s=p1;while(*s++=*p2++);returnp1;}第二部分1.(1)sqrt(pow(sin(x),2.5))(2)(a*x+(a+x)/(4*a))/2(3)(pow(c,(pow(x,2))))/(sqrt(2*x))2.略//3—排列组合公式(防止中间溢出)#includeiostreamusingnamespacestd;intmain(){unsignedlonginta=1,b=1,c=1;longdoubles;for(inti=1;i19;i++){a*=i;coutaendl;}for(inti=1;i14;i++){b*=i;coutbendl;}for(inti=1;i6;i++){c*=i;coutcendl;}couttheresultis:(s=a/(b*c))endl;cout================================endl;a=1;b=1;for(inti=14;i19;i++){a*=i;coutaendl;}for(inti=1;i6;i++){b*=i;coutbendl;}couttheresultis(s=a/b)endl;}//4—乘积是16!的数#includeiostream#includefstream#includecmath#includesstreamusingnamespacestd;intmain(){longdoublea=1;for(inti=1;i=16;i++){a*=i;coutaendl;}cout======================endl;ifstreamin(aa.txt);for(strings;getline(in,s);){longdoublemut=1,p;for(istringstreamsin(s);sinp;mut*=p;){if(abs(mut-a)1e-5)coutsendl;}}}//5--12345.7891023456的二进制码#includeiostreamusingnamespacestd;intmain(){longdoublea=12345.7891023456;coutsizeof(longdouble)endl;//longdouble有8个字节int*ph=reinterpret_castint*(&a);//高四位地址intah=*ph;//高四位对应的int类型数是ahint*pl=reinterpret_castint*((&a)+4);intal=*pl;//同理,低四位for(inti=31;i=0;i--){if((i+1)%8==0)cout;//分别进行位操作处理就行了cout(*phi&1);}coutendl;for(inti=31;i=0;i--){if((i+1)%8==0)cout;cout(*pli&1);}coutendl;}//位操作只有整形才能使用,这里的longdouble不能直接使用位操作//我们可以把ã?longdouble的8个字节拆解成两个4字节的部分,分别是ah和al,他们的指针是*ph和*hl//6—整除信息#includeiostream#includefstream#includesstreamusingnamespacestd;intmain(){ifstreamin(aa.txt);for(strings;getline(in,s);){istringstreamsin(s);for(inta;sina;){if(a%(3*5*7)==0)couta能¨¹同ª?时º¡À被À?3,5,7整?除yendl;elseif(a%3!=0&&a%5!=0&&a%7!=0)couta不?能¨¹被À?3,5,7任¨?何?一°?个?整?除yendl;elseif(a%3!=0&&a%5!=0&&a%7==0)couta能¨¹被À?7整?除yendl;elseif(a%3!=0&&a%5==0&&a%7!=0)couta能¨¹被À?5整?除yendl;elseif(a%3==0&&a%5!=0&&a%7!=0)couta能¨¹被À?3整?除yendl;elseif(a%3!=0&&a%5==0&&a%7==0)couta能¨¹被À?5,7整?除yendl;elseif(a%3==0&&a%5!=0&&a%7==0)couta能¨¹被À?3,7整?除yendl;elseif(a%3==0&&a%5==0&&a%7!=0)couta能¨¹被À?3,5整?除yendl;}}}/*3574891521483635105195138*/7.根据自己风格改变//8—转换二进制#includeiostream#includevector#includefstream#includecmath#includesstreamusingnamespacestd;intmain(){ifstreamin(aa.txt);for(strings;getline(in,s);){if(s==-1)break;longdoublea=0;for(inti=0;is.size();i++){if(s[i]=='1')a+=pow(2.0,double(s.size()-1-i));}coutaendl;}}//结果不是像样板输出那样,我想不出来了,但是结果相近,记录方式不一样而已。我已经很满意了,呵呵。
本文标题:钱能--c++程序设计教程(第二版)第四章
链接地址:https://www.777doc.com/doc-4036562 .html