流程控制(21-30)

【程序21】  
题目:求1+2!+3!+...+20!的和  
1.程序分析:此程序只是把累加变成了累乘。  

package zuoYe;


public class Test21 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum = 0;
        for(int i =1;i<=20;i++){
            int count = 1;
            for(int j = 1;j<=i;j++){
                count = count*j;
            }
            sum = sum+count;
        }
        System.out.println(sum);
    }

}
 


【程序22】  
题目:利用递归方法求5!。  
1.程序分析:递归公式:fn=fn_1*4!  

package zuoYe;

import java.util.Scanner;

public class Test22 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        System.out.println("请问你要计算几的阶乘");
        int n = in.nextInt();
        int sum = 1;
        if(n == 1){
            n=1;
        }else{
            for(int i = n;i>0;i--){
                sum = sum*i;    
            }            
            System.out.println(n+"的阶乘是"+sum);    
        }
    }

}
 


【程序23】  
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?  
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

package zuoYe;

public class Test23 {
    public static void main(String[] args) {
        int a = 10;
        
        for(int i = 1;i<=5;i++){
            if(i ==1){
                System.out.println("第"+i+"个人是"+a+"岁");
            }else{
                a = a+2;
                System.out.println("第"+i+"个人是"+a+"岁");
            }
            
        }
        System.out.println("第五个人是"+a+"岁");
    }
}
 

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

package zuoYe;

import java.util.Scanner;

public class Test24 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个不多于5位的正整数:");
        int n = in.nextInt();
        int sum = 0;
        int count = 0;
        
        System.out.print("该数字逆序输出为:");
        while(n!= 0){
            count = n%10;
            n= n/10;
            sum++;
            System.out.print(count);
        }
        System.out.println("\n该数字的位数有"+sum+"位");
    }

}
 

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

package zuoYe;

import java.util.Scanner;

public class Test25 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        while(true){
            Scanner in = new Scanner(System.in);
            System.out.println("请输入一个不多于5位的正整数:");
            int n = in.nextInt();
            if(9999<n&&n<100000){
                int n1 = n/10000;
                int n2 = n/1000%10;
                int n3 = n/100%10;
                int n4 = n/10%10;
                int n5 = n%10;
                if(n1==n5&&n2==n4){
                    System.out.println("该数字是回文数");
                }else{
                    System.out.println("该数字不是回文数");
                }        
                break;
            }else{
                System.out.println("输入错误,请重新输入");
            }
        }
        
    }

}
 


【程序26】  
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续   判断第二个字母。  
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。  

package zuoYe;

import java.util.Scanner;

public class Test26 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        System.out.println("请输入第一个字符:");
        String str = in.next();
        char ch = str.charAt(0);
        if(ch=='m'){
            System.out.println("MONDAY");
        }
        else if(ch == 't'){
            System.out.println("请输入第二个字符:");
            String str2 = in.next();
            char ch2 = str2.charAt(0);
            if(ch2 =='u'){
                System.out.println("TUSEDAY");
            }else if(ch2 =='h'){
                System.out.println("THURSDAY");
            }else{
                System.out.println("输入错误!");
            }                
        }
        else if(ch =='w'){
            System.out.println("WEDNSEDAY");
        }
        else if(ch=='f'){
            System.out.println("FRIDAY");
        }
        else if(ch=='s'){
            System.out.println("请输入第二个字符:");
            String str2 = in.next();
            char ch2 = str2.charAt(0);
            if(ch2 =='a'){
                System.out.println("SATURDAY");
            }else if(ch2 =='u'){
                System.out.println("SUNDAY");
            }else{
                System.out.println("输入错误!");
            }
        }else{
            System.out.println("输入错误!");
        }
    }

}
 


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

package zuoYe;

public class Test27 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int i ,j;
        for(i = 1;i<=100;i++){
            for( j = 2;j<i;j++){
                if(i%j==0){
                    break;
                }                
            }
            if(i==j){
                System.out.println(j+" ");
            }
        }
    }

}
 


【程序28】  
题目:对10个数进行排序  
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。  

package zuoYe;

import java.util.Scanner;

public class Test28 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int a[]  = new int[10];
        System.out.println("请输入10个数字:");
        for(int i = 0;i<10;i++){
            a[i] = in.nextInt();
        }
        
        for(int i = 0;i<10;i++){
            for(int j = i+1;j<10;j++){
                if(a[i]>a[j]){
                    int t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
        }
        
        for(int i = 0;i<10;i++){
            if(a[i]==0){
                System.out.println(0);
            }
            System.out.print(a[i]+" ");
        }
        System.out.println();
        System.out.println("交换以后的数是:");
        for(int i = 0;i<=a.length/2;i++){
            int t = a[i];
            a[i] = a[a.length-i-1];
            a[a.length-i-1] = t;        
        }
        for(int i = 0;i<a.length;i++){
            System.out.print(a[i]+"\t");
        }
    }

}
 


【程序29】  
题目:求一个3*3矩阵对角线元素之和  
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。  

package zuoYe;

import java.util.Scanner;

public class Test29 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        System.out.println("请输入数据:");
        int a[] [] = new int[3][3];
        for(int i = 0;i<3;i++){
            for(int j = 0;j<3;j++){
                 a[i][j] = in.nextInt();
                 
            }
        }
        
        int sum = 0;
        int sum2 = 0;
        for(int i = 0;i<a.length;i++){
            for(int j =0;j<a.length;j++ ){
                if(i==j){
                    sum = sum+a[i][j];
                }
                if(i==a.length-i-1){
                    sum2 = sum2+a[i][j];
                }
            }
        }
        System.out.println("对角线之和分别是:"+sum+"和"+sum2);
    }

}
 


【程序30】  
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。  
1.   程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。  

package zuoYe;

import java.util.Arrays;
import java.util.Scanner;

public class Test30 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int a[] = {1,5,2,6,3,12,8};
        System.out.print("原来的数组是:");
        for(int i = 0;i<a.length;i++){
            System.out.print(a[i]+"\t");
        }
        Arrays.sort(a);
        System.out.println("\n原来的数组惊醒排序以后:");
        for(int i = 0;i<a.length;i++){
                System.out.print(a[i]+"\t");            
        }
        System.out.println();
        
        System.out.println("请输入要插入的数字:");
        int num = in.nextInt();
        insert(num,a);//向数组中插入数字                
    }

    private static int[] insert(int num,int[] a){
        int[] tempArray=new int[a.length+1];//定义数组存放插入后的数组。
        if(num>a[a.length-1]){//n大于排序好的数组最后一位,直接把n放到tempArray最后一位。
            tempArray[a.length]=num;
            for(int i=0;i<a.length;i++){
                tempArray[i]=a[i];  //之前的数字按顺序赋值。
            }
            
        }else{
            for(int i=0;i<a.length;i++){
                if(num<a[i]){ //找到原来数组中大于n的第一位,并将n放在此位置
                    //给之前没变的数组赋值
                    for(int j=0;j<i;j++){
                        tempArray[j]=a[j];
                    }
                    
                    //后面向后挪一位
                    for(int k=i;k<a.length;k++){
                        tempArray[k+1]=a[k];
                    }
                    tempArray[i]=num;
                    
                    break;
                }
            }
        }
        System.out.println("插入以后的排序是:");
        for(int i = 0;i<tempArray.length;i++){
            System.out.print(tempArray[i]+" ");
    }
        return tempArray; 
    }
}

/*
System.out.println("插入以后的排序是:");
for(int i = 0;i<d.length;i++){
    System.out.print(d[i]+" ");
*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手菜鸟大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值