java 算法练习题(1)

1、今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几
何? (百钱买百鸡问题)

	 假设 公鸡为a,母鸡为b,小鸡为c,先写出判断条件 。
	 int a,b,c ;
	 a+b+c =100;    //三种鸡一共100只
	 5*a +3*b +c/3 == 100   //三种鸡一共100块钱
     c%3==0          //小鸡最少买3只
     
for(int a=1;a<=20;a++) {            //公鸡最多20只
			for(int b=1;b<=33;b++) {   //母鸡最多33只
				for(int c=100-a-b;c<=300;c++) {			//小鸡最多300只				
						if(c%3==0 && a+b+c==100 && 5*a+3*b+c/3 ==100) {  //三个判断条件符合就输出
							System.out.println(a+", "+b+", "+c);
						}					
				}
			}
		}
	

2、有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔

	做题首先思路明确,先声明变量写出判断条件
	int   a,b;    //  鸡和兔
	a +b = 35;      //   鸡头 +兔头  一共35 个
	a*2+b*4 =94;    //   鸡脚和 兔脚 一共94 只
          for(int a =1;a<36;a++) {    //鸡最多35只
					for(int b =1;b<36;b++) {   //兔最多35只
						if(a+b==35 && a*2+b*4==94) {     //符合条件的输出
							System.out.println(a+","+b);
						}
					}
				}
	

3.输出1-100的奇数,每行输出六个

for(int i=1,j=0;i<100;i++) {
					if(i%2!=0) {
						System.out.print(i+" ");
						if(++j%6==0) {  //j控制第几个奇数
							System.out.println();
						}
					}
				}

4.求100以内所有能被3整除但不能被5整除的个数

                 int j=0;
				for(int i=1;i<=100;i++) {
					if(i%3==0&i%5!=0) {
						j++;
					}
				}
				System.out.println(j);

5.打印出所有的水仙花数

 for(int i=100;i<1000;i++){
			            int x =i/100;
			            int y =i/10%10;
			            int z =i%10;
			            if(i==x*x*x+y*y*y+z*z*z)
			                System.out.println(i);
			        }

6.输出三个数中的最大值和最小值

int k1 = 1, k2 = 2, k3 = 3;
		int max;
		int min = max = k1;
		if (max < k2) {
			max = k2;
		}
		if (max < k3) {
			max = k3;
		}
		if (min > k2) {
			min = k2;
		}
		if (min > k3) {
			min = k3;
		}
		System.out.println("min:" + min + "  ,max:" + max);

7.九九乘法表

for(int i=0;i<10;i++) {
			for(int j=1;j<=i;j++) {
					System.out.print(j+"*"+i+"="+i*j +" ");		
			}
			System.out.println();
		}
  1. 100 ~ 50000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数1324的各位数字之和为 1+3+2+4 等于10(不为5)),并统计满足条件的整数有多少个?
public class test112 {

	public static void main(String[] args) {
//		12、100 ~ 50000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数1324的各位数字之
//		和为	1+3+2+4 等于10(不为5)),并统计满足条件的整数有多少个		
			//调用求和方法
		int j =0;
		for(int i=100;i<50000;i++) {
			if(getSum(i)==5) {
				j++;
			}
		}
//			System.out.println(getSum(2222222));
		System.out.println(j);
		}
		
//		求和的方法
		public static int getSum(int num) {
			int n;//每位上的数
			int sum = 0;//每位上的数之和
			while( num != 0 ) { 
				n = num%10;  //取个位数
				sum += n;  
				num = (num-n)/10;  
			}		
			return(sum);
		}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值