1、有1,2,2,3,4,5这6个数字,用Java写一个main函数,打印出所有不同的排列,如:512234
要求: '4'不能在第三位, '3'与'5'不能相连
package com.test;
/**
* 6个数字最小组合为122345
* 最大组合为543221
* 去除这中间规则不允许的即可
*/
public class PaiLie {
private static String[] notExistNumber = new String[] { "0", "6", "7", "8", "9" };
private static String[] mustExistNumber = new String[] { "1", "2", "2", "3", "4", "5" };
private static boolean isValidNumber(String str) {
// 检查是否有非法数字
for (String number : notExistNumber) {
if (str.indexOf(number) >= 0) {
return false;
}
}
// 检查是否是这六个数字的组合,不能有222222或者334422等
for (String number : mustExistNumber) {
int temp = str.indexOf(number);
if (temp < 0) {
return false;
} else if ((str.indexOf(number, temp + 1) > temp)
&& str.charAt(temp) != '2') {
return false;
}
}
// 检查4在不在第三位,是返回false
if (str.charAt(2) == '4') {
return false;
}
// 检查是否存在'3'与'5'相连,有返回false
if (str.indexOf("35") >= 0 || str.indexOf("53") >= 0) {
return false;
}
return true;
}
public static void main(String[] args) {
for (int i = 122345; i < 543221; i++) {
if (isValidNumber(String.valueOf(i))) {
System.out.println(i);
}
}
}
}
2、一个数如果恰好等于它的因子之和, 这个数就称为”完数”,例如 6 = 1+2+3。编程找出0-1000以内的所有完数
package com.test;
public class WanShu {
private static boolean isWanShu(int shu){
int sum = 0;
for (int i = 1; i < shu; i++) {
if(shu%i==0){
sum+= i;
}
}
if(sum==shu){
return true;
}else{
return false;
}
}
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
if(isWanShu(i)){
System.out.println(i);
};
}
}
}
3、当 n = 5 时,下列函数的返回值是:(A)
int foo(int n)
{
if(n<2)return n;
return foo(n-1)+foo(n-2);
}
A.5
B.7
C.8
D.1
解析:Result=foo(4)+foo(3)
foo(4)=foo(3)+foo(2)
foo(3)=foo(2)+foo(1)
foo(2)=foo(1)+foo(0)
foo(1)=1
foo(0)=0
所以foo(2)=1,foo(3)=2,foo(4)=3
4、下面程序输出的结果是(A)
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main(String[] args) {
int i = 0;
for (foo('A'); foo('B') && (i < 2); foo('C')) {
i++;
foo('D');
}
}
A. ABDCBDCB
B. ABDCDBCB
C. ABDBCDCB
D. ABDBCDCB
解析:首先,必定是ABDC打头,排除C、D,随后执行foo('B') && (i < 2)这一项,结果为B,可得出结果为A。执行顺序--foo('A')--foo('B')&&true--foo('D')--foo('C')--foo('B')&&true--foo('D')--foo('C')--foo('B')&&false--end