zoukankan      html  css  js  c++  java
  • Java练习题

    1、判断101-200之间有多少个素数,并输出所有的素数。

    判断素数的方法:用一个数分别除去2到sqrt(这个数),如果能被整除,则说明这个数不是素数,反之则是素数。

     1 public class lianxi01 {
     2     public static void main(String[] args) {
     3         int count = 0;
     4         for (int i = 101; i <= 200; i++) {
     5             for (int j = 2; j <= i; j++) {
     6                 if (i % j == 0 && i == j) {
     7                     count++;
     8                     System.out.println(i);
     9                 } else if (i % j == 0 && i != j) {
    10                     break;
    11                 }
    12             }
    13         }
    14                 System.out.println("素数个数是:" + count);
    15     }
    16 }

    2、打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。

    例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

    分析:利用for循环控制100-999个数,每个数分解成百位、十位、个位。

     1 public class lianxi02 {
     2     public static void main(String[] args) {
     3         int i,j=0,k;
     4         int bai,shi,ge;
     5         for(i=100;i<1000;i++){
     6             bai=i/100;        //求百位数
     7             shi=(i/10)%10;    //求十位数
     8             ge=(i%100)%10;    //求个位
     9             k=bai*bai*bai+shi*shi*shi+ge*ge*ge;
    10             if(i==k){
    11                 System.out.println(i);
    12                 j++;
    13             }
    14         }
    15         System.out.println("符合条件的水仙花数为:"+j);
    16     }
    17 }

    3、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5   

    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:   

    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   
    (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。   
    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

     1 package com.clong.test;
     2 
     3 import java.util.Scanner;
     4 
     5 public class lianxi03 {
     6     public static void main(String[] args) {
     7         for (;;) {
     8             Scanner sc = new Scanner(System.in);
     9             int a, b;
    10             int j = 0;
    11             System.out.println("请输入一个整数:");
    12             a = sc.nextInt();
    13             b = a; // 保存原数
    14             int age[] = new int[10]; // 用来存质因数
    15             for (int i = 2; a != 1;) {
    16                 if (a % i == 0) {
    17                     age[j] = i;
    18                     j++;
    19                     a = a / i;
    20                 } else {
    21                     i++;
    22                 }
    23             }
    24             System.out.print(b + "=");
    25             for (int i = 0; i < j; i++) {
    26                 System.out.print(age[i]);
    27                 if(i<j-1)//判断是否是最后一位质因数,不是输出*
    28                     System.out.print("*");
    29             }
    30             System.out.println();
    31         }
    32     }
    33 }
    View Code

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

     1 public class lianxi04 {
     2     public static void main(String[] args) {
     3         int abcCount = 0; // 英文字母个数
     4         int spaceCount = 0; // 空格键个数
     5         int numCount = 0; // 数字个数
     6         int otherCount = 0; // 其他字符个数
     7         Scanner scan = new Scanner(System.in);// 扫描器接受控制台的输入信息
     8         System.out.println("输入一组字符");
     9         String str = scan.nextLine(); // 取出控制台的一行信息,也就是你输入的信息
    10         char[] ch = str.toCharArray(); // 把取道的字符串变成一个char数组
    11         for (int i = 0; i < ch.length; i++) {
    12             if (Character.isLetter(ch[i])) {    // 判断是否字母
    13                 abcCount++;
    14             } else if (Character.isDigit(ch[i])) {    // 判断是否数字
    15                 numCount++;
    16             } else if (Character.isSpaceChar(ch[i])) {    // 判断是否空格键
    17                 spaceCount++;
    18             } else {    // 以上都不是则认为是其他字符
    19                 otherCount++;
    20             }
    21         }
    22         System.out.println("字母个数:" + abcCount);
    23         System.out.println("数字个数:" + numCount);
    24         System.out.println("空格个数:" + spaceCount);
    25         System.out.println("其他字符个数:" + otherCount);
    26     }
    27 }
    View Code

     5、s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

    例如2+22+222+2222+22222=24690(此时共有5个数相加),几个数相加有键盘控制。

     1 public class lianxi05 {
     2     public static void main(String[] args) {
     3         long a,b=0,sum=0;
     4         Scanner sc=new Scanner(System.in);
     5         System.out.println("输入数字a的值:");
     6         a=sc.nextLong();
     7         System.out.println("输入相加的项数:");
     8         int n=sc.nextInt();
     9         int i=0;
    10         while(i<n){
    11             b=b+a;
    12             sum+=b;
    13             a=a*10;
    14             ++i;
    15         }
    16         System.out.println(sum);
    17     }
    18 }

    6、一个数如果恰好等于它的因子之和,这个数就称为 “完数”

    例如6=123. 编程找出1000以内的所有完数。

     1 public class lianxi06 {
     2     public static void main(String[] args) {
     3         int sum=0;
     4         for(int i=1;i<1000;i++){
     5             int a=0;
     6             for(int j=1;j<i;j++){
     7                 if(i%j==0)
     8                 a+=j;
     9             }
    10             if(a==i){
    11                 System.out.println(a);
    12                 sum++;
    13             }
    14         }
    15         System.out.println("共有完数:"+sum);
    16     }
    17 }

    6
    28
    496
    共有完数:3

    7、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

     1 public class lianxi07 {
     2     public static void main(String[] args) {
     3         for(int x=1;x<10000;x++){
     4             if(Math.sqrt(x+100)%1==0){
     5                 if(Math.sqrt(x+168)%1==0){
     6                     System.out.println(x + "加100是一个完全平方数,再加168又是一个完全平方数");
     7                 }
     8             }
     9         }
    10     }
    11 }

     8、输出9*9口诀

     1 public class lianxi08 {
     2     public static void main(String[] args) {
     3         for(int i=1;i<10;i++){
     4             for(int j=1;j<i;j++){
     5                 System.out.print(j+"*"+i+"="+j*i+"   ");
     6                 if(j*i<10){
     7                     System.out.print(" ");
     8                 }    
     9             }
    10             System.out.println();
    11         }
    12     }
    13 }
  • 相关阅读:
    数据结构算法练习(一)
    crontab详解
    git遇到问题
    docker容器管理
    docker及服务器遇到的坑
    shell study
    低级终端IO
    高级IO
    信号处理
    UNIX日期与时间
  • 原文地址:https://www.cnblogs.com/longc/p/5946096.html
Copyright © 2011-2022 走看看