小白也过1024节

自学前十章练习题1(总结)

  1. 5、从键盘接收一个正整数,该正整数作为行数,输出以下图形

    *

    ***

    *****

    *******

    *********

    例如:输入5,则打印如上图5行。

    //金字塔模型
    public class No1{
    
    public static void main(String[]args){
    				java.util.Scanner s=new java.util.Scanner(System.in);
    			  	System.out.print("请输入任意一个正整数:");//接收整数
    		int hangshu=s.nextInt();
    		//n行循环n次
    for (int i=1;i<=hangshu ;i++ )//外层循环控制行数
    	  
    	  {
    	   for (int j=0;j<hangshu - i;j++ )//空格的控制
    	   {
    		   System.out.print(" ");//中间留个空格///不加ln 表示不换行
    	   }
    	   //输出*循环 
    	   for (int k=0;k < i * 2 - 1 ;k++ )
    	   {
    		   System.out.print("*");
    	   }
    
         //以上两个for循环结束后,表示一行就结束了
    		   //在这里执行换行
    	  System.out.println();
    }
    		
    }
    }
    
    
    
  2. 题目:一个5位数,判断它是不是回文数。即12321是回文数,
    个位与万位相同,十位与千位相同

    /*
    //这是一个多个if语句组成的回文数判断,升级版在下面
       万位:x/10000
       千位:x/10000%10
       百位:x/10000%10%10
       十位:x/10%10
       个位:x%10
       */
    public class No2
    {
    	public static void main(String[]args){
    
           				java.util.Scanner s=new java.util.Scanner(System.in);
    			  	System.out.print("请输入任意一个五位数:");//接收整数
    		int x=s.nextInt();
    		//先判断输入的数是五位数
    		if (x-100000 > 0)//输入的数字不能大于五位
    		{
    			System.out.println("输入的数字不在范围内,请重新输入!!!");
    		}else if (x - 10000 >0)//在五位数内
    		{		
    
    		 if ((x % 10)==(x / 10000)&&(x / 1000 % 10)==(x / 10 % 10))//回文数要求
    		 {
    			 System.out.println("x=" + x + "是回文数");
    			 		
    		    }else if(x - 10000 <0){
    			 System.out.println("您输入的不符合要求!!");
    		
    	          }else{
    
                 System.out.println("不是回文数");
    			 return;
    			  }
           }
    	}
    }
    /*
    目前我还没学数组知识,能力有限,
       就只能默认输入的数字为五位且符合要求!!!!
    
    public class No2
    {
    
    public static void main(String[]args){
    
           				java.util.Scanner s=new java.util.Scanner(System.in);
    			  	System.out.print("请输入任意一个五位数:");//接收整数
    		int x=s.nextInt();
    		for (int a = 10000;a < 99999 ;a++ )
    		{
    			 if ((x % 10)==(x / 10000)&&(x / 1000 % 10)==(x / 10 % 10))//回文数要求
    		 {
    			 System.out.println("x=" + x + "是回文数");
    			 break;
    		}else{
    			System.out.println("不是回文数!!!");
    			return;
    			}
         	}
    	}
    }
    */
    
    
  3. 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,
    还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了
    一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上
    想再吃时,只剩下一个桃子了。求第一天共摘了多少

    /*
      逆推思维:(好做)
      day 10 = 1;
     假设第九天剩下2个,则第十天吃的是(2/2+1)=2  发现全部吃完没有剩下
     ...
           假设第九天剩下4个  (4/2+1)=3  那吃了3个还剩下1个满足要求
    	   所以
      */
      public class No3
      {
    	  public static void main(String[]args){
        int y = 1;//第十天剩下的桃子
    	for (int i = 10;i > 0 ;i++ )
    	{
    		m = 2 * m + 1 + 1;//吃前一天的一半多一在加剩下的一个
    
    	}
        System.out.println(m);
    
    	  }
      }
    
  4. 题目:计算 1! + 2! + 3! + 4! +… + 10!
    说明:4! 表示4的阶乘。4的阶乘是:1 * 2 * 3 * 4

    //惊喜还是要得:下面键盘接受~~~~
    public class No4
    {
    	public static void main(String[]args){
    		int sum =1;
    	for (int i =1;i<=10 ;i++ )
    	{
    		sum*=i;
    	}
    	
       System.out.println(sum);
    
    	}
    }
    /*
    public class No4
    	{
    
    public static void main(String[]args){
    				java.util.Scanner s=new java.util.Scanner(System.in);
    				System.out.println("请输入任意一个数:");
    		int num=s.nextInt();
    	
    		int a=1;
    		int b=1;
    		while (num>=a)
    		{
    			b=b*a;
    			a++;
    	
    		}
    	System.out.println("该数的阶乘为:"+b);
        }
    	
    }
    */
    
  5. 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半再落下,
    求它在第10次落地时,共经过多少米

    public class No5
    {
    	public static void main(String[]args){
    		float height =100;//高度初始值100
    		float N = 0;//初始弹过的路程
        for (int i = 0;i<10 ;i++ )
        {
    		N = N +height;
    		height = height/2;//弹的路程满足
    }
    		 
        System.out.println("第十次小球经过的路程:"+ N+"米");
    	//System.out.println("第十次小球的高度:"+ height+"米");
    	}
    }
    
  6. 一个四位数,恰好等于去掉它的首位数字之后所剩的三位数的3倍,这个
    四位数是多少?

    public class No6
    {
    	public static void main(String[]args){
    		for(int num = 1000; num <= 9999; num++){//保证是四位数
    			int  qianwei = num/1000;//去首位
    			if(num == (num-qianwei*1000) * 3){
    				System.out.println("该四位数为:" + num);
    			}
    		}
    
    	}
    }
    
  7. 这里加一些程序选择题目

    int a = 0;
    while (a < 5) {
      switch(a) {
      case 0:
      case 3: a = a + 2;
      case 2: a = a + 3;
      default: a = a + 5;
      }
    }
    System.out.println(a);
    

    输出a的值: 10

    int i=0, j=9;
    do {
      if (i++ > --j) break;
    } while (i < 4);
    System.out.println("i=" + i + " and j=" + j)
    

    输出i跟j的值:: i=5 j=4

    for (int i=0;i<10;i++) {
      if (i == 10-i) break;
      if (i % 3 != 0) continue;
      System.out.print(i + " ");
    }
    

    break :跳出循环 continue:执行下一个

    第一个if结束时i的值为01234 第二个在if条件判断下i的值分别为0 3; 如果第二个if条件设置成 if(i % 3 ==0)则输出的i值为124.

  8. 编写一个方法,求整数n的阶乘,例如5的阶乘是12345
    思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。

     public class No7
           {
    		   public static void main(String[]args){
                 
    			 int Zhi=JieCheng(5);//改变数字,就能求出该数字的阶乘
    			 System.out.println(Zhi);//120
    
    		   }
    		   public static int JieCheng(int n){
    			   int result =1;
    			   for (int i=n;i>1 ;i-- )
    			   {
    				
    				 result =result*i;//也可以result*=i;
    			 
    		   }
    		   return result;
           } 
    }
    /*
       //在之前的方法中
       */
    /*
         public class No7
    {
    	public static void main(String[]args){
    		int sum =1;
    	for (int i =1;i<=5 ;i++ )//5的阶乘
    	{
    		sum*=i;
    	}
    	
       System.out.println(sum);
    
    	}
    }
    */
    
    
  9. 编写一个方法,输出大于某个正整数n的最小的质数。
    思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。

    /*
       题意:
       	    输出大于某个正整数n的最小的质数
    		比如:这个正整数n是2
    		也就是要输出:大于2的最小的质数,结果就是3
    
    		比如:这个正整数n是9
    		也就是要输出:大于9的最小的质数,结果就是11
    
    		大于11的最小的质数是:13
    	
    	思路:
    		首先,系统一定会先给你一个“正整数n”,然后你基于
    
            这个n往后++,每加1得到的新数m判断一下是否为质数。
    */
           
    public class No8
    {
    	public static void main(String[]args)
    	{
           ShuChuZuiXiaoZhiShu(11);//可以改数字
    	}
    	public static void ShuChuZuiXiaoZhiShu(int n){
             while (true)
       {
    	     n++;
    	   //判断此时的n是否为质数
    	   boolean flag = ZhiShu(n);
    	   if (flag)
    	   {
    		   System.out.println(n);
                break;
    	   }
       }
    }
    public static boolean ZhiShu(int num){
    	for (int i = 2;i<num ;i++ )
    	{
    		if (num%i==0)//质数能被1和自身整除所以i从2开始
    		{
    			return false;
    		}
    	}
    
        return true;//是质数
    	}
    }
    
  10. 第一题:设计日期类,每个日期对象都可以描述年月日信息。(两个public class 在两个子文件里,必须在同一个位置,下同)

    public class No101
    {
    	//年
    	int N;
    	//月
    	int Y;
    	//日
    	int R;
    }
    
    
    /*
         设计日期类,每个日期对象都可以描述年月日信息。
     */
    
    public class  No10
    {
         public static void main(String[]args){
           No101 num1 = new No101();
    	  //对象的引用
    
    
         //实例变量赋值
    	   num1.N = 2020;
    	   num1.Y = 10;
    	   num1.R = 21;
    	     //实例变量的访问(引用.属性名)
    	   System.out.println(num1.N+"年");
    	   System.out.println(num1.Y+"月");
    	   System.out.println(num1.R+"日");
    	 }
    }
    
    
  11. 设计男人类,每个男人都有身份证号、姓名、性别、女人。设计女人类,每个女人都有身份证号、姓名、性别、男人。

    public class No111
    {
    	String id;//身份证号
    	String name;//姓名
    	boolean sex;//性别
    }
    
    
    public class No11
    {
    	public static void main(String[]args){
       No111 num1 = new No111();
    
    
       num1.id = "010000000000000001";//这里身份证号类型我设置成String类,
       num1.name = "ZhangSan";
       num1.sex = true;//ture 表示男反而..
             //输出相应信息
          System.out.println("身份证号:"+num1.id);
    	   System.out.println("姓名:"+num1.name);
    	   System.out.println("性别:"+num1.sex);
        
    	 No111 num2 = new No111();
       num2.id = "010000000000000000";
       num2.name = "WangHan";
       num2.sex = false;
    
           System.out.println("身份证号:"+num2.id);
    	   System.out.println("姓名:"+num2.name);
    	   System.out.println("性别:"+num2.sex);
    	}
    }
    
  12. 一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程

    找出1000内所有的完数。

    public class No13
    {
    	public static void main(String[]args){
       //一步:先2到1000,每个数字都取出来
       for (int i=2;i<=1000 ;i++ )
       {
    	   //二步:在拿到i以后,判断是否为完数
    	      /*因子:理解
    		  10%1==0
             10%2==0
    		  10%5==0
    		   不算本身
    		   1   是否为完数?
              不是 所以从2开始判断
    		  */
    		  //找出数字的因子
    		   int sum=0;//变量sum声明位置一定要注意
          for (int j=1 ;j<= i/2 ;j++ )//j<i/2    输出结果就得24
    		  /*
    	        假设:判断数字6是否为完数
    			j取到的值是:1   2  3 4 5
                   但实际j取到1 2 3就行
    			   发现是取到一半了
    			   */
    	   {	  
          if (i % j==0)//j为因子,j累计追加
          {
               sum +=j;
          }
          
          }
       if (i==sum)
    	   //i是一个完数
    
       {
    	   System.out.println(i);
                }
           }
        }
    
    }
    
  13. 辗转相除法求两数最大公约数(能够同时整除他们的最大正整数)

    辗转相除法:

    • 用较大数除以较小数,
    • 再用出现的余数(第一余数)去除除数,(要大数除以小数)
    • 再用出现的余数(第二余数)去除第一余数,(要大数除以小数)
    • 如此反复,直到最后余数是0为止。

    如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数.

    public class No15
    {
    	public static void main(String[]args){
             java.util.Scanner sc = new java.util.Scanner(System.in);
        int num = 0;
        int num1 = 0;
        int temp = 0;
        num = sc.nextInt();
        num1 = sc.nextInt();
        sc.close();
        if (num < num1) {
    		//保证num的值大于num1,即num(被除数)/(除号)num1(除数)=商......余数
          temp = num;
          num = num1;
          num1 = temp;
        }
        while (num1 != 0) {
    		//当除数=0时,就说明我们已找到两个数的最大公约数
          temp = num % num1;
    	  //得到两个数的余数
          num = num1;
          num1 = temp;
        }
        System.out.println(num);
           }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值