《C++习题集》10月22日(1)求二次方程的根(考虑各种情况)(2)输入一字符,判定该字符时英文字母,还是数字字符,还是其它字符。10月29日(3)输出100—1000之间能被3整除或个位100是3的整数,每行输出10个。(4)求前n项和不超过5000的最大整数n。(5)对于任一整数n,输出其所有的因子。(重复的不计,如12:1,2,3,4,6,12)(6)求出1000内的完数。(完数是指因子之和与本身相等的数,如6=1+2+3)(7)求出所有的水仙花数。(水仙花数是个三位数,每个数与该数每位的立方和相等:如:153=13+53+33)11月1日(8)求出PI的值。PI=4*(1-1/3+1/5-1/7+1/9-…….),当某项的绝对值小于0.000001时停止。(9)输入10个同学的成绩(0到100之间),输出最高分和最低分。(10)输入一个正整数,求出其反序数。(如2789,输出9872)。(11)对于任一整数n,输出其所有的因子。(重复的计,如12:2,2,3)11月5日(12)求出100—10000内的素数。(13)输入x,求出sinx的值(精度自定)。(sinx=x–x3/3!+x5/5!-x7/7!+……)(14)求任意两个正整数的最大公约数。(15)打印如下的图形。12345612345123412312111月15日(16)求f(x)=x2+5x-6在【3,5】区间上的积分值。(17)分别用牛顿法和二分法求方程2x3-4x2+3x-6=0在x=1.5附近的实数根,精度ε=10-5(18)求满足下列条件的最小自然数n:(1)n的个位数是8,;(2)将n的个位移至n的最前面,所得的新数是n的4倍。11月19日(19)输入10个数,将其中小于平均值的数输出来。(20)输入10个数,将其中的最大数调到最后位置,输出重排后的结果。(21)已知a0=1,a1=2,an=an-1+an-2(n=2),求an的前20项。(22)用数组实现两个13位数的加法。11月24日(23)输入10个数,用冒泡法进行排序。(24)输入10个数,用选择法进行排序。(25)输入10个数(有序),用二分法进行查找。(26)将两个有序数组合并为一个有序数组。如{1,5,9,11,15},{2,3,12,13,17}合并为{1,2,3,5,9,11,12,13,15,17}11月26日(27)输入一字符串,统计其中每种英文字母(26个,大小写按一种计数)出现的次数。(28)将一正整数转化为字符串。(29)删除字符串中指定的字符。(30)输入某人的身份证号码,输出其年龄。11月29日(31)自定义每一个英文字母的对应规则,对字符串加密。(32)输入行数,打印如下的杨辉三角。11112113311464115101051。。。。。。。。。。(33)找出一个矩阵中的所有鞍点。(所谓鞍点,是指该元素在所在的行上是最大值,在所在的列上是最小值)12月3日(34)编写一函数,判断整数是否只由奇数数字构成。(35)编写一函数,用海伦法计算三角形面积。[S=sqrt(p(p-a)(p-b)(p-c)),其中p=0.5(a+b+c)](36)编写一函数,返回整数某一指定位的数值。(intdigitR(12345,2),返回4。)(37)编写一函数,判断某整数是否是回文数。并用该函数找出1000内的回文数。12月6日(38)编写一函数,统计字符串中指定字符的出现次数。(39)编写一函数,返回一整型数组中最小元素的下标,如果有多个最小元素,返回最小的下标。(40)编写一函数,将一整型数组中的元素诸循环右移j位。(41)编写一函数,判断矩阵是否是对称矩阵。12月13日(42)先阅读下面的程序,写出结果。然后运行该程序,检查你的结果。#includeiostreamusingnamespacestd;intmain(){inti=111;charch='1';coutchiendl;{inti=222;charch='2';coutchiendl;if(i0){doublei=300.3;intch=333;coutichendl;}coutichendl;}coutichendl;}(43)先阅读下面的程序,写出结果。然后运行该程序,检查你的结果。#includeiostreamusingnamespacestd;inti=5;voidfunc(void);intmain(){staticinta;intb=-22;intc=0;coutabcendl;c=c+10;func();coutabcendl;i=i+12;func();}voidfunc(){staticinta=3;staticintb;intc=10;a=a+2;i=i+21;c=c+6;coutabcendl;b=a;}(44)先阅读下面的程序,写出结果。然后运行该程序,检查你的结果。#includeiostreamusingnamespacestd;inti=11,j=22;longf1(intn){staticlongres=1;couti++j++endl;res=res*n;returnres;}longf2(intn){staticlongres=1;couti++j++endl;res=res*n;returnres;}intmain(){inti=2,j=5;coutf1(i)endl;coutf2(j)endl;coutijendl;i++;coutf1(i)endl;i++;coutf1(i)endl;coutijendl;}(45)用递归的方法将一数字字符串转化为一整形值。12月15日(46)编写一递归函数,intgcd(intm,intn),返回m,n的最大公约数。(47)编写一递归函数,返回一整形数组中的的最大数。(48)编写一递归函数,返回一整形数中各位数之和(如234,返回2+3+4=9)。(49)编写一递归函数,统计字符串中指定字符的出现次数。12月17日(50)定义用三种方法求三角形面积的重载函数(已知三顶点坐标;已知底和高;已知两边和它们的夹角。)(51)用指针和引用两种方法来实现两个变量数据的交换[voidswap(int&,int&);voidswap(int*,int*)](52)验证三角形三边的中垂线交与一点,且交点是三角形外接圆的圆心。12月20日(53)定义一字符数组,分别用数组首地址和指针的方法实现查找字符串中是否存在所指定的字符。(54)定义inta[3][4],使用地址的方法,找出数组中每行最大值,并输出数组的值。(55)用指针的方法,实现二字符串的连接。(56)用指针的方法,实现数组的选择法排序。12月24日(57)使用指针完成下列任务,读入10个数据,输出其中不同的数。(即只输出其中不同的数)。(58)将下列同学的姓名升序排序。(“zhangyi”,“wangfei”,“liushan”,“zhaoxiang”)。(59)用动态分配内存的方法,实现任意大小矩阵的转置。12月27日(60)一旦创建一个数组,其大小就固定了。当我们向数组中输入更多的数据时,由于数组已满,我们必须创建一个更大的新的数组来代替当前的数组。编写一个函数,函数头如下:int*doublesize(int*list,intsize);函数返回一个新数组,大小是list的两倍。(61)编写一个函数,检查字符串s1是否是字符串s2的子字符串,若是,返回第一次匹配的下标,否则返回-1。(62)编写一个函数,判断两个单词是否为字母易位次。如“silent”和“listen”就是易位词。《C++习题集》参考答案(3)#includeiostreamusingnamespacestd;intmain(){inti,count=0;for(i=100;i=1000;i++){if(i%3==0||i%10==3){couti;if(count%10==9)coutendl;count++;}}return0;}(4)#includeiostreamusingnamespacestd;intmain(){inti=1,sum=0;while(sum=5000){sum+=i;i++;}couti-2endl;return0;}(5)#includeiostreamusingnamespacestd;intmain(){inti,n;cinn;for(i=1;i=n;i++){if(n%i==0)coutiendl;}return0;}(6)#includeiostreamusingnamespacestd;intmain(){inti,j,sum;for(i=1;i=1000;i++){for(j=1,sum=0;ji;j++)if(i%j==0)sum=sum+j;if(sum==i)coutiendl;}return0;}(7)#includeiostreamusingnamespacestd;intmain(){inti,bit0,bit1,bit2;for(i=100;i=999;i++){bit0=i%10;bit1=i/10%10;bit2=i/100;if(bit0*bit0*bit0+bit1*bit1*bit1+bit2*bit2*bit2==i)coutiendl;}return0;}(8)#includeiostreamusingnamespacestd;intmain(){doublepi=0,t;intn=1,s=1;while((t=1.0/n)0.000001){pi+=s*t;n=n+2;s=-s;}cout4*piendl;return0;}(9)#includeiostreamusingnamespacestd;intmain(){doublex,max=-1,min=101;inti;for(i=1;i=10;i++){cinx;if(xmax)max=x;if(xmin)min=x;}coutmax=maxmin=minendl;return0;}(10)#includeiostreamusingnamespacestd;intmain(){intnumber,reverse_number=0;cinnumber;while(number0){reverse_number=reverse_number*10+number%10;number/=10;}coutreverse_numberendl;return0;}(11)#includeiostreamusingnamespacestd;intmain(){intnumber,i;cinnumber;for(i=2;i=number;i++){if(number%i==0){coutiendl;number/=i;i=1;}}return0;}(22)#includeiostreamusingnamespacestd;intmain(){inta[14]={0,1,0,2,2,3,4,5,6,7,1,2,3,4};intb[14]={0,2,9,9,1,3,4,5,6,7,1,2,3,6};boolflag=false;intc[14]={0};for(inti=13;i=0;i--){c[i]=a[i]+b[i];if(flag==true)c[i]++;if(c[i]=10){c[i]-=10;flag=true;}else{flag=false;