笔记04 课后练习题

1,用 for 循环完成 1 至 100 内所有偶数和奇数分别累加。
最后,输出偶数的累加结果和奇数的累加结果。
public class LoopTest {
	public static void main(String[] args){
		
		// 累加,完成1-100之间的所有整数相加;
		int i = 1;
		int sum = 0;
		while(i <= 100 ){
			sum += i;
			i++;
		}
		System.out.println("1 - 100累加的结果是:" + sum );
		
		add( 100 );		// 调用方法完成累加, 1-100奇数加一次,偶数加一次;
	}
	public static void add(int x ){
		int a = 1;
		int sum1 = 0;
		int sum2 = 0;
		while(a <= x ){
			if(a % 2 == 0){
				sum1 += a;
			}else{
				sum2 += a;
			}
			a++;
		}
		System.out.println("1-100之中,偶数累加的结果是:" + sum1);
		System.out.println("1-100之中,奇数累加的结果是:" + sum2);
	}
}

 

2,产生三个随机的整数,用if语句实现三个整数由小到大排序。
/*
	数学类:  Math
		1) 来源于 java.lang.Math; 由专家给定。
		2) 用来为程序员提供常用的数学函数和数学常量。
			例如:	abs(n); 求n的绝对值
					sqrt(n); 求n的平方根
					pow( x, y ); 求x的y次方				
					random() ;  产生一个[ 0 , 1 ) 范围的随机double型数。
					round( x ); 对x进行四舍五入反馈一个long型整数。
				
		思考: 产生三个随机的整数,用if语句实现三个整数由小到大排序。
			若是四个整数、五个整数又如何(考察目的:从中找到多个整数排序规律)。
 */
public class MathTest {
	public static void main(String[] args){
		// 产生3个随机整数,并由if语句实现排序
		int a = (int)(100*Math.random());
		int b = (int)(100*Math.random());
		int c = (int)(100*Math.random());
		System.out.println("产生3个1-100之间的随机整数: " + a + ", " + b +", " + c );
		int x = 0;		//定义中间变量x,用来做比较运算;
		if(a > b){
			x = a;
			a = b;
			b = x;		//若a>b,则交换a,b的位置
		}
		if(b > c){
			x = b;
			b = c;
			c = x;		//再让b与c比较,若b>c,交换b,c的位置
		}
		if(a > b){
			x = a;
			a = b;
			b = x;		//再比较一下a和b,若a>b,则交换a,b的位置
		}
		System.out.println("这3个整数排序后为:" + a + ", " + b + ", " + c );
	}
}

3,打印输出1-2000之间既能被3整除又能被8整除的前15个整数,每行输出5个;
//	编写一个程序打印输出1-2000之间既能被3整除又能被8整除的前15个整数,每行输出5个;
public class Work01 {
	public static void main(String[] args){
		
		int j=0;
		for(int i = 1; i < 2000; i++ ){									
			if(i % (3*8) == 0 ){
				System.out.print(i + " ");
				
				if(j != 0 && j % 5 == 0){
					System.out.println();
				}
				if(j >= 15){
					i = 2000;
				}
				j++;
			}
			
		}
	}
}

4, 求1!+2!+……+15!  (注意:溢出);
//	编程求1!+2!+……+15!  (注意:溢出);
public class Work02 {
	public static void main(String[] args){
		//编程求出15的阶乘 15! ;
		int sum = 1 ;
		for(int i = 1 ; i <= 15 ; i++ ){
			sum *= i ;			
		}
		System.out.println("15! = " + sum ); //运行结果, 15! = 2004310016
		
		System.out.println("16! = " + ass(16) );	//调用方法ass(n)可以求任意整数的阶乘;
		
		//使用for循环反复调用方法ass求出1!--- 15!的和;
		long sum1 = 0 ;
		for(int j =  1 ; j <= 15 ; j++ ){
			sum1 += ass(j) ;
		}
		System.out.println("1!+2!+3!+...+ "+ ass(15)+ " =" + sum1 );
	}
	//把上面求15!写成方法,可求任意整数的阶乘;
	public static long ass(int n){
		long sum = 1 ;			//定义一个lang型整数储存结果,避免溢出;
		for(int i = 1 ; i <= n ; i++ ){
			sum *= i ;			
		}
		return sum;
	}
}

