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();

	}
}

  若有不足,多多指教。java

相關文章
相關標籤/搜索