50道JAVA基础编程练习题2

【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

public class Prog11{
       public
static void main(String[] args){
              int
count=0;
              int
n=0;
              for(int
i=1;i<5;i++) {
                     for(int
j=1;j<5;j++) {
                            if(ij)
{
                                   continue;
                            }
                            for(int
k=1;k<5;k++) {
                                   if(k!=i&&k!=j)
{
                                          n=i100+j10+k;
                                          System.out.print(n+"
");
                                          count++;
                                          if(count%5
0)
{
                                                 System.out.println();
                                          }
                                   }
                            }
                     }
              }
              System.out.println();
              System.out.println(“符合条件的数共:”+count+“个”);
       }
}

【程序12】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

import java.io.;
public class Prog12{
       public
static void main(String[] args){
              public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“请输入利润:”);
              double
pro=sc.nextDouble();
              double
profit;
              if(pro<=100000)
{
                     profit=pro
0.1;
              }else
if(pro>100000&&pro<=200000) {
                     profit=(pro-100000)0.075+1000000.1;
              }else
if(pro>200000&&pro<=400000) {
                     profit=(pro-200000)0.05+2000000.075;
              }else
if(pro>400000&&pro<=600000) {
                     profit=(pro-400000)0.03+4000000.05;
              }else
if(pro>600000&&pro<=1000000) {
                     profit=(pro-600000)0.015+6000000.03;
              }else
{
                     profit=(pro-1000000)0.01+10000000.015;
              }
              System.out.println(“奖金:”+profit);
       }
}

【程序13】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

public class Prog13{
              public static void main(String[] args){
              int
n=100000;
              int
x = 0;
              System.out.print(“所求的数是:”);
              for(int
i=1;i<=n;i++) {
                     if(isCompSqrt(i+100)&&isCompSqrt(i+268))
{
                            x=i;
                            System.out.print(x+"
");
                     }
              }
       }
       public
static boolean isCompSqrt(int n) {
              boolean
isComp=false;
              for(int
i=1;i<Math.sqrt(n)+1;i++) {
                     if(n==Math.pow(i,
2)) {
                            isComp=true;
                     }
              }
              return
isComp;
       }
}

【程序14】题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

import java.util.Scanner;
public class Prog14{
       public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“请输入年月日:”);
              int
year=sc.nextInt();
              int
month=sc.nextInt();
              int
day=sc.nextInt();
              int
n=SumDay(year,month,day);
              System.out.println(“这一天是”+year+“年的第”+n+“天”);
       }
       public
static int SumDay(int year,int month,int day) {
              int
x=0;
              int
[] date= {0,31,28,31,30,31,30,31,31,30,31,30};
              if((year%40&&year%100!=0)||(year%4000))
{
                     date[2]=29;
              }
              for(int
i=0;i<month;i++) {
                     x+=date[i];
              }
              return
x+day;
       }
}

【程序15】题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,使x最小。

import java.util.Scanner;
public class Prog15{
       public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“请输入三个数:”);
              int
x=sc.nextInt();
              int
y=sc.nextInt();
              int
z=sc.nextInt();
              System.out.println(“排序结果为:”);
              sort(x,y,z);
       }
       public
static void sort(int x,int y,int z) {
              int
temp;
              if(x>y)
{
                     temp=x;
                     x=y;
                     y=temp;
              }
              if(x>z)
{
                     temp=x;
                     x=z;
                     z=temp;
              }
              if(y>z)
{
                     temp=y;
                     y=z;
                     z=temp;
              }
              System.out.println(x+"
“+y+” "+z);
       }
}

【程序16】题目:输出9*9口诀。

程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

public class Prog16{
       public
static void main(String[] args){
              for(int
i=1;i<10;i++) {
                     for(int
j=1;j<=i;j++) {
                            System.out.print(j+""+i+"="+(ij)+"\t");
                     }
                     System.out.println();
              }
       }
}

【程序17】题目:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析:采取逆向思维的方法,从后往前推断。

public class Prog17{
       public
static void main(String[] args){
              int
m=1;
              for(int
i=9;i>0;i–) {
                     System.out.println(“第”+i+“天后还剩”+m+“个桃”);
                     m=(m+1)*2;
              }
              System.out.println(“小猴子摘了”+m+“个桃子”);
       }
}

【程序18】题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

import java.util.ArrayList;
public class Prog18{
       public
static void main(String[] args){
              char
i,j,k;
              for(
i=‘x’;i<=‘z’;i++) {
                     for(
j=‘x’;j<=‘z’;j++) {
                            if(i!=j)
{
                                   for(
k=‘x’;k<=‘z’;k++) {
                                          if(j!=k&&i!=k)
{
                                                 if(i!=‘x’&&k!=‘x’&&k!=‘z’)
{
                                                        System.out.println(“a–>”+i+"
b–>"+j+" c–>"+k);
                                          }
                                         
                                          }
                                   }
                            }
                     }
              }
       }
}

【程序19】题目:打印出如下图案(菱形)

*

***

*****

*******

*****

***

*

程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。

public class Prog19{
       public
static void main(String[] args){
              for(int
i=1;i<5;i++) {
                     for(int
k=1;k<=4-i;k++) {
                            System.out.print("
“);
                     }
                     for(int
j=1;j<=2i-1;j++) {
                            System.out.print("
”);
                     }
                     System.out.println();
              }
              for(int
i=0;i<3;i++) {
                     for(int
j=0;j<i+1;j++) {
                            System.out.print("
“);
                     }
                     for(int
k=0;k<=4-2i;k++) {
                            System.out.print("
”);
                     }
                     System.out.println();
              }
       }
}

【程序20】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

public class Prog20{
       public
static void main(String[] args){
              double
a=2;
              double
b=1;
              double
s=0;
              double
t;
              for(int
i=0;i<20;i++) {
                     s+=a/b;
                     t=a;
                     a=a+b;
                     b=t;
              }
              System.out.println(s);
       }
}

发布了10 篇原创文章 · 获赞 0 · 访问量 192

猜你喜欢

转载自blog.csdn.net/gj55678/article/details/105425153