希望能对初学java的朋友有所帮助,共同学习.发现有说得不清楚的地方,欢迎留言询问.
几乎每一道题都附有两种方法,第一种比较简单,所以可能相对来说会好理解一些.第二种算法好得多.来源于原贴答案,原创及答案链接: http://www.cnblogs.com/tonylp
题目 1:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
// int a = 0; // int b = 0; // int c = 0; // for(int i=100 ; i<=999 ; i++) // { // a = i/100; // b = i%100/10; // c = i%10; // if(i == a*a*a+b*b*b+c*c*c) // { // System.out.print(i+"="+a+"+"+b+"+"+c); // System.out.println(); // } // } //答案 // int a, b, c; // int data; // for (int i = 100; i < 999; i++) { // a = i / 100; // b = (i - 100 * a) / 10; // c = i - 100 * a - 10 *b; // data = a*a*a+b*b*b+c*c*c; // if(data == i){ // System.out.println(i); // } // }
题目 2:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
// System.out.println("请输入一个正整数:"); // int num = input.nextInt(); // boolean puanDuan = true; // System.out.print(num+"="); // for(int i= 2; i<num ;i++ ) // { // if(i == num-1) // { // System.out.print(num); // break; // } // if(num%i == 0 ) // { // num /= i; // System.out.print(i+"*"); // i=2; // } // } //答案 // public class resolveNum { // public static final int NUM = 130; // // public static void main(String[] args) { // // TODO Auto-generated method stub // int k = 2; // int num = NUM; // System.out.print(num + "="); // while (num > k) { // if (num % k == 0) { // System.out.print(k + "*"); // num = num / k; // } else { // k++; // } // } // System.out.println(k); // } // }
题目3:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
// int[] a = {1,2,3,4}; // int b = 0 ; // // for(int i = 0 ; i<4 ; i++) // { // for(int j = 0 ; j<4 ; j++) // { // for(int k = 0 ;k<4 ; k++) // { // if(i == j || i == k || j == k) // { // }else // { // System.out.print(a[i]*100+a[j]*10+a[k]); // b++; // System.out.println(); // } // } // } // } // System.out.print(b); //第二种方法 // int a = 0; // int b = 0; // int c = 0; // int num = 1; // for (a = 1; a < 5; a++) { // for (b = 1; b < 5; b++) { // for (c = 1; c < 5; c++) { // if (a != b && a != c && b != c) { // System.out.println("NO." + num + ":" + a + "" + b + "" // + c); // num++; // } // } // } // }
题目4 :一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
完全平方数 :如果一个正整数 a 是某一个整数 b 的平方 .0也是完全平方数
// for(int i = 0 ; i<=100000 ;i++) // { // for(int j = 0 ;j<=1000 ; j++) // { // if((i+100) == j*j ) // { // for(int k=0 ; k<=1000 ; k++) // { // if((i+100+168) == k*k) // { // System.out.println(i); // } // } // } // } // } //答案: Math.sqrt() 开平方方法 // for(int i=0;i<100000;i++){ // if((Math.sqrt(i+100)%1==0)&&(Math.sqrt(i+168+100)%1 == 0)){ // System.out.println(i); // } // }
题目5 :输入某年某月某日,判断这一天是这一年的第几天?
闰年的条件是:一:能被4整除,但不能被100整除的年份(例如2008是闰年,1900不是闰年)
二:能被400整除的年份(例如2000年)也是闰年。
// System.out.println("请输入年份:"); // int year = input.nextInt(); // // System.out.println("请输入月份:"); // int month = input.nextInt(); // // System.out.println("请输入日期:"); // int day = input.nextInt(); // // int[] monthDay = {31,28,31,30,31,30,31,31,30,31,30,31}; // int allDay = 0; // if((year%4 == 0 && year%100 != 0) || (year%400 == 0) ) // { // //闰年 二月29天 // for(int j=0 ; j < month-1 ;j++ ) // { // if(j == 1) // { // allDay += 29; //闰年二月29天 // }else // { // allDay += monthDay[j]; // } // } // }else // { // //不是闰年 二月28天 // for(int i=0 ; i< month-1 ;i++ ) // { // allDay += monthDay[i]; // } // } // //最后加上当月的天数 // System.out.println("今天是这一年的第:"+(allDay+day)+"天"); //答案 // Scanner sc = new Scanner(System.in); // System.out.println("请输入年份:"); // int year = sc.nextInt(); // System.out.println("请输入月份:"); // int month = sc.nextInt(); // System.out.println("请输入天数:"); // int day = sc.nextInt(); // int date = 0; // int arr[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { // arr[1] = 29; // } // for (int i = 0; i < month - 1; i++) { // date += arr[i]; // } // date += day; // System.out.println("天数为:" + date);
题目6 :输入三个整数x,y,z,请把这三个数由小到大输出。
// System.out.println("请输入整数x:"); // int x = input.nextInt(); // System.out.println("请输入整数y"); // int y = input.nextInt(); // System.out.println("请输入整数z"); // int z = input.nextInt(); // // int a = 0; // int b = 0; // int c = 0; // if(x<y && x<z) // { // a = x; // if(y<z) // { // b = y; // c = z; // }else // { // b = z; // c = y; // } // }else if(x<y &&x>z) // { // a = z; // b = x; // c = y; // }else if(x>y && x<z) // { // a = y ; // b = x; // c = z; // }else // { // if(y>z) // { // a = z; // b = y; // c = x; // }else // { // a = y ; // b = z; // c = x; // } // } // System.out.println(a+" "+b+" "+c); //答案 //下面这种方法的确好了太多, 引人深思. // System.out.println("请输入整数x:"); // int x = input.nextInt(); // System.out.println("请输入整数y"); // int y = input.nextInt(); // System.out.println("请输入整数z"); // int z = input.nextInt(); // // int temp = 0; // if(x>y) // { // temp = x; // x = y; // y = temp; // } // if(x>z) // { // temp = x; // x = z; // z = temp; // } // if(y>z) // { // temp = y; // y = z; // z = temp; // } // // System.out.println(x+"<"+y+"<"+z);
题目7:输出9*9口诀。
// for(int i = 1 ; i<10 ; i++) // { // for(int j = 1 ; j<10 ;j++) // { // System.out.print(i+"*"+j+"="+i*j+"\t"); // if(j ==9) // { // System.out.println(); // } // } // } //答案 //同上
题目 8:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,
又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天 剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
// int j=1; // for(int i=0 ; i<10 ;i++) // { // j = (j+1)*2; // } // System.out.println(j);
//答案 同上
题目9 :有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...
求出这个数列的前20项之和。
// double a = 2; // double b = 1; // double c = 0; // // int num = 2/1 ; // for( int i=1 ; i<20 ; i++) // { // c = a; // a = a+b; // b = c; // num += a/b; // } // System.out.println(num+"="+a+"/"+b); //答案 // int[] a = new int[20]; // int[] b = new int[20]; // double sum = 0.0; // a[0] = 2; // a[1] = 3; // b[0] = 1; // b[1] = 2; // for(int i = 2;i<20;i++){ // a[i] = a[i-1]+a[i-2]; // } // for(int j =2;j<20;j++){ // b[j] = b[j-1]+b[j-2]; // } // for(int i =0;i<20;i++){ // sum+=a[i]/b[i]; // } // System.out.println(sum);
题目10:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
完数的意思是将所有因数加起来的和等于这个数.比如28= 1+2+4+7+14
// //num 保存每个因数,最后加起来. // int num = 0; // for(int i = 2;i<1000 ; i++) // { // for(int j=1; j<i ;j++) // { // if(i%j == 0) // { // num+=j; // } // } // if(num == i) // { // System.out.println(i); // } // num = 0; // } //答案 同上
(初学java,博客记录为主,轻喷,错误想必不少,如果您能指出,不胜感激,部分内容非原创,来源于百度)