C++编程练习题及答案.docx
- 文档编号:28657061
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:39
- 大小:25.66KB
C++编程练习题及答案.docx
《C++编程练习题及答案.docx》由会员分享,可在线阅读,更多相关《C++编程练习题及答案.docx(39页珍藏版)》请在冰豆网上搜索。
C++编程练习题及答案
一、简单问题:
1.编程求下列式子的值,
y=1-1/2+1/3-1/4+…+1/99-1/100
并将结果输出,格式为:
1-1/2+1/3-1/4+…+1/99-1/100=表达式的值
publicclassPorg{
publicstaticvoidmain(String[]args){
doublesum=0;
for(doublei=1;i<=100;i++)
{
sum=sum+Math.pow(-1,i-1)*(1/i);
}
System.out.print("1-1/2+1/3-1/4+…+1/99-1/100="+sum);
}
}
2.请编程实现:
由键盘输入的任意一组字符,统计其中大写字母的个数m和小写字母的个数n,并输出m、n中的较大者。
importjava.util.Scanner;
publicclassProg2{
publicstaticvoidmain(String[]args){
intm=0,n=0;
Scannercin=newScanner(System.in);
Stringstr=cin.nextLine();
for(inti=0;i { if(str.charAt(i)>'A'&&str.charAt(i)<='Z') m++; else n++; } if(m>n) { System.out.println(m); } else System.out.println(n); } } 3.编程,求全部水仙花数。 所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。 如: 153=13+53+33。 publicclassProg3{ publicstaticvoidmain(String[]args){ inta,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=0;c<=9;c++) { if(a*100+b*10+c==a*a*a+b*b*b+c*c*c) System.out.println(a*100+b*10+c); } } } } 4.请编制程序判断输入的正整数是否既是5又是7的整倍数。 若是,则输出yes;否则输出no。 importjava.util.Scanner; publicclassProg4{ publicstaticvoidmain(String[]args){ Scannercin=newScanner(System.in); inti=cin.nextInt(); if(i%5==0&&i%7==0) System.out.print("yes"); else System.out.print("no"); } } 5.请编程实现: 对于给定的一个百分制成绩,输出相应的五分制成绩。 设: 90分以上为‘A’,80—89分为‘B’,70—79分为‘C’,60—69分为‘D’,60分以下为‘E’。 importjava.util.Scanner; publicclassProg5{ publicstaticvoidmain(String[]args){ Scannercin=newScanner(System.in); intm=cin.nextInt(); if(m>=60&&m<=69) System.out.print("D"); else if(m>=70&&m<=79) System.out.print("C"); else if(m>=80&&m<=89) System.out.print("B"); else if(m>=90) System.out.print("A"); else System.out.print("E"); } } 6.输入一行字符,将其中的字母变成其后续的第3个字母,输出。 例: a→d,x→a;y→b;编程实现。 importjava.util.Scanner; publicclassProg6{ publicstaticvoidmain(String[]args){ char[]zimu=newchar[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c'}; Scannercin=newScanner(System.in); Stringstr=cin.nextLine(); for(intj=0;j { for(inti=0;i<29;i++) { if(str.charAt(j)==zimu[i]) { System.out.println(zimu[i+3]); break; } } } 7.编写程序,输入任意一个1~7之间的整数,将他们转换成对应的英文单词.例如: 1转换成Monday,7转换成Sunday. importjava.util.Scanner; publicclassProg7{ publicstaticvoidmain(String[]args){ System.out.print("请输入任意一个1~7之间的整数\n"); Scannercin=newScanner(System.in); intm=cin.nextInt(); if(m==1) System.out.print("Monday"); else if(m==2) System.out.print("Tuesday"); else if(m==3) System.out.print("Wensday"); else if(m==4) System.out.print("Thuesday"); else if(m==5) System.out.print("Friday"); else if(m==6) System.out.print("Saturday"); else System.out.print("Sunday"); } } 8.输入三角形的三边a,b,c,判断能否构成三角形.若能,计算面积. importjava.util.Scanner; publicclassProg8{ publicstaticvoidmain(String[]args){ System.out.print("请输入三个整数\n"); Scannercin=newScanner(System.in); inta=cin.nextInt(); intb=cin.nextInt(); intc=cin.nextInt(); if(a+b { System.out.print("不能构成三角形\n"); } else { intl=a+b+c; System.out.print(l); } } } 9.编程序,输入a,b,c,求方程ax2+bx+c=0的解。 importjava.util.Scanner; publicclassProg9{ publicstaticvoidmain(String[]args){ System.out.print("请输入三个整数\n"); Scannercin=newScanner(System.in); inta=cin.nextInt(); intb=cin.nextInt(); intc=cin.nextInt(); if(a==0) { System.out.println(-c/b); } elseif(b*b-4*a*c>=0) { doublex1=(-b+Math.pow(1/2,b*b-4*a*c))/(2*a); doublex2=(-b-Math.pow(1/2,b*b-4*a*c))/(2*a); System.out.println(x1); System.out.print(x2); } elseSystem.out.print("无解"); } } 10.计算出前20项fibonacci数列,要求一行打印5个数. 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。 如果所有兔都不死,那么一年以后可以繁殖多少对兔子? 我们不妨拿新出生的一对小兔子分析一下: 第一个月小兔子没有繁殖能力,所以还是一对; 两个月后,生下一对小兔总数共有两对; 三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对; …… 依次类推可以列出下表: 经过月数 0 1 2 3 4 5 6 7 8 9 10 11 12 幼仔对数 0 1 1 2 3 5 8 13 21 34 55 89 144 成兔对数 1 1 2 3 5 8 13 21 34 55 89 144 233 总体对数 1 2 3 5 8 13 21 34 55 89 144 233 377 importjava.util.Scanner; publicclassProg10{ publicstaticvoidmain(String[]args){ Scannercin=newScanner(System.in); intn=cin.nextInt(); inta=0,b=1,c=1; if(n==1){System.out.println(a); System.out.println(b); System.out.println(c);} else { for(inti=2;i<=n;i++) { a=b; b=c; c=a+b; } System.out.println("幼崽数"+a+"成年兔子书"+b+"总数"+c); } } } 11.输出100~10000之间个位数为3的所有素数。 publicclassProg11{ publicstaticvoidmain(String[]args){ for(inti=103;i<10000;i=i+10) { booleanflag=true; for(intj=2;j { if(i%j==0) {flag=false;break;} } if(flag==true){System.out.println(i);} } } } 12.百钱买百鸡问题: 公鸡每只5元,母鸡每只3元,小鸡3只一元,问一百元买一百只鸡有几种买法. publicclassProg12{ publicstaticvoidmain(String[]args){ intm=0; for(inta=0;a<100;a++) { for(intb=0;b<100;b++) { for(intc=0;c<100;c++) if(5*a+3*b+1/3*c==100&&a+b+c==100) m++; } } System.out.print("一百元买一百只鸡有"+m+"种买法"); } } 13.请编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。 importjava.util.Scanner; publicclassProg13{ publicstaticvoidmain(String[]args){ System.out.print("请输入两个整数\n"); Scannercin=newScanner(System.in); inta=cin.nextInt(); intb=cin.nextInt(); if(a*a+b*b>100) { System.out.print(a*a+b*b); } else System.out.print(a+b); } } 14.编程实现: 对键盘输入的任意一个四位正整数,计算各位数字平方和。 如: 2345,则: 计算22+32+42+52 importjava.util.Scanner; publicclassProg14{ publicstaticvoidmain(String[]args){ System.out.print("请输入任意一个四位正整数\n"); intsum=0; Scannercin=newScanner(System.in); inta=cin.nextInt(); sum=(a/1000*a/1000)+((a/100)%10*(a/100)%10)+((a/10%100%10)*(a/10%100%10))+((a%10)*(a%10)); System.out.print(sum); } } 15.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完,请编程. publicclassProg15{ publicstaticvoidmain(String[]args){ intm=0,sum=1020; do{ sum=sum/2-2; m++; }while(sum>=0); System.out.print(m+"天以后能卖完"); } } 16.编程,输出200以内所有完全平方数C(满足C2=A2+B2)及其个数. publicclassProg16{ publicstaticvoidmain(String[]args){ intm=0; for(intC=1;C<200;C++) { for(intA=1;A<=200;A++) { for(intB=1;B<=200;B++) { if(A*A+B*B==C*C) {System.out.println(C); A=201; B=201; m++;} } } } System.out.println("个数为: "+m); } } 17.设N是一个四位数,它的9倍恰好是其反序数(例如: 123的反序数是321),编程,输出所有满足条件的N。 packageeasy; publicclassThe17{ staticlongs,M; publicstaticvoidmain(String[]args){ for(longN=1009;N<=1109;N=N+10){ M=9*N; s=0; while(M>0){ s=s*10+M%10; M=M/10; } if(N==s) System.out.println(s); } } } 18.编程,输出555555的约数中最大的三位数。 packageeasy; publicclassThe18th{ publicstaticvoidmain(String[]args){ doublea=555555; longb=0; //long[]yueShu=newlong[555555]; for(longi=1;i<=555555;i++){ if(a%i==0&&i>99&&i<1000){ while(i>b){ b=i; } } } System.out.println(b); } } 19.编程,输出所有个位数为6且能被31整除的五位数及其个数。 packageeasy; publicclassThe19th{ publicstaticvoidmain(String[]args){ for(longi=10006;i<=99996;i=i+10){ if(i%31==0){ System.out.println(i); } } } } 20.编写程序,输入两个整数,和+、-、*、/、%之中的任意一个运算符,输出计算结果. packageeasy; //importjava.util.InputMismatchException; importjava.util.Scanner; publicclassThe20th{ staticScannercin=newScanner(System.in); publicstaticvoidmain(String[]args){ Scannercin1=newScanner(System.in); intd1,d2; Stringstr=newString(""); d1=cin.nextInt(); d2=cin.nextInt(); //System.out.println(d1); //System.out.println(d2); str=cin1.nextLine(); //System.out.println(str); //System.out.println(str.charAt(0)); switch(str.charAt(0)){ case'+': { System.out.println(d1+d2); break; } case'-': { System.out.println(d1-d2); break; } case'*': { System.out.println(d1*d2); break; } case'/': { System.out.println(d1/d2); break; } } } /*staticintadd(inta,intb){ returna+b; } staticintsub(inta,intb){ returna-b; } staticintmultiply(inta,intb){ returna*b; } staticintdivide(inta,intb){ return(int)(a/b); }*/ } 21.计算: 1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…+n),n由键盘输入。 packageeasy; importjava.util.Scanner; publicclassThe21th{ publicstaticvoidmain(String[]args){ doublesum=0,div=0; Scannercin=newScanner(System.in); intn=cin.nextInt(); for(inti=1;i<=n;i++){ div=div+i; System.out.println("1/"+div); sum=sum+1/div; } System.out.println(sum); } } 22.编程计算: 1*2*3+3*4*5+…+99*100*101的值. packageeasy; publicclassThe22th{ publicstaticvoidmain(String[]args){ longsum=0; for(inti=1;i+2<=101;i=i+2){ sum=sum+i*(i+1)*(i+2); } System.out.println(sum); } } 二、比较简单问题: 1.编一个函数GCD,求两个无符号整数的最大公约数。 主函数输入两个正整数m和n,调用GCD,求出m和n的最大公约数和最小公倍数.并输出。 packagemoreEasy; importjava.util.Scanner; publicclassThe1th{ publicstaticvoidmain(String[]args){ Scannercin=newScanner(System.in); intm=cin.nextInt(); intn=cin.nextInt(); System.out.println(m+"和"+n+"的最大公约数为: "+GCD(m,n)); System.out.println(m+"和"+n+"的最小公倍数为: "+m*n/GCD(m,n)); } publicstaticintGCD(inta,intb){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编程 练习题 答案