5,输出菲波拉契数列的前20项(1,1,2,3,5,8…),且每行只能输出5个数据。
// 	编写Java应用程序,输出菲波拉契数列的前20项(1,1,2,3,5,8…),且每行只能输出5个数据。
public class Work03 {
	public static void main(String[] args){
		int a = 1 ;
		int b = 1 ;
		int c = 0 ;
		System.out.print(a + ",  ");
		for(int i = 2 ; i <= 20 ; i++ ){
			System.out.print(b + ",  ");
			c = a + b ;
			a = b ;
			b = c ;
			if(i % 5 == 0){
				System.out.println();
			}
		}
	}
}
6,编写Java应用程序,输出一个菱形

    *
   * *
  * * *
 * * * *
* * * * *
 * * * *
  * * *
   * *
    *

//编写Java应用程序,输出一个菱形
public class Work04 {
	public static void main(String[] args){
		for(int i = 0 ; i < 10 ; i++ ){
			
			if(i <= 5){
				for (int j = 1 ; j <= 5-i ; j++ ){
					System.out.print(" ");
				}			
				for (int j = 1 ; j <= i ; j++ ){
					System.out.print("* ");
				}
			}else{
				for (int j = 1 ; j <= i-5 ; j++ ){
					System.out.print(" ");
				}
				for (int j = 1 ; j <= 10-i ; j++ ){
					System.out.print("* ");
				}
			}
			System.out.println();
		}
	}
}

7,编写Java应用程序,中国古时有人提出“百钱买百鸡”,即:公鸡5元一只,
  母鸡3元一只,小鸡1元三只,问:最终可买到公鸡、母鸡、小鸡分别是多少?
/*
 		编写Java应用程序,中国古时有人提出“百钱买百鸡”,即:公鸡5元一只,
		母鸡3元一只,小鸡1元三只,问:最终可买到公鸡、母鸡、小鸡分别是多少?
*/
public class Work05 {
	/* 
		5a + 3b + 1/3c = 100;	a + b + c = 100;
		结果 a = 4, b = 18, c = 78,
			a = 8, b = 11, c = 81,
			a = 12, b = 4, c = 84,
	*/
	public static void main(String[] args){
		
		for(int a = 0 ; a <= 100/5 ; a++ ){		//公鸡的数量a最多能买100/5个;
			for(int b = 0 ; b <= (int)(100/3) ; b++ ){	//母鸡的数量b最多能买100/3个;
				for(int c = 0 ; c <= 3*100 ; c += 3 ){	//小鸡的c只能一次买3个;
					if(5*a + 3*b + c/3 == 100 && a + b + c == 100 ){
						System.out.println("公鸡数量为:" + a + ",  母鸡的数量为:" 
								+ b + ",  小鸡的数量为:" + c);
					}
				}
			}
		}
	}
}

8, 红、黄、黑、白4色球各一个,放置在编号为1,2,3,4的4个盒子里面,
 每个盒子一个球,顺序未知。
 甲、乙、丙三个人猜测放置顺序如下:
  甲:黑球在1号盒子,黄球在2号盒子;
  乙:黑球在2号盒子,白球在3号盒子;
  丙:红球在2号盒子,白球在4号盒子;
   结果证明:甲、乙、丙三人各猜中一半,试通过程序求出4色球在盒子中的放置位置。
/*
	红、黄、黑、白4色球各一个,放置在编号为1,2,3,4的4个盒子里面,
	每个盒子一个球,顺序未知。
	甲、乙、丙三个人猜测放置顺序如下:
		甲:黑球在1号盒子,黄球在2号盒子; 
		乙:黑球在2号盒子,白球在3号盒子; 
		丙:红球在2号盒子,白球在4号盒子;
  	结果证明:甲、乙、丙三人各猜中一半,试通过程序求出4色球在盒子中的放置位置。
 */
public class Work06 {
	static int r, y, b, w;
	static boolean f1, f2, f3; 
	//甲  b == 1 && y == 2;
	//乙  b == 2 && w == 3;
	//丙  r == 2 && w == 4;
	public static void main(String[] args){
		for(int i = 1; i <= 4; i++ ){
			r = i ;
			for(int j = 1; j <= 4; j++){
				if(j!=i){
					y = j ;
					for(int k = 1; k <= 4; k++ ){
						if(k != j && k != i){
							b = k ;
							for(int m = 1; m <= 4; m++ ){
								if(m != j && m != i && m != k){
									w = m ;
									if((b == 1 ^ y == 2)&&(b == 2 ^ w == 3)&&(r == 2 ^ w == 4)){
										System.out.println("红球:"+r+", 黄球:"+y
										+", 黑球:"+b+", 白球"+w+" ");
									}
								}
							}	
						}
					}
				}
				
				
			}
		}
	}

}


 

 

 

 


 

 

 

 

 


 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值