当前位置:文档之家› Java编程练习题

Java编程练习题

Java编程练习题
Java编程练习题

J a v a编程练习题

一、简单问题:

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 Prog1 {

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 Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

String Str =cin.nextLine();

int m=0,n=0;

for(int i=0;i

{

char c=Str.charAt(i);

if(c>='a'&&c<='z')

n++;

else if(c>='A'&&c<='Z')

m++;

}

if(n>m)

System.out.print(n);

else

System.out.print(m);

}

}

运行结果:

3. 编程,求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如:153 = 13 + 53+ 33。

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

int b=0,c=0,d=0;

for(int i=100;i<1000;i++)

{

d=i%10;

c=(i/10)%10;

b=(i/100)%10;

if(i==b*b*b+c*c*c+d*d*d)

{

System.out.println(i);

}

}

}

}

4. 请编制程序判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

System.out.println("请输入一个正整数:");

int a=cin.nextInt();

if(a%7==0&&a%5==0)

{

System.out.println("YES");

}

else

System.out.println("NO");

}

}

5. 请编程实现:对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80—89分为‘B’,70—79分为‘C’,60—69分为‘D’,60分以下为‘E’。

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

System.out.println("请输入成绩:");

int a=cin.nextInt();

if(a>=90)

{System.out.println("A");}

else if(a>=80)

{System.out.println("B");}

else if(a>=70)

{System.out.println("C");}

else if(a>=60)

{System.out.println("D");}

else

{System.out.println("E");}

}

}

6. 输入一行字符,将其中的字母变成其后续的第3个字母,输出。例:a→d,x →a;y →b;编程实现。

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

String str=cin.nextLine();

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

for(int i=0;i

{

char[] c1=new char[str.length()];

c1[i]=str.charAt(i);

for(int j=0;j<26;j++)

{

if(c1[i]==c[j])

{char zc=c[j+3];

System.out.print(zc);}

}

}

}

}

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

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

System.out.println("输入任意一个1~7之间的整数:");

int s=cin.nextInt();

switch(s)

{

case 1:{

System.out.print("Monday");

break;

}

case 2:{

System.out.print("Tuesday");

break;

}

case 3:{

System.out.print("Wednesday");

break;

}

case 4:{

System.out.print("Thursday");

break;

}

case 5:{

System.out.print("Friday");

break;

}

case 6:{

System.out.print("Saturday");

break;

}

case 7:{

System.out.print("Sunday");

break;

}

default :{

}

}

}

}

连续输出:

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) { Scanner cin=new Scanner(System.in );

while(true)

{System.out.println("输入任意一个1~7之间的整数:");

int s=cin.nextInt();

switch(s)

{

case 1:{

System.out.println("Monday");

break;

}

case 2:{

System.out.println("Tuesday");

break;

}

case 3:{

System.out.print("Wednesday");

break;

}

case 4:{

System.out.println("Thursday");

break;

}

case 5:{

System.out.println("Friday");

break;

}

case 6:{

System.out.println("Saturday");

break;

}

case 7:{

System.out.println("Sunday");

break;

}

default :{

}

}

}

}

}

8. 输入三角形的三边a, b, c,判断能否构成三角形. 若能,计算周长. import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

int a=cin.nextInt();

int b=cin.nextInt();

int c=cin.nextInt();

int l=0;

if(a+b>c&&a+c>b)

{l=a+b+c;

System.out.print(l);}

else

{

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

}

}

}

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

import java.util.Scanner;

public class Prog1{

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

System.out.println("请输入a,b,c的值:");

double a=cin.nextInt();

double b=cin.nextInt();

double c=cin.nextInt();

double t=0;

t=b*b-4*a*c;

double x1=0,x2=0;

int a1=(int)a;

int b1=(int)b;

int c1=(int)c;

System.out.println("方程"+a1+"*x*x+"+b1+"*x+"+c1+"=0的解:");

if(t<0)

System.out.println("无解");

else if(t>=0)

{

x1=(-b+Math.pow(t,0.5))/(2*a);

x2=(-b-Math.pow(t,0.5))/(2*a);

System.out.println("x1="+x1+" "+"x2="+x2);

}

}}

运行结果:

请输入a,b,c的值:

1

5

6

方程1*x*x+5*x+6=0的解:

x1=-2.0 x2=-3.0

10.计算出前20项fibonacci 数列, 要求一行打印5个数.

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?

我们不妨拿新出生的一对小兔子分析一下:

第一个月小兔子没有繁殖能力,所以还是一对;

数列输出:

public class Prog1{

public static void main(String[] args) { int a=0,b=1,c=1;

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

{

a=b;b=c;c=a+b;

System.out.println("经过"+i+"天,"+"幼仔对数:"+a+","+"成兔对数:"+b+","+"总体对数:"+c);

}

}

}

运行结果:

经过1天,幼仔对数:1,成兔对数:1,总体对数:2

