zoukankan      html  css  js  c++  java
  • java经典程序(11-20)

    package question;
    
    import java.util.Scanner;
    
    public class Test11_20 {
    	/*
    	 * 输入一个数据n,计算斐波那契数列的第n个值 并打印所以值
    	 * 1 1 2 3 5 8 13
    	 * 规律一个数等于前两个数之和
    	 */
    	public void test11(){
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();
    		int f1 = 1,f2 = 1;
    		int sum = 0;
    		//输出f1 f2
    		System.out.print("打印所以值:");
    		System.out.print(f1+" ");
    		System.out.print(f2+" ");
    		//从第三个开始,前面已经打印两个数了,所以n-2
    		for(int i=0; i<n-2; i++){
    			sum = f1+f2;
    			System.out.print(sum+" ");//打印所以数
    			f1 = f2;
    			f2 = sum;
    		}
    	 System.out.println();
    	 System.out.println("第n个值是:sum="+sum);//打印第n个数
    	 /*
    	  * 结果:                    8
    					打印所以值:1 1 2 3 5 8 13 21 
    					第n个值是:sum=21
    	  */
    	}
    	
    /***************************************************/	
    	//使用递归求斐波那契数列第n个数
    	public int test12(int n){
    		if(n==1||n==2){
    			return 1;
    		}else{
    			return test12(n-1)+test12(n-2);
    		}
    	}
    	
    /***************************************************/
    	/*
    	 * 求1-1/3+1/5-1/7+1/9.....的值
    	 */
    	public void test13(){
    		 double sum=1;//作为第一个数1
    		 double fz = -1.0;//作为第二个数的分子
    		 double fm = 3.0;//第二个数的分母
    		for(int i=0; i<20; i++){
    			sum = sum+fz/fm;
    			fz *= -1;//下一次运算将分子变为相反数
    			fm += 2; //分母每次加2
    		}
    		System.out.println(sum);
    	}
    	
    /***************************************************/
    	/*
    	 *在屏幕上打印出n行的金字塔图案 
    	 *        *
    	 *       ***
    	 *      *****
    	 */
    	public void test14(){
    		for(int i=1; i<10; i++){
    			 for(int j=0; j<10-i; j++){
    				System.out.print(" ");
    			}
    			for(int k=0; k<2*i-1; k++){
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    	}
    	
    /***************************************************/
    	/*
    	 * 歌巴德猜想,任何一个大于6的偶数都可以拆分成两个质数的和
    	 * 打印所有的可能
    	 */
    	//是否是质数
    	private boolean isPrime(int n){
    		if(n==1){
    			return false;
    		}
    		for(int i=2; i<=Math.sqrt(n); i++){
    			if(n%i==0){
    				//System.out.println(i);
    				return false;
    			}
    		}
    		return true;
    	}
    	//
    	public void test15(){
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();//n大于6 且是偶数,
    		if(n%2!=0){
    			System.out.println("不能为奇数");
    			return;
    		}
    		if(n<6){
    			System.out.println("不能小于6");
    			return;
    		}
    		for(int i=3; i<n/2; i++){
    			if(isPrime(i)&&isPrime(n-i)){//都不为质数时
    				System.out.println(i+"+"+(n-i)+"="+n);//打印所有的可能
    			}
    		}
    	}
    	
    /***************************************************/
    	/*
    	 * 定义一个int型的数组,包含十个元素分别赋一些随机数,然后求出所有元素的最大值
    	 * 最小值,平均值,和值,并输出出来
    	 */
    	public void test16(){
    		int[] arr = new int[10];
    		System.out.println("以下是十个随机数!");
    		for(int i=0; i<10; i++){
    			//随机生成十个数 介于0到100
    			arr[i] = (int)(Math.random()*100);
    		}
    		for(int i=0; i<10; i++){
    			System.out.print(arr[i]+" ");
    		}
    		System.out.println();//换行
    		System.out.println("和等于:"+sum(arr));
    		System.out.println("平均值等于:"+sum(arr)/10);
    		sort(arr);
    		System.out.println("最大值"+arr[arr.length-1]);
    		System.out.println("最小值:"+arr[0]);
    		/*以下是十个随机数!
    		  4 87 68 7 88 84 40 4 20 47 
    		    和等于:449
    		    平均值等于:44
    		    最大值88
    		    最小值:4
    		 */
    	}
    	//求和
    	private int sum(int[] a){
    		int sum = 0;//求数组和
    		for(int i=0; i<a.length; i++){
    			sum+=a[i];
    		}
    		return sum;
    	}
    	//冒泡排序 升序
    	private void sort(int[] arr){
    		for(int i=0; i<arr.length; i++){
    			 for(int j=i; j<arr.length; j++){
    				if(arr[j]<arr[i]){
    					int temp = arr[i];
    					arr[i] = arr[j];
    					arr[j] = temp;
    				}
    			 }
    		}
    	}
    /*****************************************/
    	/*
    	 * 定义一个一维数组 包含十个元素,分别赋值1到10,然后将数组中的元素向前
    	 * 移动一个位置a[0]=a[1]...最后一个数等于a[0]
    	 */
    	public void test17(){
    		int[] arr = new int[10];
    		System.out.println("以下是十个随机数!");
    		for(int i=0; i<10; i++){
    			//随机生成十个数 介于0到10
    			arr[i] = (int)(Math.random()*10);
    		}
    		//打印随机生成的元素
    		for(int i=0; i<10; i++){
    			System.out.print(arr[i]+" ");
    		}
    		System.out.println();//换行
    		System.out.println("移动后的元素:");
    		int temp = arr[0];//保存第一个数
    		for(int j=0; j<arr.length-1; j++){
    			arr[j] = arr[j+1];//把后一个数赋值给前一个
    		}
    		arr[arr.length-1] = temp;//把第一个数赋值给最后一个
    		//打印移动后的元素
    		for(int i=0; i<10; i++){
    			System.out.print(arr[i]+" ");
    		}
    	}
    	
    	/*
    	       	运行结果:
    	       	以下是十个随机数!
    			8 3 1 2 7 3 6 4 1 3 
    			移动后的元素:
    			3 1 2 7 3 6 4 1 3 8 
    	 */
    	
    /*******************************************/
    	/*
    	 * 将一个数组中的数据倒过来排,
    	 * 例如:1 2 3 4 5 6 倒过来  6 5 4 3 2 1
    	 */
    	public void test18(){
    		int[] arr = new int[10];
    		int[] newArr = new int[10];
    		System.out.println("以下是十个随机数!");
    		for(int i=0; i<10; i++){
    			//随机生成十个数 介于0到10
    			arr[i] = (int)(Math.random()*10);
    		}
    		//打印随机生成的元素
    		for(int i=0; i<10; i++){
    			System.out.print(arr[i]+" ");
    		}
    		//将生成数组的元素的最后一个赋值给第一个,倒数第二个给第二个,以此类推
    		for(int i=9; i>=0; i--){
    			newArr[9-i] = arr[i];
    		}
    		System.out.println();//换行
    		for(int i=0; i<10; i++){
    			System.out.print(newArr[i]+" ");
    		}
    	}
    	/*  打印结果:
    	 *  以下是十个随机数!
    		5 0 8 4 2 1 3 5 7 6 
    		6 7 5 3 1 2 4 8 0 5
    	 */
    	
    /*************************************************/
    	/*
    	 * 定义一个int数组a,包含100个元素,保存100个随机的4位数
    	 * 再定义一个int数组b,包含十个元素,统计a数组中的元素对10
    	 * 求余等于0的个数,保存到b[0]中,余数等于1保存到吧[1]中,以此类推
    	 */
    	public void test19(){
    		int[] a = new int[100];
    		int[] b = new int[10];
    		System.out.println("以下是100个随机数!");
    		for(int i=0; i<a.length; i++){
    			//随机生成十个数 介于0到10
    			a[i] = (int)(Math.random()*9000+1000);//1000~10000
    		}
    		int sum = 0;
    		for(int i=0; i<b.length; i++){
    			for(int j=0; j<a.length; j++){
    				if(a[j]%10==i){
    					sum++;
    				}
    			}
    			b[i] = sum;
    			sum=0;//取余完所有i之后将sum=0,重新计算
    			System.out.print("b["+i+"]"+"="+b[i]+" ");
    		}
    	}
        // 运行结果  :b[0]=11 b[1]=6 b[2]=12 b[3]=14 b[4]=6 b[5]=10 b[6]=9 b[7]=10 b[8]=10 b[9]=12 
    
    /****************************************************************/
    	
    	/**
    	 * 打印一个○
    	 */
    	public void test20(){
    		for(int i=0; i<30; i++){
    			for(int j=0; j<30; j++){
    				//半径为5 圆公式 x^2+y^2 = r^2
    				if(((i-10)*(i-10)+(j-10)*(j-10))==25){
    					System.out.print(" * ");
    				}else{
    					System.out.print(" ");
    					System.out.print(" ");
    				}
    			}
    			System.out.println();
    		}
    	}
    	/*运行结果
                        *                  
                  *          *            
                *              *          
                                            
                                            
              *                  *        
                                            
                                            
                *              *          
                  *          *            
                        *      
    	 */
    	
    	public static void main(String[] args) {
    		Test11_20 t = new Test11_20();
    		t.test20();
    
    	}
    }
    

      如有不足,多多指教。

  • 相关阅读:
    函数式编程
    8 Principles of Better Unit Testing
    COM 组件 V.S. .NET
    WebBrowser 禁用脚本错误提示
    Unable to automatically debug "XXXXX“
    简介
    android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习
    我的Android六章:Android中SQLite数据库操作
    Android的生命周期学习
    我的Android第五章:通过Intent实现活动与活动之间的交互
  • 原文地址:https://www.cnblogs.com/lenglangjin/p/10970535.html
Copyright © 2011-2022 走看看