JAVA 编程练习2

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   

/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /

import java.util.*;
class gongyueshu{
public int f(int x,int y){
       int temp,big,small;
       if(x<y){
    	   small=x;
    	   big=y;
       }
       else{
    	   small=y;
    	   big=x;
       }
       while(small!=0){
    	   if(big==small)
    		   return big;
    	   else{
    		   int k=big%small;
    		   big=small;
    		   small=k;
    	   }
       }
       return big;
}
}
public class lianxi {
	public static void main(String[] args) {
		 int big=0,samll=0,temp;
		Scanner input=new Scanner(System.in);
		System.out.println("输入正整数m:");
          int m =input.nextInt();
        System.out.println("输入正整数n:");
          int n =input.nextInt();
          gongyueshu c =new gongyueshu();
          int a = c.f(m,n);
          int b = m * n / a;
          System.out.println("最大公约数: " + a);
          System.out.println("最小公倍数: " + b);

	}
}

创建一个类 并且在类中创建一个寻找最大公约数的方法 先在类中 比较 m n 的大小 较大的值赋值给big 较小的值赋值给 small

用一个while循环 判断除数不为0 即为较小值 不为0  就可以用较大值整除较小值 取得得余数做为第二次循环的较小值 而第二次循环的较大值 是上一次循环的较小值  这个可以参考 碾转相除法   最小公倍数就是两数之积除以最大公约数

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.*;
public class lianxi {
	public static void main(String[] args) {
		int abcCount=0;//英文字母个数
		  int spaceCount=0;//空格键个数
		  int numCount=0;//数字个数
		  int otherCount=0;//其他字符个数
		  Scanner scan = new Scanner(System.in);//扫描器接受控制台的输入信息
		  System.out.println("输入一组字符");
	      String str=scan.nextLine();//取出控制台的一行信息,也就是你输入的信息
	      char[] ch = str.toCharArray();//把取道的字符串变成一个char数组
		     for(int i=0;i<ch.length;i++){
		      if(Character.isLetter(ch[i])){
		       //判断是否字母
		       abcCount++;
		      }
		      else if(Character.isDigit(ch[i])){
		       //判断是否数字
		       numCount++;
		      }
		      else if(Character.isSpaceChar(ch[i])){
		       //判断是否空格键
		       spaceCount++;
		      }
		      else{
		       //以上都不是则认为是其他字符
		       otherCount++;
		      }
		     }
		     System.out.println("字母个数:"+abcCount);
		     System.out.println("数字个数:"+numCount);
		     System.out.println("空格个数:"+spaceCount);
		     System.out.println("其他字符个数:"+otherCount);
		 }
	}

里面用了 几个java自带的方法   String.toCharArray 方法 ,作用:将字符串转换为字符数组。 Character.isSpaceChar(ch[i])  判断字符是否为空白字符 即空格    Character.isLetter(ch[i]) 判断是否是字母   Character.isDigit(ch[i]) 判断是否是数字  用这几个JAVA自带的方法 比较简便 

如果按C语言来写的话  Character.isSpaceChar(ch[i]) 相当于  if(ch[i]==' ')   Character.isLetter(ch[i])  相当于if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z')   Character.isDigit(ch[i]) 相当于 if(ch[i]>=0&&ch[i]<=9)

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。   

import java.util.*;
public class lianxi {
	static long sum=0,s=0;
	public static void main(String[] args) {
	    Scanner input =new Scanner(System.in);
	    System.out.println("请输出一个数");
	    int a=input.nextInt();
	    System.out.println("需要多少位数相加?");
	    int n=input.nextInt();
	      for(int i=0;i<n;i++){
	    	  sum+=(long) (a*Math.pow(10, i));
	    	  System.out.print(sum);
	    	  if(i!=(n-1))
	    		  System.out.printf("+");
	    	s+=sum;
	      }
	      System.out.print("="+s);
		 }
	}



题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程    找出1000以内的所有完数。 

import java.util.*;
public class lianxi {
	public static void main(String[] args) {
	     for(int i=1;i<1000;i++){
	    	 int sum=0;
	    	 for(int j=1;j<=i/2;j++){
	    		 if(i%j==0){
	    			 sum+=j;
	    		 }
	    	 }
	      	 if(sum==i){
	          	   System.out.println(i+"是完数");
	    	 }
             }
		 }
	}

用两个for循环 第一个控制循环1-1000范围 第二个循环是寻找因子   然后把所找出得的因子累加 看看是否能等于得数i 如果等于i就是完数


题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

public class lianxi {
	public static void main(String[] args) {
            double h=100;
            double s=0;
           for(int i=1;i<=10;i++){
        	   s=s+2*h;
        	   h=h/2;
           }
           s=s-100;
         System.out.println("第十次落地时经过"+s+"米");
         System.out.println("第十次反弹"+h+"米");
		 }
	}




猜你喜欢

转载自blog.csdn.net/qq_41398448/article/details/80723205
今日推荐