经过2天,幼仔对数:1,成兔对数:2,总体对数:3

经过3天,幼仔对数:2,成兔对数:3,总体对数:5

经过4天,幼仔对数:3,成兔对数:5,总体对数:8

经过5天,幼仔对数:5,成兔对数:8,总体对数:13

经过6天,幼仔对数:8,成兔对数:13,总体对数:21

经过7天,幼仔对数:13,成兔对数:21,总体对数:34

经过8天,幼仔对数:21,成兔对数:34,总体对数:55

经过9天,幼仔对数:34,成兔对数:55,总体对数:89

经过10天,幼仔对数:55,成兔对数:89,总体对数:144

经过11天,幼仔对数:89,成兔对数:144,总体对数:233

经过12天,幼仔对数:144,成兔对数:233,总体对数:377

经过13天,幼仔对数:233,成兔对数:377,总体对数:610

经过14天,幼仔对数:377,成兔对数:610,总体对数:987

经过15天,幼仔对数:610,成兔对数:987,总体对数:1597

经过16天,幼仔对数:987,成兔对数:1597,总体对数:2584

经过17天,幼仔对数:1597,成兔对数:2584,总体对数:4181

经过18天,幼仔对数:2584,成兔对数:4181,总体对数:6765

经过19天,幼仔对数:4181,成兔对数:6765,总体对数:10946

经过20天,幼仔对数:6765,成兔对数:10946,总体对数:17711

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

public class Prog1 {

public static void main(String[] args) {

boolean flag=false;

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

{

for(int j=2;j

if(i%j!=0)

{

flag=true;

}

if(flag)

{

System.out.println(i);

}

}

}

}

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

public class Prog1 {

public static void main(String[] args) {

int a=0;

int b=0;

double c=0;

int g=0;

for(a=1;a<=20;a++)

{

for(b=1;b<=33;b++)

{

for(c=1;c<=100;c++)

{

if(5*a+3*b+c/3==100&&a+b+c==100)

{g++;

int c1=(int)c;

System.out.print("第"+g+"种方法:公鸡:"+a+"只,母鸡:"+b+"只,小鸡:"+c1+"只");

System.out.println();

}

}

}

}

}

}

13. 请编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:请编制程序要求输入整数a和b,若a2+b2大于100,

输出a2+b2百位以上的数字,

否则输出两数之和。

建立的类名为Prog1

-------------------------------------------------------*/

/**********Program**********/

import java.util.Scanner;

public class Prog1

{

public static void main(String args[])

{

Scanner cin=new Scanner(System.in);

System.out.println("请输入a,b的值:");

int a =cin.nextInt();

int b =cin.nextInt();

int c=0;

if(a*a+b*b>100)

{

c= (a*a+b*b)/100;

S ystem.out.println(c);

}

else

S ystem.out.println(a+b);

}

}/********** End **********/

运行结果:

请输入a,b的值:

10

2

1

14. 编程实现:对键盘输入的任意一个四位正整数,计算各位数字平方和。如:2345 ,则:计算22+32+42+52

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

System.out.println("请输入一个四位正整数:");

int n=cin.nextInt();

int a,b,c,d;

d=n%10;

c=(n-d)%100/10;

b=(n-d-c*10)%1000/100;

int m=0;

m=a*a+b*b+c*c+d*d;

System.out.println(m);

}

}

运行结果:

请输入一个四位正整数:

3333

36

15. 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完,请编程.

public class Prog1 {

public static void main(String[] args) {

int last=0;

last=1020/2+2;

int i=0;

for(i=1;last>=0;i++)

{

last=last-(last/2+2);

}

System.out.print("需要的天数:"+i);

}

}运行结果:

需要的天数:9

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

public class Prog1 {

public static void main(String[] args) {

int a=0,b=0,n=0;

for(int c=0;c<=200;c++)

for( a=0;a<=200;a++)

for(b=0;b<=200;b++)

{

if(c*c==a*a+b*b)

{System.out.println(c);

n++;

}

}

n=(n-1)/2+1;

System.out.println(n);

}

}

17. 设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),编程,输出所有满足条件的N。

public class Prog1 {

public static void main(String[] args) {

for(int i=1000;i*9<10000;i++)

{

String c="";

String str=String.valueOf(i);

for(int j=str.length()-1;j>=0;j--)

{

c=c+str.charAt(j);

}

int a=Integer.parseInt(c);

if(a==i*9)

System.out.println(i);

}

}

}

18. 编程,输出555555的约数中最大的三位数。

public class Prog1 {

public static void main(String[] args) {

int max=100;

for(int i=100;i<=999;i++)

{

if(555555%i==0)

{

if(i>max)

max=i;

}

}

System.out.println(max);

}

}

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

public class Prog1 {

public static void main(String[] args) {

int n=0;

for(int i=10006;i<100000;i=i+10)

{

if(i%31==0)

{System.out.println(i);

n++;}

}

System.out.print(n);

}

}

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

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

