C++题集(含答案).doc

上传人:w****2 文档编号:6531420 上传时间:2020-02-28 格式:DOC 页数:29 大小:116.50KB
返回 下载 相关 举报
C++题集(含答案).doc_第1页
第1页 / 共29页
C++题集(含答案).doc_第2页
第2页 / 共29页
C++题集(含答案).doc_第3页
第3页 / 共29页
点击查看更多>>
资源描述
1. 利用异或运算对输入的文本进行加密解密输出,用户输入一个文本(字符串,设不超过20个字符),然后输入作为密钥的字符,程序输入加密及解密的字符串。2. 编写一个程序,用户输入年份及月份两个数据,程序输出该月份的天数。(提示:对2月要考虑是否闰年,闰年年份要么能被4整除且不能被100整除,要么能被400整除,除次之外都不是闰年)。3. 某大桥按不同型号征收车辆过桥费:自行车免费,摩托车2元,小汽车5元,大客车与货车8元,货柜车12元。编写一个程序,按车辆的不同型号计算通过该大桥应征的过桥费。(提示:可以用整数对不同型号的车辆进行编码)4. 输入一位同学的考试成绩,若是90100分,输出“Excellent”,8089输出“Very good”,7079输出“Good”,6069输出“Pass”,60分以下输出“No Pass”。5. 旅行社的订票量小于10张时,航空公司给予10%的折扣;订票量大于或等于10张且小于20张时,航空公司给予15%的折扣;订票量大于或等于20张且小于30张时,航空公司给予30%的折扣;订票量大于或等于30张时,航空公司给予最高的45%的折扣。编程输入订票张数及单张机票票价,程序输出折扣率及应付款额。6. 用户输入一个整数流(输入1000表示数据输入结束),如4 1 13 0 6 -5 1 -1 7 -12 19 0 100 编写程序统计输入流中-1、0和+1的个数。7. 编写一个程序,求一个自然数中含有多少个2的因子。如,6含1个2的因子,8含3个2的因子,11不含2的因子。(提示,程序应检查用户输入的合法性)。8. 编写一个程序解决爱因斯坦台阶问题:有人走以台阶,若以每步走2级则最后剩1级;若每步走3级则最后剩2级;若以每步走4级则最后剩3级;若以每步走5级则最后剩4级;若以每步走6级则最后剩5级;若以每步走7级则最后刚好不剩。问台阶共有几级?9. 公鸡5元1只,母鸡3元1只,小鸡1元3只,花了100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?10. 编程实现解决下述问题的算法:一位顾客在购物时,如果买4个苹果剩下4角钱如果买5个苹果则缺5角钱,请问,该顾客带了多少钱?多少钱可以头一个苹果?11. 编写程序计算100之内可以被13整除的自然数之和。12. 键盘输入m和n(10mn32000),求出mn间所有素数且按每行8个数形式输出。13. 编写程序打印乘法口诀表。14. 编程实现求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们的最大公约数。算法如下:步骤1:如果p q,则交换p和q。步骤2:令r是p / q 的余数。步骤3:如果r = 0,则令g = q并终止;否则令p = q, q = r并转向步骤2 15. 求不超过正整数n的2的最大幂值,如输入17,程序应输出4(24=1617)。16. 有关专家十分关注珠江渔业资源的问题。目前珠江中大约有8000万条鱼,平均每年以3.5%的速度减少。请编写一个程序,计算在多少年之后鱼的数目下降到目前的一半?多少年后下降到目前的十分之一?(提示注意整数类型的取值范围)。17. 编程求解一元二次方程ax2+bx+c=0的根。要求:设计完备的测试数据集,考虑a, b, c各种取值对根的影响。18. 编写一个程序,输入全班同学某门课考试成绩,计算平均成绩并找出其中最高分与最低分。(提示:批量数据通常不事先规定输入的数据数量,而是以一个特殊的标志作为输入结束。程序根据结束标志统计人数)19. 编一程序模拟整数加、减、乘、除四则运算。当你在键盘上输入5+6后,程序将输出=11,当你在键盘上输入11*7后,程序将输出=77。20. 把一张1元钞票换成1分、2分和5分的硬币,每种至少有1枚,问有多少种换法?21. 求自然对数底(e)的近似值。e的近似值计算公式为:当余项rn时停止计算。设=1e-822. !23. 24. Y=X(-1)n+1的值,精确到10-6。25. 编制一个程序,读入一个正整数,并反向输出。例如,读入123,输出是321。26. 水仙花数问题:水仙花数是一种三位数,它的值等于每个数字的立方和。例如,153=13+53+33。编程输出小于999的水仙花数。27. 求一整数的等差数列,该数列满足下述条件:头4项数的和值为26,积值为880。(提示:该数列公差为正整数,否则数列将出现负数;该数列的首项必须小于5,且其公差也小于5,否则头四项数的和将大于26。)28. 完数问题:若有一数,其值等于它的因子之和,则该数称为完数。例如,6的因子为1、2、3,而6=1+2+3,故6是完数。编程输出1000之内的所有完数及其因子。29. 100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马2匹驮1担。试编程计算大、中、小马的数目。30. 编程产生出1到10以内的所有数对并输出,其中ij。31. 编程求出1000以内的所有符合如下条件的数:其高位数字小于低位数字。如12,238等。但21,548不符合条件。32. 求任一整数N的标准分解式,即素数因子之积。例如16=2*2*2*2, 15=3*5。33. 斐波那契(Fibonacci)数列问题:Fibonacci数列递归定义为:x0=0,x1=1,xi+1=xi+xi-1, i=2,3,即从第二项开始,数列中的每一个元素等于前面两个元素之和。编程输出前20项Fibonacci数。(提示可以用递归或迭代两种方式编程)34. 正读和反读都一样的数称为回文数。编写程序输入一个整数max_num,输出从0到max_num中用二进制表示和十进制表示都是回文数的整数。定义一个函数is_circle_num()判断一个数(number)在某个进制(radius)下是否为回文数。例如,整数313就是该程序输出的一个数,因为它的二进制表示为10011001。35. 编写一个递归函数:将一个整数转换为响应的字符串并输出,函数原型可声明为:void int2str(int number)。36. 用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。例如,输入”A2”转换为162。37. 编写一个将十进制整数转换为十六进制字符串的函数。38. 编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续的非素数组。39. 编制一个程序,统计从标准输入设备上输入的字符流(以?结束)中每个英文字母(大小写不分开计)出现的次数。40. 编程实现“冒泡排序算法”,将输入的若干整数由小到大(升序)排序输出。要求定义一个排序函数,其原型是void bubble(int data, int length)。41. 给定含有m+n个元素的整型数组A(其中m0, n0),它分为两个互不重叠的,长度分别为m和n的子数组段,写出交换这两个子数组段的程序,要求不引入数组A以外的数组,但可引入若干中间变量。42. 用数组存储数据,实现筛选法求素数问题的求解。要求求出2到1000之间的所有素数。筛选法求出2N间的所有素数的方法是:首先将这些数全部放入一个数组中,然后重复下面的操作直到数组为空为止: a.找出其中的最小数K,则K一定是一个素数,因此可输出。 b.从数组中删除K及其所有倍数。43. 编程实现二分查找算法。二分(折半)查找(搜索)算法如下:数组 a 中的 n 个数从大到小(降序)的顺序排列,要检索一个数 x 是否在 a 中,折半查找算法的思路是: 设查找区间为lower, upper,初值lower=0, upper=n-1; 算法步骤: (1)输入数组 a 的元素及 x; (2)x 是否为 a 的第一或最后一个元素。若是其中之一,算法结束; (3)将区间两等分为lower, mid和mid, upper,mid为区间中点,每次取出中间项进行检查,若 x=amid,x 被检索到,算法结束;若 xamid,则在前半区间 lower, mid 内重复折半检索。反复执行上述步骤,使 lower 和 upper相等或相差 1(表示未检索到 x),或 amid=x。44. 编程实现查找矩阵中最大元素的位置。要求输入一个矩阵中所有元素,输出该矩阵,并输出矩阵中最大数所在的行、列号及该元素的值。45. 编写程序找出二维整形数组中所有这样的元素及其位置:它在所在的行上是最大的,在所在的列上也是最大的。设数组中的元素各不相同。(提示:先在第i行中寻找此行最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出结果。可以引入标志变量表示找到这个元素。)46. 编程产生下列数组,并输出。1 2 3 4 5 6 2 3 4 5 6 0 3 4 5 6 0 1 4 5 6 0 1 2 5 6 0 1 2 3 6 0 1 2 3 4 47. 编程产生下列数组,并输出1 2 3 4 5 6 2 1 2 3 4 5 3 2 1 2 3 4 4 3 2 1 2 3 5 4 3 2 1 2 6 5 4 3 2 148. 编程产生下列数组,并输出。 1 2 3 .n-1 0 2 3 4 . 0 1 3 4 5 . 1 2 . n-1 0 1 .n-3 n-2 0 1 2 .n-2 n-149. 打印下面图形。 1 1 3 1 1 3 5 3 1 1 3 5 7 5 3 1 1 3 5 7 9 7 5 3 1 1 3 21 3 150. 打印如下图形A B C D EB C D E AC D E A BD E A B CE A B C D1./加密字符串#includevoid main() char a21,b,key; coutab; for(int i=0;ai!=0;i+) ai=aib; cout加密后:; for(int k=0;ak!=0;k+) coutak; coutendlkey; for(int j=0;aj!=0;j+) aj=ajkey; for(int g=0;ag!=0;g+) coutag; coutendl; 2.#includemain() int year,month,days; coutyearmonth; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) days=31; coutyear年month月有days天n; elseif(month=4|month=6|month=9|month=11) days=30; coutyear年month月有days天n; else if(year%4=0&year%100!=0)|year%400=0) days=29; coutyear年month月有days天n; else days=28; coutyear年month月有days天n; return0;3./收过桥费#includemain()intkind; cout1.自行车n; cout2.摩托车n; cout3.小汽车n; cout4.大货车或客车n; cout5.货柜车n; coutkind; switch(kind) case 1: coutthe fee is:0 yuanonce.endl;break; case 2: coutthe fee is:2 yuanonce.endl;break; case 3: coutthe fee is:5 yuan once.endl;break; case 4: coutthe fee is:8 yuanonce.endl;break; case 5: coutthe fee is:12 yuanonce.endl;break; default:coutError!endl; 4.#includemain() int marks; coutmarks; switch(marks/10) case 10:case 9: coutExcellentn;break; case 8: coutVeryGoodn;break; case 7: coutGoodn;break; case 6: coutPassn;break; default : coutNoPassn; return0;5./旅行社折扣#includemain() int num,price; float discount,total_price; coutnumprice; switch(num/10) case 0: discount=0.1;break; case 1: discount=0.15;break; default: discount=0.3; total_price=num*price*(1-discount);cout总价格为:total_priceendl;return0;6./输入数流#includemain() int a100,i,j,x=0,y=0,z=0; coutai; if(ai=1000) break; for(j=0;aj!=1000;j+) if(aj=-1) x+; if(aj=0) y+; if(aj=1) z+; cout该数流中含-1:x项n; cout该数流中含0:y项n; cout该数流中含1:z项n;return0; 7./求2因子#includemain() int x,i,n; coutx; if(x0) cout输入有误!请重新输入:; goto l; n=x; for(i=0;n%2=0;i+) n/=2; cout整数x含有i个2因子endl;return0;8.#includemain() int i,n; for(i=7;!(i%2=1&i%3=2&i%4=3&i%5=4&i%6=5);i+=7) n=i; cout最小可能值是:n+7endl;return0;9./百元买百鸡#includemain() int cock,hen,chicken,price; for(cock=0;cock=20;cock+) for(hen=0;hen=33;hen+) chicken=100-cock-hen; if(chicken%3=0&5*cock+3*hen+chicken/3=100) cout符合条件的有公鸡cock母鸡hen小鸡chickenendl; return0;10.#includemain() int money,i,m,n; for(i=1;i+) if(4+4*i=5*i-5) coutmoney=4+4*iprice=iendl; break; else continue; return0;11.#includemain() int n,i,j,s=0; for(i=1;i=100;i+) if(i%13=0) s+=i; else continue; cout100以内可以被13整除的自然数之和为:sendl;return0;12./求m到n的素数#include#includeintf(int n) int a,x,i,b; x=sqrt(n); if(n=2|n=3) b=1; else for(i=2;i=x;i+) if(n%i=0) b=0; break; else if(i=x) b=1; else continue; return b;main() int m,n,x,i,j; static int k=0;l: cout输入m,n (其中10mmn; if(m=n|n32000) cout输入数据有误!请再; goto l; for(i=m;i=n;i+) if(f(i) couti; k+; if(k%8=0)coutendl; coutendl;return0;13./打印乘法口诀表#includemain() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+)couti*j=i*j ; coutendl; return0;14./求最大公约数#includemain() int m,n,temp; coutmn; temp=mn?m:n; m=mn?n:m; n=temp; for(;) temp=m%n; if(temp) m=n; n=temp; else cout最大公约数是:nendl; break; return0;15./求不超过正整数n的2的最大幂值#include#includemain() int n,i; coutn; for(i=0;pow(2,i)=n;i+) cout满足条件的值为:i-1endl;return0;16.#include#includevoid main() const double fishnum=800000000; double fnum=fishnum; int n=1; while(fnum=fishnum/2) fnum=fnum*(1-0.035); n+; cout当鱼的数目等于原来的一半时,需要n=fishnum/10) fnum=fnum*(1-0.035); n+; cout当鱼的数目等于原来的十分之一时,需要n年n; 17./二次方程求解#include#includemain() float a,b,c; coutabc; float t=b*b-4*a*c; if(a=0)if(b=0)if(c=0)cout方程根为一切实数endl; else cout方程无根endl; else cout根是:-c/b0) cout根x1=(-b+sqrt(b)/(-2*a)endl根x2=(-b-sqrt(b)/(-2*a)endl; else if(t=0) cout根x1=x2=(-b+sqrt(b)/(-2*a)endl; else cout根x1=(-b)/(-2*a)+(sqrt(-t)/(-2*a)iendl根x2=(-b)/(-2*a)-(sqrt(-t)/(-2*a)iendl;return0;18./班级分数#includemain() int a100,i,j,max,min,s=0; coutai; if(ai=1000) break; if(i=0) max=a0; min=a0; max=maxai?max:ai; min=minai?min:ai; s+=ai; cout该班同学成绩中最高分为:maxn最低分为minn平均分为s/in;return0;19./模拟四则运算#includemain() int a,b; char x; cout请输入算式:axb; if(x=+)cout=a+bendl; else if(x=-)cout=a-bendl; else if(x=*)cout=a*bendl; else if(x=/)cout=(float)a/bendl; elsecouterror!endl; return0;20./兑钱#includemain() int i,j,k,m=0; for(i=1;i=20;i+) for(j=1;j=1) m+=1; /couti=i j=j k=kendl;输出结果 cout共有m种结果n;return0;21./求e#include#includemain() int i; double temp=1,sum=0; for(i=1;temp=1e-8;i+) sum+=temp; temp/=i; coute=1+1/1!+1/2!+1/3!+.=setprecision(9)sumendl;22./求1!+2!+7!#includeintf(int x) int r; if(x=0) r=1; else r=x*f(x-1); return r;main() int i,s=0; for(i=1;i=7;i+) s+=f(i); cout结果是:sendl;return0;23./求#includemain() int i,s=0; for(i=1;i=39;i+=2) s+=i*(i+1); cout结果是:sendl;return0;24./求值,精确到10e-6#include#includemain() int i,x; coutx; double temp=x,s=0; for(i=1;fabs(temp)=1e-6;i+=2) s+=temp; temp=temp*(-x*x)/(float)(i+1)*(i+2); cout结果是:sendl;return0;25./反向输出#include#includemain() int x,i,j; coutx; for(i=0;i+) if(x/(int)pow(10,i)=0)break; int a100; for(j=0;ji;j+) aj=(x%(int)pow(10,j+1)/(int)pow(10,j); cout反向输出为:; for(int b=0;bi;b+)coutab; coutendl;return0;26./水仙花数#includemain() int i,a,b,c; for(i=100;i=999;i+) a=i/100; b=(i-100*a)/10; c=i-100*a-10*b; if(i=a*a*a+b*b*b+c*c*c)coutiendl; return0;27./等差数列#includemain() int k=1,d,a1,a2,a3,a4; bool b=false; for(k=1;k+) for(d=0;dk;d+) a1=k-d; a2=2*k-d; a3=3*k-d; a4=4*k-d; if(a1+a2+a3+a4=26&a1*a2*a3*a4=880) cout该数列通项为:an=kn-dendl; b=true; break; if(b) break; 28./完数问题#includeintmain() int i,s,j; for(i=1;i=1000;i+) s=1; for(j=2;j=(i/2);j+) if(i%j)=0) s=s+j; if(i=s)coutin; return 0;29.(略)/马驮货30./输出数对#includemain() int i,j; for(i=1;i10;i+) for(j=1;jj)couti,jendl; return0;31./输出数#includemain() int i,j,k; for(i=10;i1000;i+) if(i/100=0&i/10i%10)|(i/1000=0&i/100(i/10)%10&(i/10)%10i%10)coutiendl; return0;32./标注分解N#includemain() int N,n,i; coutN; n=N; coutN=; for(i=2;i=n/2;) if(n%i=0) couti*; n/=i; else i+; coutnendl;return0;33./斐波那契(Fibonacci)数列问题#includeintx(int i) int r; if(i=0|i=1) r=1; else r=x(i-1)+x(i-2); return r;main() int n,r,m=0; for(n=0;n20;n+) r=x(n); coutr; m+; if(m%5=0) coutendl; return0;34./打印图形#include#includemain() int i,j,k,l; for(i=1;i=11;i+) for(j=1;j=4*(11-i);j+)cout ; for(k=1;k2*i-1;k+=2)coutsetw(4)=1;l-=2)coutsetw(4)l; coutendl; return0;35./输出字符组#includemain() char a6=ABCDE,i,j,x; for(i=0;i=4;i+) for(j=i;j=4;j+)coutaj ; for(x=0;xi;x+)coutax ; coutendl; return0;36.#include #include static int is_circle_num ( int number , int radius );int main() intnum,max_num; coutmax_num; for (num = 0 ; num max_num ; num=num+1 ) if( is_circle_num(num,10)=1 & is_circle_num(num,2)=1 ) cout setw(6) num ; cout=right_power) right_num=(number%right_power)/(right_power/radius); left_num=(number/left_power)%radius; if(left_num!=right_num) return 0 ; right_power=right_power*radius; left_power=left_power/radius; return 1; 37.#include void int2str ( int number ) int a ; if (number= 0 ) return ; a=number- (number/10)*10 ; / 或 a=number%10 int2str( number / 10 ) ; cout char(a+48) ;void main () int num; cout num ; if(num0) num=-num; cout-; int2str( num ) ; cout10#include #include #include using namespace std;bool rightFormat(string);int convert(string);int change2num(char);int main() string hex; cout输入一个十六进制数,字母用大写:hex; if(!rightFormat(hex) cout不是正确的十六进制数!请重新输入:; goto l; cout结果是:convert(hex)endl; bool rightFormat(string s) bool b = true; for(string:size_type i=0;is.size(); i+) if(si9 & siF) b = false; break; return b; int convert(string s) int dec = 0; for(string:size_type i=0;is.size(); i+) dec = dec +change2num(si)*pow(16.0,(int)(s.size()-1-i); return dec; int change2num(char c) switch(c) case 1: return 1; case 2: return 2; case 3: return 3; case 4: return 4; case 5: return 5; case 6: return 6; case 7: return 7; case 8: return 8; case 9: re
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!