编程练习题(java)
2012-07-07 17:34
274 查看
这是刚学编程语言练习经典题目:
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
【程序4】
题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下
的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
public class FibonacciSequence { public static void main(String[] args) { //fibonacciWithNoRecursion(); for(int i=1; i<=12; i++){ int result = fibonacciRecursion(i) * 2; System.out.println("第"+ i +"个月"+ result ); } /* for(int i=1; i<=12; i++){ int result = warpprFibonacciRecursion(i) * 2; System.out.println("第"+ i +"个月"+ result ); } */ } //1. private static void fibonacciWithNoRecursion() { int first=1, second=1; int sum=0; System.out.println("第"+ first +"个月"+ 2 ); System.out.println("第"+ second +"个月"+ 2 ); for(int i=3; i<=12; i++){ sum = first + second; first = second; second = sum; System.out.println("第"+ i +"个月"+ sum * 2 ); } } //2. private static int fibonacciRecursion(int nCount) { if(nCount == 0){ return 0; }else if(nCount == 1 || nCount == 2){ return 1; }else{ return fibonacciRecursion(nCount-1) + fibonacciRecursion(nCount-2); } } //3. private static int warpprFibonacciRecursion(int nCount){ return fibonacciRecursion(nCount, 1, 1); } private static int fibonacciRecursion(int nCount,int first, int second){ if(nCount == 1 || nCount == 2 ) return second; else return fibonacciRecursion(nCount-1, second, first+second); } }
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
public class Prime{ public static void main(String[] agrs){ for(int i = 101; i <= 200; i++ ){ double $length = Math.sqrt(i); boolean flag = true; for(int j=2; j<= $length; j++){ if(i%j == 0) flag = false; } if(flag == true){ System.out.println(i); } } } }
【程序3】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public class Xianhua { public static void main(String args[]){ Xianhua x=new Xianhua(); x.f(); } public void f(){ int a,b,c,d; for ( int i=100;i<=999 ;i++ ) { a=i/100; b=(i/10)%10; c=i%10; d=a*a*a + b*b*b + c*c*c; if(i==d) System.out.println(i); } } }
public class TestFuck{ public static void main(String args[]){ for(int i=100;i<1000;i++){ String s = String.valueOf( i); int[] j=new int[3]; for(int k=0;k<3;k++) j[k]= s.charAt(k)- '0'; if( i== ( j[0]*j[0]*j[0] + j[1]*j[1]*j[1] + j[2]*j[2]*j[2])) System.out.print(i+" "); } } }
public class test{ public static void main(String args[]){ for(int i=100;i<1000;i++){ String s = String.valueOf( i); int[] j = new int[3]; for(int k=0;k<3;k++) j[k]= s.charAt(k)- '0'; if( i== (Math.pow(j[0], 3) + Math.pow(j[1],3) + Math.pow(j[2],3))) System.out.print(i+" "); } } }
【程序4】
题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
import java.util.*; public class Decomposition { public static void main(String[] args) { ArrayList<Integer> $array=new ArrayList<Integer>(); Scanner sc=new Scanner(System.in); System.out.println("请输入一个正整数:"); int n = sc.nextInt(); $array=DecompositionOfPrimeFactors(n, $array); System.out.print(n+"="); for(int i=0;i<$array.size();i++){ if(i!=$array.size()-1) System.out.print($array.get(i)+"*"); else System.out.print($array.get(i)); } } public static ArrayList<Integer> DecompositionOfPrimeFactors(int $int, ArrayList<Integer> $array){ if($int <= 3){ $array.add($int); }else{ for(int i=2; i<=$int; i++){ if($int % i == 0){ $array.add(i); $int /= i; if($int != 1) $array = DecompositionOfPrimeFactors($int, $array); break; } } } return $array; } }
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下
的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
import java.util.*; public class TernaryOperator{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int score = scanner.nextInt(); char result = (score >= 90) ? 'A': (score < 60) ? 'C': 'B'; System.out.println(result); } }
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
import java.util.*; public class GCD_LCM{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); System.out.println("求最小公倍数:" + commonMultiple(n,m)); System.out.println("求最大公约数" + commonDivisor(n,m)); } //求最大公约数 public static int commonDivisor(int n,int m){ //辗转相除是用大的除以小的。如果n<m,第一次相当n与m值交换 while(n%m != 0){ int temp = n%m; n=m; m=temp; } return m; } //求最小公倍数 public static int commonMultiple(int n,int m){ return n*m/commonDivisor(n,m); } }
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
import java.util.*; public class test{ public static void main(String args[]){ int letters=0;//英文字母 int blankSpace = 0;//空格 int $number=0; //数字 int otherCharacters=0; //其它字符 Scanner sc = new Scanner(System.in); String strInput = sc.nextLine(); for(int i=0; i< strInput.length();i++){ char currChar = strInput.charAt(i); if((currChar>='a' && currChar<='z') || (currChar>='A' && currChar<='Z')){ letters++; }else if(currChar==' '){ blankSpace++; }else if(currChar>='0' && currChar<'9'){ $number++; }else{ otherCharacters++; } } System.out.println("英文字母:" + letters); System.out.println("空格:" + blankSpace); System.out.println("数字:" + $number); System.out.println("其它字符:" + otherCharacters); } }
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
import java.util.*; public class test{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); System.out.println("求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加)"); System.out.println("请输入a:"); String a = sc.nextLine(); System.out.println("请输入表达式右侧的项数:"); int $length = sc.nextInt(); int sum = 0; for(int i=1; i <= $length; i++){ sum += getIntByIndex(i, a); } System.out.println("s=" + sum); } private static int getIntByIndex(int index, String a){ StringBuilder sb = new StringBuilder(); for(int i=0; i< index; i++){ sb.append(a); } return Integer.parseInt(sb.toString()); } }
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
import java.util.*; public class test{ public static void main(String args[]){ int i,j,sum; // i为因数,sum为因数之和。 for(j=2;j<=1000;j++){ sum=0; // 在此处给sum赋值,刚开始我在上面就赋值,出现程序运行无结果 for(i=1;i<j;i++){ if(j%i==0) sum=sum+i; // 将因数相加 } if(sum==j){ System.out.print(j+"是完数,因数是:"); for(i=1;i<j;i++){ if(j%i==0) System.out.print(i+" "); } System.out.println(); } } } }
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
import java.util.*; public class test{ public static void main(String args[]){ double height=100.0; for(int i=0; i<10; i++ ){ height/=2; } System.out.println(height); }
import java.util.*; public class test{ public static void main(String args[]){ double $height = getHightByCount(10, 100.0); System.out.println($height); } private static double getHightByCount(int nCount, double height){ if(nCount == 0) return height; else return getHightByCount(nCount-1, height/2); } }
相关文章推荐
- JAVA练习题选择编程
- 50道JAVA基础编程练习题
- java基础编程练习题
- Java语言程序设计-基础篇-第八版-编程练习题-第九章
- java编程---3.2 (关于String的练习题) 统计字符串中每个字符的个数,例如:把aaaabbaaccbb变成a6b4c2
- JAVA基础编程练习题--50道之13
- JAVA基础编程练习题--50道
- 50道JAVA基础编程练习题 - 题目
- java的50道基本编程练习题
- 50道JAVA基础编程练习题
- Java语言程序设计基础篇原书第十版第四章编程练习题答案
- 50道JAVA基础编程练习题
- 50道Java基础编程练习题
- Java语言程序设计基础篇原书第十版第六章编程练习题答案
- Java语言程序设计基础篇原书第十版第二章编程练习题答案
- 6、50道JAVA基础编程练习题跟答案
- Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
- java编程---3.1 (关于String的练习题) 将字符串中的字符按需求等分,例如:把aqzxswerdcvfr变成AQZX-SWER-DCVF-R
- Java语言程序设计-基础篇-第八版-编程练习题-第三章
- Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答