int a=cin.nextInt();

int b=cin.nextInt();

String str1=cin.nextLine();

String str=cin.nextLine();

char c=str.charAt(0);

switch(c)

{

case'+':{

System.out.print(a+"+"+b+"="+(a+b));

break;

}

case'-':{

System.out.print(a+"-"+b+"="+(a-b));

break;

}

case'*':{

System.out.print(a+"*"+b+"="+(a*b));

break;

}

case'/':{

System.out.print(a+"/"+b+"="+(a/b));

break;

}

case'%':{

System.out.print(a+"%"+b+"="+(a%b));

break;

}

}

}

}

运算结果:

233

100

%

233%100=33

21. 计算:1+1/(1+2)+1/(1+2+3)+…+ 1/(1+2+…+n), n由键盘输入。import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

double n=cin.nextDouble();

double sum=0;

double s=0;

for(double i=1;i<=n;i++)

{

s=s+i;

sum=sum+1/s;

}

System.out.print(sum);

}

}

22. 编程计算: 1*2*3+3*4*5+…+99*100*101 的值.

public class Prog1 {

public static void main(String[] args) {

int a=1,b=2,c=3;

int sum=0;

do

{

sum=sum+(a*b*c);

a=c;

b=c+1;

c=c+2;

}while(c<=101);

System.out.println(sum);

}

}

二、比较简单问题:

1. 编一个函数GCD,求两个无符号整数的最大公约数。主函数输入两个正整数m 和

n, 调用GCD,求出m和n的最大公约数和最小公倍数.并输出。

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

int a=cin.nextInt();

int b=cin.nextInt();

int gys=GCD(a,b);

int gbs=a*b/gys;

System.out.print("最大公约数:"+gys+" "+"最小公倍数:"+gbs);

}

public static int GCD(int a,int b)

{

int g=0;

int min=a;

if(a>b) min=b;

for(int i=min-1;i>0;i--)

{

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

{g=i;

break;}

}

return g;

}

}

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

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

int sum=0;

Scanner cin=new Scanner(System.in );

int[][] sz=new int[4][4];

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

{for(int j=0;j<4;j++)

{sz[i][j]=cin.nextInt();}

}

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

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

sum=sum+sz[i][j];

}

System.out.print(sum);}

}

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

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

int[] sz=new int[10];

int sum=0;

Scanner cin=new Scanner(System.in );

System.out.print("请输入10个整数:");

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

{

sz[i]=cin.nextInt();

}

for(int j=0;j

{

sum=sum+prime(sz[j]);

}

System.out.print(sum);

}

public static int prime(int q)

{

if(q==0||q==1)

return 0;

else if(q==2)

return 2;

else

{for(int i=2;i

{if(q%i==0)

{

return 0;

}

}}

}

}

运行结果:

请输入10个整数:

1

2

3

6

6

6

6

6

6

5

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

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

Scanner cin=new Scanner(System.in );

int s=0;

int[] sz=new int[10000];

int n=0;

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

{

s=cin.nextInt();

if(s<0)

{

n=i;

break;

}

sz[i]=s;

}

int max=sz[0];

int xba=0,xbi=0;

for(int j=1;j

{

if(sz[j]>max)

{

max=sz[j];

}

}

int min=sz[0];

for(int j=1;j

{

if(sz[j]

{

min=sz[j];

xbi=j;

}

}

xba++;

xbi++;

System.out.print("最高成绩:"+max+",序号:"+xba+"\n"+"最低成绩:"+min+",序号:"+xbi);

}

}

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

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

public class Prog1 {

public static void main(String[] args) {

long sum=1;

long s=1;

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

{for(int j=i;j>1;j--)

{

s=s*j*(--j);

}

sum=sum+s;

s=1;

}

System.out.print("1!+2!+3!+…+20!="+sum);

}

}

运行结果:

1!+2!+3!+…+20!=2561327494111820313

6. 有一个3* 4 的矩阵,编程实现:找出该矩阵中每行元素的最大值,存入一个一维数组中。输出原始矩阵和结果矩阵。

import java.util.Scanner;

public class Prog1 {

public static void main(String[] args) {

int[][] ew=new int[3][4];

Scanner cin=new Scanner(System.in );

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

{

for(int j=0;j<4;j++)

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

}

int[] yw=new int[3];

int max=0;

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

{

for(int j=0;j<4;j++)

{

if(max

max=ew[i][j];

}

yw[i]=max;

max=0;

}

System.out.println("原始矩阵:");

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

{for(int j=0;j<4;j++)

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

System.out.print("\n");}

System.out.println("结果:");

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

{

System.out.print(yw[i]+" ");

}

}}

运行结果:

1

2

6

1

2

4

1

2

9

原始矩阵:

0126

0124

0129

相关主题
文本预览