C++编程练习题及答案

C++编程练习题及答案
C++编程练习题及答案

一、简单问题:

5. 编程计算:1!+2!+3!+…+20!,并将结果输出.输出格式:

1!+2!+3!+…+20!= 表达式的值

package moreEasy;

public class The5th {

public static void main(String[] args) {

long sum=0;

for(int i=1;i<=20;i++){

long r=1;

for(int j=1;j<=i;j++){

r*=j;

}

sum=sum+r;

//System.out.print(" r="+r);

if(i<20)

System.out.print(i+"!+");

else

System.out.print(i+"!="+sum);

}

}

}

1. 编程求下列式子的值,

y=1-1/2+1/3-1/4+…+1/99-1/100

并将结果输出,格式为: 1-1/2+1/3-1/4+…+1/99-1/100 = 表达式的值

public class Porg {

public static void main(String[] args) {

double sum=0;

for(double i=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中的较大者。

import java.util.Scanner;

public class Prog2 {

public static void main(String[] args) {

int m=0,n=0;

Scanner cin=new Scanner(System.in);

String str=cin.nextLine();

for(int i=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。

public class Prog3 {

public static void main(String[] args) {

int a,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。

import java.util.Scanner;

public class Prog4 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

int i=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’。

import java.util.Scanner;

public class Prog5 {

Scanner cin=new Scanner(System.in);

int m=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;编程实现。

import java.util.Scanner;

public class Prog6 {

public static void main(String[] args) {

char[] zimu=new

char[]{'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'};

Scanner cin=new Scanner(System.in);

String str=cin.nextLine();

for(int j=0;j

{

for(int i=0;i<29;i++)

{

if(str.charAt(j)==zimu[i])

{

System.out.println(zimu[i+3]);

break;

}

}

}

7. 编写程序,输入任意一个1~7之间的整数,将他们转换成对应的英文单词. 例如:1转换成Monday,

7转换成Sunday.

import java.util.Scanner;

public class Prog7 {

public static void main(String[] args) {

System.out.print("请输入任意一个1~7之间的整数\n");

Scanner cin=new Scanner(System.in);

int m=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,判断能否构成三角形. 若能,计算面积.

import java.util.Scanner;

public class Prog8 {

public static void main(String[] args) {

System.out.print("请输入三个整数\n");

Scanner cin=new Scanner(System.in);

int a=cin.nextInt();

int b=cin.nextInt();

int c=cin.nextInt();

if(a+b

{

System.out.print("不能构成三角形\n");

else

{

int l=a+b+c;

System.out.print(l);

}

}

}

9. 编程序,输入a,b,c,求方程ax2+bx+c=0 的解。

import java.util.Scanner;

public class Prog9 {

public static void main(String[] args) {

System.out.print("请输入三个整数\n");

Scanner cin=new Scanner(System.in);

int a=cin.nextInt();

int b=cin.nextInt();

int c=cin.nextInt();

if(a==0)

{

System.out.println(-c/b);

}

else if(b*b-4*a*c>=0)

{

double x1=(-b+Math.pow(1/2, b*b-4*a*c))/(2*a);

double x2=(-b-Math.pow(1/2, b*b-4*a*c))/(2*a);

System.out.println(x1);

System.out.print(x2);

}

else System.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 import java.util.Scanner;

public class Prog10 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

int n=cin.nextInt();

int a=0,b=1,c=1;

if(n==1){System.out.println(a );

System.out.println(b );

System.out.println(c );}

else

{

for(int i=2;i<=n;i++)

{

a=b;

b=c;

c=a+b;

}

System.out.println("幼崽数"+a+"成年兔子书"+ b+"总数"+ c);

}

}

}

11.输出100~10000之间个位数为3的所有素数。

public class Prog11 {

for(int i=103;i<10000;i=i+10)

{

boolean flag=true;

for(int j=2;j

{

if(i%j==0)

{flag=false;break;}

}

if(flag==true){System.out.println(i);}

}

}

}

12. 百钱买百鸡问题:公鸡每只5 元,母鸡每只3 元,小鸡3 只一元,问一百元买一百只鸡有几种买法.

public class Prog12 {

public static void main(String[] args) {

int m=0;

for(int a=0;a<100;a++)

{

for(int b=0;b<100;b++)

{

for(int c=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百位以上的数字,否则输出两数之和。

import java.util.Scanner;

public class Prog13 {

System.out.print("请输入两个整数\n");

Scanner cin=new Scanner(System.in);

int a=cin.nextInt();

int b=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

import java.util.Scanner;

public class Prog14 {

public static void main(String[] args) {

System.out.print("请输入任意一个四位正整数\n");

int sum=0;

Scanner cin=new Scanner(System.in);

int a=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个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完,请编程. public class Prog15 {

public static void main(String[] args) {

int m=0,sum=1020;

do{

sum=sum/2-2;

m++;

}while(sum>=0);

System.out.print(m+"天以后能卖完");

}

}

16. 编程,输出200以内所有完全平方数C(满足C2=A2+B2)及其个数. public class Prog16 {

public static void main(String[] args) {

int m=0;

for(int C=1;C<200;C++)

{

for(int A=1;A<=200;A++)

{

for(int B=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。

package easy;

public class The17 {

static long s,M;

public static void main(String[] args) {

for(long N=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的约数中最大的三位数。

package easy;

public class The18th {

public static void main(String[] args) {

double a=555555;

long b=0;

//long[] yueShu=new long[555555];

for(long i=1;i<=555555;i++){

if(a%i==0&&i>99&&i<1000){

while(i>b){

b=i;

}

}

}

System.out.println(b);

}

}

19. 编程,输出所有个位数为6且能被31整除的五位数及其个数。

package easy;

public class The19th {

public static void main(String[] args) {

for(long i=10006;i<=99996;i=i+10){

if(i%31==0){

System.out.println(i);

}

}

}

}

20. 编写程序,输入两个整数,和+、-、*、/ 、%之中的任意一个运算符,输出计算结果. package easy;

//import java.util.InputMismatchException; import java.util.Scanner;

public class The20th {

static Scanner cin=new Scanner(System.in);

public static void main(String[] args) {

Scanner cin1=new Scanner(System.in);

int d1,d2;

String str=new String("");

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;

}

}

}

/*static int add(int a,int b){

return a+b;

}

static int sub(int a,int b){

return a-b;

}

static int multiply(int a,int b){

return a*b;

static int divide(int a,int b){

return (int)(a/b);

}*/

}

21. 计算:1+1/(1+2)+1/(1+2+3)+…+ 1/(1+2+…+n), n由键盘输入。package easy;

import java.util.Scanner;

public class The21th {

public static void main(String[] args) {

double sum=0,div=0;

Scanner cin=new Scanner(System.in);

int n=cin.nextInt();

for(int i=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 的值.

package easy;

public class The22th {

public static void main(String[] args) {

long sum=0;

for(int i=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的最大公约数和最小公倍数.并输出。

package moreEasy;

import java.util.Scanner;

public class The1th {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

int m=cin.nextInt();

int n=cin.nextInt();

System.out.println(m+"和"+n+"的最大公约数为:"+GCD(m,n));

System.out.println(m+"和"+n+"的最小公倍数为:"+m*n/GCD(m,n));

}

public static int GCD(int a,int b){

int r=0;

for(int i=1;i<=a&&i<=b;i++){

if(a%i==0&&b%i==0&&r

r=i;

}

}

//System.out.println(r);

return r;

}

}

2. 请编程实现:建立一个4*4的二维整型数组,求对角线元素的和。package moreEasy;

import java.util.Scanner;

public class The2th {

public static void main(String[] args) {

int ewsz[][]=new int[4][4];

Scanner cin=new Scanner(System.in);

for(int i=0;i

for(int j=0;j

ewsz[i][j]=cin.nextInt();

}

}

/*for(int i=0;i

for(int j=0;j

System.out.print(ewsz[i][j]);

if(j==3){

System.out.println("");

}

}

}*/

int sum=0;

for(int i=0;i

sum=sum+ewsz[i][i];

}

System.out.println(sum);

}

}

3. 写一个判断素数的函数prime,在主函数中输入10个整数,调用prime,输出这10个整数中的素数的累加和。

package moreEasy;

import java.util.Scanner;

public class The3th {

public static void main(String[] args) {

int[] shu=new int[10];

int sum=0;

Scanner cin=new Scanner(System.in);

for(int i=0;i

shu[i]=cin.nextInt();

}

for(int i=0;i

if(prime(shu[i]))

sum=sum+shu[i];

}

System.out.println(sum);

}

public static boolean prime(int a){

//double b=Math.pow(a, 0.5);

for(int i=2;i

if(a%i==0||a==1){

return false;

}

}

return true;

}

}

4.从键盘上输入若干学生的一门课成绩,存入一个数组中,当输入负数时结束输入. 输出最高成绩和最低成绩及相应的序号。

package moreEasy;

import java.util.Scanner;

public class The4th {

public static void main(String[] args) {

int n,n1=0,max,min;

Scanner cin=new Scanner(System.in);

System.out.print("学生人数");

n=cin.nextInt();

int[] chengJi=new int[n];

相关主题