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

	}
}

  如有不足,多多指教。

posted on 2019-06-03 22:26  如果······  阅读(252)  评论(0编辑  收藏  举报