c++基础练习题100道.docx
《c++基础练习题100道.docx》由会员分享,可在线阅读,更多相关《c++基础练习题100道.docx(43页珍藏版)》请在课桌文档上搜索。
1、*1、打印出所有的“水仙花数“。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33o*/#includevoidmain()(inti,a=0,b=0,c=0;for(i=100;i1000;i+)(a=i%10;b=i10%10;c=i100%10;if(a*a*a+b*b*b+c*c*c=i)cout,i=i1,2,3*/#includevoidmain()(inti,j,sum=0za50,k,t;for(i=l;i=1000;i+)(sum=0;for(j=l;ji;j+)(if(i%j=0)(sum+=j;ak+=j;
2、)t=k;if(sum=i)(couti,;for(k=0;kt;k+)(coutak;if(kt-l)cout,;coutendl;)k=0;)*3、求Sn=a+aa+aaa+.+aa.a之值,其中a是一个数字。例如:2+22+222+.+22222(此时n=5),n由键盘输入。*/#includevoidmain()(doublearsn=O.O,sum=O.O;intn,i;couta;coutn;sn=a;sum=a;for(i=2;i=n;i+)(sum=sum*10+a;sn+=sum;)cout,Sn=snendl;)*4、一球从100米高度自由落下,每次落地后反跳回原高度的一半
3、,再落下。求它在第10次落地时,共经过了多少米第10次反弹多高*/#includevoidmain()(doublehl=100zh2=100,sum=0.0;inti;for(i=l;i=10;i+)(sum+=h2;hl=hl2.0;h2=hl*2;cout,sum=,sum,hl=,hlendl;*5、猴子吃桃问题。猴子第一天摘下假设干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。*/#includevoidmain()(intnu
4、mber,i;number=l;for(i=10;il;i-)number=(number+1)*2;coutnnumber=,numberendl;)第4章函数*K写一函数用“气泡法”对输入的10个字符按由小到大的顺序排列。*/#includevoidmain()inti,j,temp,a10;cout,pleaseinputtennumbers:n;for(i=0;iai;for(i=0;i10;i+)/每循环一次确定数组中一个数的位置for(j=i+l;jaj)(temp=aj;aj=ai;ai=tem;)cout,resortresult=;for(i=0;i10;i+)coutai1
5、)*/#includedoublefun(double,double);voidmain()(doublen,rsum;cout,inputnandx,nx;sm=fun(n,x);cout,P,nn(,x,*),=,suml)return(2*nl-l)*xl*fun(nl-lzxl)-(nl-l)*fun(nl-2,xl)nl;)*3、编写一函数,由实参传来一字符串,统计此字符串中字母、数字、空格、和其它字符的个数,并在主函数中输入字符串以及输出上述结果。*/#includevoidjudge(chara);voidmain()(constintsize=100;charasize;cin
6、.getline(azsize);judge(a);)voidjudge(chara100)判断字符类型(intIetter=Oznumber=0zOthers=Ozi=0;while(ai!=0,)(if(ai=,a,ai=,A,&ai=,O&ai=,9,)number+;统计数字个数elseOtherS+;统计其他数个数i+;coutletter=letternumber=number,others=,othersendl;)*4、给出年、月、日,计算该日是该年的第几天。*/#includeintlead(int);voidmain()(intly,yearzmonth,date,i,su
7、m=0;coutyearmonthdate;inta12=31,0,31,30,31z30,31,31,30,31,30,31);Iy=Iead(year);if(Iy=I)al=29;/366天elseal=28;/365天for(i=0;imonth-l;i+)/当前月之前所有月天数累加和sum+=ai;sum+=date;加上当前月天数COUt”你输入的日期是当年的第”sum”天,)intlead(inty)/判断闰年(if(y%4=0&y%100!=0)(y%400=0)return1;/是闰年elsereturn0;不是闰年)/*5、写两个函数,分别求两个整数的最大公约数和最小公倍数
8、,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。*/#includeintCdivisor(int,int);intCmultiple(intzint,int);voidmain()(intx,y,d,m;coutxy;d=cdivisor(x,y);m=cmultiple(x,y,d);coutcommondivisoris,dendlucommonmultipleis,mendl;)intCdivisor(intxlzintyl)最大公约数(intr,temp;if(xlyl)(tem=xl;xl=yl;yl=temp;)WhiIe(x:Uyl)/当较大数除以较小数余数等于O时,
9、较小数为最大公约数(r=xl%yl;xl=yl;yl=r;)returnyl;intCmultiple(intx2,inty2zintdl)最小公倍数(returnx2*y2dl;/两数相乘结果除以它们的酿大公约数为最小公倍数)/*6、写一函数,将两个字符串连接。*/#include#includevoidmain()(constintsize=100;charasize,bsize;coutinputtwostring:endl;cin.getline(a,size);cin.getline(bzsize);strcat(a,b);cout,a=,aendl;)*7、写一函数,将一个字符串的
10、元音字母复制到另一个字符串,然后输出。*/#include#includevoidscy(char*,char*);voidmain()constintsize=100;charasize=nHelloworld,;charbsize=Net,;cout,a=,ab=,bendl;scpy(a,b);cout,a=,aendl;)voidscpy(char*p,char*q)(while(*q!=f0,)if(*q=,a,II*q=A,*q=,e,*q=,E,I*q=,i,II*q=,I,II*q=,o*q=,0,II*q=,u,II*q=U,)*p+=*q;q+;)*8、写一函数,输入一个四
11、位数字,要求输出这4个数字字符,但每两个数字间空一空格。如输入1990,应输出“199Omo*/#include#includevoidouts(chara);voidmain()constintsize=10;charasize;cin.getline(azsize);outs(a);)voidouts(chara10)(inti;if(strlen(a)=4)for(i=0;i4;i+)coutai,;elsecout,inpterror.endl;)第5章数组*1、将一个数组中的值按逆序重新存放,例如,原来顺序为:a、b、c.do要求改为:d、c、b、ao*/#includevoidba
12、ck(char*);voidmain()(chara50=abcdefg;cout,a=,aendl;back(a);)#includevoidback(char*p)inti=0;while(*p!=,0,)(P+;/把指针定位到字符串末尾i+;/统计字符个数cout0;i-)/逆序输出P;cout*p;coutendl;)/*2、打印出杨辉三角形(要求打印出前15行)。(杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数那么是等于它肩上的两个数之和。)*/#includevoidtri(inta15);voidmain()(inti,j,a1515;tri(a);coutn
13、a=,;for(i=0;i15;i+)/遍历整个数组for(j=0;j=i;j+)(coutaij;if(aij=9)/当输出个位数之后输出4个空格保持整齐cout=10&aiHj=99)当输出十位数之后输出3个空格保持整齐cout=100&aiHj=999)当输出百位数之后输出2个空格保持整齐coutn;elseCOUte”;/当输出百位数之后输出1个空格保持整齐)cotendl,每行输出完毕后换行)voidtri(inta1515)inti,j;for(i=0;i15;i+)for(j=0;j=i;j+)(if(j=0IIj=i)/三角形第一列和对角线被赋值为1aij=l;elseaij=
14、ai-lj-l+ai-lj;/W出其余的数组元素)/*3、编一程序,将两个字符串连接起来,不要用StrCat函数。*/#include#includevoidscat(char*,char*);voidmain()(constintsize=100;charasize=nHellou;charbsize=Bye,;cout,a=,a,b=bendl;scat(a,b);couta=,aafterlinkaandb,endl;)voidscat(char*p,char*q)(While(*p!=,0,)/确定数组a的插入位置P+;)while(*q!=,0,)*p=*q;p+;q+;)*4、打印
15、“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如:三阶魔方阵:816357492要求打印由1到n2的自然数构成的所有魔方阵。*/方法一:输出N介魔方阵,但每介只输出一种。#includevoidsquare(inta10,intk,intn);voidmain()intn,i,j,k,a1010=0;cout,inputanOddnumber:,n;k=n2”/确定第一个数列数square(a,k,n);for(i=0;in;i+)for(j=0;jn;j+)cout,t,aij;coutendl;)voidsquare(inta10zintk,intn)(in
16、ti,j;for(i=l,j=0;i=n*n;i+,j,k+)/n为阶数,从1开场给数组赋值(if(jO&k=n)/当数组行列都越出范围时候,确定数组正确位置(j+=2;k-=l;)elseif(j=n)/当数组列越出范围时候,确定数组正确位置k-=n;elseif(ajk!=0)/当数组原位置有数时候,确定数组位置(j+=2;k-=l;)ajk=i;)方法二:输出N介魔方阵所有魔方阵。#:LnClUde#include#includeusingnamespacestd;voidprintA(int*pzintn)/输出这个n阶魔方阵(CoUtendl”下面是一个yn”阶魔方阵:endl;in
17、ti,j;for(i=0;in;i+)(for(j=0;jn;j+)(coutsetw(4)pij;)coutendl;coutendlendl;)boolJudge(int*p,intn)/判断是否为n阶魔方阵inti,j,sum=0,NoWSUm=0;boolYesOrNo=true;for(j=0;jn;j+)/第一行总和(sum+=p0j;for(i=1;in;i+)/判断每行总和是否相等(NowSum=0;for(j=O;jn;j+)(NowSum+=pij;)if(NowSum!=sum)(YesOrNo=false;gotoEND;)for(i=0;in;i+)/每列是否相等(N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 基础 练习题 100
链接地址:https://www.desk33.com/p-1213496.html