50道JAVA基础编程练习题3

【程序21】题目:求1+2!+3!+…+20!的和

public class Prog21{
       public
static void main(String[] args){
              long
s=0;
              long
n=1;
              for(int
i=1;i<=20;i++) {
                     n=n*i;
                     s+=n;
              }
              System.out.println(s);
       }
}

【程序22】题目:利用递归方法求5!。

public class Prog22{
       public
static void main(String[] args){
              int
n=5;
              System.out.println(fun(n));
       }
       public
static int fun(int n) {
              if(n0||n1)
{
                     return
1;
              }
              else
{
                     return
n*fun(n-1);
              }
       }
}

【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

public class Prog23{
       public
static void main(String[] args){
              int
n=5;
              System.out.println(fun(n));
       }
       public
static int fun(int n) {
              if(n==1)
{
                     return
10;
              }
              else
{
                     return
2+fun(n-1);
              }
       }
}

【程序24】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

public class Prog24{
       public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“输入一个整数(不超过五位):”);
              int
x=sc.nextInt();
              int
count=0;
              System.out.print(“逆序输出:”);
              while(x!=0)
{
                     count++;
                     System.out.print(x%10);
                     x/=10;
              }
              System.out.println();
              System.out.println(“该数字是”+count+“位数”);
       }
}

【程序25】题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

public class Prog25{
       public
static void main(String[] args){
              public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“输入一个整数(五位数):”);
              String
s=sc.nextLine();
              char
[] chs=s.toCharArray();
              if(chs[0]==chs[s.length()-0-1]&&chs[1]==chs[s.length()-1-1])
{
                     System.out.println(“是回文数”);
              }else
{
                     System.out.println(“不是回文数”);
              }
       }
  
}
}

【程序26】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

import java.io.*;
public class Prog26{
       public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“输入星期的前两位:”);
              String
s=sc.nextLine();
              if(s.charAt(0)‘M’)
{
                     System.out.println(“today
is Monday”);
              }else
if(s.charAt(0)
‘W’) {
                     System.out.println(“today
is Wednesday”);
              }else
if(s.charAt(0)‘F’) {
                     System.out.println(“today
is Friday”);
              }else
if(s.charAt(0)
‘T’) {
                     if(s.charAt(1)‘u’)
{
                            System.out.println(“today
is Tuesday”);
                     }else
if(s.charAt(1)
‘h’) {
                            System.out.println(“today
is Thursday”);
                     }else
{
                            System.out.println(“Wrong”);
                     }
              }else
if(s.charAt(0)‘S’) {
                     if(s.charAt(1)
‘a’)
{
                            System.out.println(“today
is Saturday”);
                     }else
if(s.charAt(1)==‘u’) {
                            System.out.println(“today
is Sunday”);
                     }else
{
                            System.out.println(“Wrong”);
                     }
              }else
{
                     System.out.println(“Wrong”);
              }
       }
}

【程序27】题目:求100之内的素数

public class Prog27{
       public
static void main(String[] args){
              int
n=100;
              int
count=0;
              System.out.println(n+“以内的素数:”);
              for(int
i=2;i<n+1;i++) {
                     if(isPrime(i))
{
                            System.out.print(i+"
");
                            count++;
                     }
              }
       }
       public
static boolean isPrime(int n) {
              boolean
flag=true;
              for(int
i=2;i<Math.sqrt(n)+1;i++) {
                     if(n%i==0)
{
                            flag=false;
                            break;
                     }
              }
              return
flag;
       }
}

【程序28】题目:对10个数进行排序

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。

public class Prog28{
       public
static void main(String[] args){
              Scanner
sc=new Scanner(System.in);
              System.out.println(“请输入十个数:”);
              int
n=10;
              int
[] a=new int[n];
              for(int
i=0;i<n;i++) {
                     a[i]=sc.nextInt();
              }
              sort(a);
              for(int
i=0;i<a.length;i++) {
                     System.out.print(a[i]+"
");
              }
       }
       public
static void sort(int[] a) {
              for(int
i=0;i<a.length-1;i++) {
                     for(int
j=i+1;j<a.length;j++) {
                            if(a[i]>a[j])
{
                                   int
temp=a[i];
                                   a[i]=a[j];
                                   a[j]=temp;
                            }
                     }
              }
       }
}

【程序29】题目:求一个3*3矩阵对角线元素之和

public class Prog29{
       public
static void main(String[] args){
              int
[][] a= {{1,3,2},{3,6,4},{5,7,2}};
              int
sum=0;
              int
sum2=0;
              for(int
i=0;i<a.length;i++) {
                     for(int
j=0;j<a[0].length;j++) {
                            System.out.print(a[i][j]+"
");
                            if(ij)
{
                                   sum+=a[i][j];
                            }
                            if(j
a.length-i-1)
{
                                   sum2+=a[i][j];
                            }
                     }
                     System.out.println();
              }
              System.out.println(sum);
              System.out.println(sum2);
       }
}

【程序30】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

import java.util.Scanner;
public class Prog30{
       public
static void main(String[] args){
              int
[] a= {1,2,3,4,5,6,7,8,9};
              Scanner
sc=new Scanner(System.in);
              System.out.println(“请输入一个数:”);
              int
n=sc.nextInt();
              System.out.println(“插入后的数组为:”);
              int
[] b=new int[a.length+1];
              insert(a,b,n);
              for(int
i=0;i<b.length;i++) {
                     System.out.print(b[i]+"
");
              }
       }
       public
static void insert(int [] a,int [] b,int n) {
              int
index = 0;
              for(int
i=0;i<a.length;i++) {
                     b[i]=a[i];
              }
              for(int
j=0;j<b.length;j++) {
                     if(n<b[j])
{
                            index=j;
                            break;
                     }
              }
              for(int
x=b.length-1;x>index;x–) {
                     b[x]=b[x-1];
              }
              b[index]=n;
       }
}

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

猜你喜欢

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