C++程序设计(第二版)钱能-第3章--数据类型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章数据类型3.9练习3(Exercises3)1.模仿程序f0302.cpp,打印整数-1234567的二进制位码。解答:#includeiostreamusingnamespacestd;intmain(){longintl=-1234567;int*pa=(int*)&l;for(inti=31;i=0;i--)cout(*pai&1)(i==31||i==23?-:);coutendl;return0;}2.整型分longint、int、char、bool,浮点数分float、double、longdouble,试分别输出各类型的字节长度和位长,输出形式如:longint:4byte32bits解答:#includeiostreamusingnamespacestd;intmain(){longinta=1;intb=2;charc='A';boold=0;floate=3;doublef=4;longdoubleg=5;coutlongint:sizeof(a)byte8*sizeof(a)bitsendl;coutint:sizeof(b)byte8*sizeof(b)bitsendl;coutchar:sizeof(c)byte8*sizeof(c)bitsendl;coutbool:sizeof(d)byte8*sizeof(d)bitsendl;coutfloat:sizeof(e)byte8*sizeof(e)bitsendl;coutdouble:sizeof(f)byte8*sizeof(f)bitsendl;coutlongdouble:sizeof(g)byte8*sizeof(g)bitsendl;return0;}3.定义一个数组,数据为:6,3,7,1,4,8,2,9,11,5.请创建一个向量,把数组的初值赋给它,然后对该向量求标准差(均方差):211s()niixxn解答:#includeiostream#includevector#includecmathusingnamespacestd;intmain(){intnum[10]={6,3,7,1,4,8,2,9,11,5};vectorintvnum(num,num+10);doubleave,sum1=0,sum2=0,s;for(vectorint::iteratorit=vnum.begin();it!=vnum.end();it++){cout*it;sum1+=*it;}ave=sum1/10;for(inti=0;i10;i++)sum2+=pow((vnum[i]-ave),2);s=sqrt(sum2/10);cout的标准差是:sendl;return0;}4.有一些日期,在文件abc.txt中,后面加*号的表示要加班的日期,试汇总每个月25号的天数,如果是加班日,则该天乘2。解答:#includeiostream#includefstream#includestringusingnamespacestd;intmain(){intsum=0;ifstreamin(abc.txt);strings;while(getline(in,s)){if(s.find(25)!=-1)if(s.find('*')!=-1)sum+=2;elsesum++;}cout所有每个月25号的天数为:sumendl;return0;}5.编制程序,将输人的一行字符以加密的形式输出,然后将其解密,解密的字符序列与输入的正文进行比较,吻合时输出解密的正文,否则输出解密失败。加密时,将每个字符的ASCII码依次反复加上“4962873”中的数字,并在32(‘’)122(‘z’)之间做模运算。解密与加密的顺序相反。例如,对于输入正文“theresultof3and2isnot8”,则运行结果为:xqkzlvyuzwm#7)gpl'5$ryvvw$Atheresultof3and2lsnot8解答:#includeiostream#includestringusingnamespacestd;constcharkey[]=4962873;stringencode(string&str){stringresult(str);for(inti=0;istr.length();i++){result[i]+=key[i%7]-'0';if(result[i]'z'){result[i]-=91;}}returnresult;}stringdecode(string&str){stringresult(str);for(inti=0;istr.length();i++){result[i]-=key[i%7]-'0';if(result[i]''){result[i]+=91;}}returnresult;}intmain(){strings;getline(cin,s);stringt=encode(s);couttendl;cout(s==decode(t)?s+\n:string(decodefailed\n));return0;}6.阅读下列程序,写出运行结果(应该知道的遍历数组的五种方法)。//=====================================#includeiostreamusingnamespacestd;//-------------------------------------intmain(){intsum[5]={0};//存放每种方法的结果intiArray[]={1,4,2,7,13,32,21,48,16,30};intsize=sizeof(iArray)/sizeof(*iArray);int*iPtr=iArray;for(intn=0;nsize;++n)//方法1sum[3]+=iPtr[n];for(intn=0;nsize;++n)//方法2sum[2]+=*(iPtr+n);for(intn=0;nsize;++n)//方法3sum[1]+=*iPtr++;for(intn=0;nsize;++n)//方法4sum[0]+=iArray[n];for(intn=0;nsize;++n)//方法5sum[4]+=*(iArray+n);for(inti=0;i5;++i)coutsum[i]endl;return0;}解答:1741741741741747.试将下列程序中的指针改为引用。//=====================================#includeiostreamusingnamespacestd;//-------------------------------------voidmySwap(int*a,int*b);//-------------------------------------intmain(){inta=16,b=48;couta=a,b=bendl;mySwap(&a,&b);coutAfterBeingSwapped:\n;couta=a,b=bendl;return0;}//-------------------------------------voidmySwap(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}解答://=====================================#includeiostreamusingnamespacestd;//-------------------------------------voidmySwap(int&a,int&b);//-------------------------------------intmain(){inta=16,b=48;couta=a,b=bendl;mySwap(a,b);coutAfterBeingSwapped:\n;couta=a,b=bendl;return0;}//-------------------------------------voidmySwap(int&a,int&b){inttemp=a;a=b;b=temp;}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功