`

编程题目(一)

阅读更多
1.函数:参数为两个字符串a,b ,判断 b 中是否包含 a ,若包含则返回首次出现的位置
	/**
	 * 判断b中是否包含a,若包含,返回首次出现的位置
	 * @param a 短字符串
	 * @param b 长字符串
	 * @return
	 */
	public static int indexOfSubString(String a ,String b){
		
		int aLength = a.length() ;
		int bLength = b.length() ;
		// a 的长度大于 b ,非法,返回 -1
		if(aLength > bLength){
			return -1 ;
		}
		// b 中不包含 a ,返回 -1 
		if(!b.contains(a)){
			return -1 ;
		}
		// a 等于 b 
		if(aLength == bLength && a.equals(b)){
			return 0 ;
		}
		int index = b.indexOf(a);
		
		return index;
	}



2.兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。初始有一对小兔子,假设所有兔子都不死,那么一年以后可以繁殖多少对兔子?


/**
 * 兔子繁殖问题分析
 * 因为兔子每3个月生一对小兔子,分成三个阶段青年、中年、老年,只有达到老年的兔子才能生一对小兔子
 * 月份	1	2	3	4	5	6	7
 * 老年	0	0	1	1	2	3	5
 * 中年	0	1	0	1	1	2	3
 * 青年	1	0	1	1	2	3	5
 *
 * 总结:
 * 月份/兔子对数	1	2	3	4	5	6	7
 * 				1	1	2	3	5	8	13
 * f1 = 1 , f2 = 1 , f3 = 2 = f1 + f2 ...
 * 进而:
 * f(n) = f(n-1) + f(n-2)
 */
public class RabbitTestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		int month = 4 ; // 定义月数
		int rabbitCount = countRabbit(month);
		System.out.println(rabbitCount);
		
		int rabbitCount2 = rabbitCount2(month);
		System.out.println(rabbitCount2);
	}
	
    /**
     * 计算第N个月有多少只兔子
     * @param monthNum	月数
     * @return
     */
	public static int countRabbit(int monthNum){
		int f1 = 1 ; // 第一个月 1 对
		int f2 = 1 ; // 第二个月 2 对
		int t = 0 ; // 临时变量
		for(int i = 2 ; i < monthNum ; i++){
			t = f2 ; // 记录 f2 的值,f2的值为 f1+f2 ; f1 赋值为 f2 的值
			f2 = f1 + f2;
			f1 = t ;
		}
		return f2 ;
	}
	
    /**
     * 计算第N个月有多少只兔子
     * 递归	f(n) = f(n-1) + f(n-2)
     * @param monthNum	月数
     * @return
     */
	public static int rabbitCount2(int monthNum){
		if(monthNum <= 2){
			return 1 ;
		}
		return rabbitCount2(monthNum - 1)+rabbitCount2(monthNum-2);
	}
}




3.判断 101 ~ 200 之间有多少个素数并输出

/**
 * 求一个范围内的素数的数量
 * 素数:只能被1和自身整除的数
 * 算法:若一个数,依次与 2 到 次数的开方 ,如果能被整除,则说明次数不是素数
 */
public class PrimeNumberTestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		System.out.println(Math.sqrt(5));
		primeNumber();
	}
	
	public static void primeNumber(){
		
		int count = 0 ;
		for(int i = 100 ; i <= 200 ; i++){
			boolean isFlag = false ;
			for(int j = 2 ; j <= Math.sqrt(i) ; j++){
				if(i % j == 0 ){
					isFlag = false ;
					break ;
				}else{
					isFlag = true ;
				}
			}
			if(isFlag){
				count ++ ;
				System.out.println(i);
			}
		}
		System.out.println("count:"+count);
	}

}




4.水仙花数

/**
 *  打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
 */
public class SpecialNumTestMain {

	/**
	 * @param args
	 * 
	 * 需求分解:
	 * 1.三位数,确认范围 100 - 999
	 * 2.各位数字立方和,求各位数字
	 * 
	 */
	public static void main(String[] args) {
		
		for(int index = 100 ;  index <= 999 ; index ++){
		
			int a = index /100 ; // 百位,除法取整
			int b = index / 10 % 10 ; // 十位
			int c = index % 100 % 10  ; // 个位
			
			if(a*a*a + b*b*b + c*c*c == index){
				System.out.println(index);
			}
		}
		
		test();
	}
	
	public static void test(){
		int index = 123 ;
		int a = index /100 ; // 百位
		int b = index / 10 % 10 ; // 十位
		int c = index % 100 % 10 ; // 个位
		System.out.println(a + " " + b + " " + c);
	}

}




5.因数分解

/**
 * 因式分解
 * 输入24,结果为:24=2*2*2*3
 */
public class FactorAnalysisTestMain {

	/**
	 * @param args
	 * 分析:
	 * 给定的数据为 n
	 * 从某个值k 起
	 * 若 k == n ,则结果为 n = 1 * k 
	 * 若 k != n ,
	 * 			若  n % k == 0 , n = k * ... ;n = n/ k ,重复上述判断,直到 n <= k 
	 */
	public static void main(String[] args) {

		int n = 24 ;
		int k = 2 ;
		StringBuilder sb = new StringBuilder(n+"=");
		while (k<=n){
			if(n % k == 0){
				n = n/k;
				sb.append(k).append("*");
			}else{
				k ++ ;
			}
		}
		String s = sb.toString().substring(0,sb.toString().length() - 1);
		System.out.println(s);
	}

}



6.求两个数的最大公约数与最小公倍数

/**
 * 求两个数的最大公约数、最小公倍数
 */
public class NumDoubleTestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int a = 4 ;
		int b = 6 ;
		int c = method1(a, b);
		int d = method2(a, b, c);
		System.out.println("c:"+c+" d:"+d);
	}
	
	/**
	 * 最大公约数
	 * 用较大的数与较小的数取余;直到余数为0位置
	 * @param a
	 * @param b
	 * @return
	 */
	public static int method1(int a ,int b){
		// 如果两个数字相等
		if(a == b){
			return a ;
		}
		if(a > b){
			int temp = a ;
			b = a ;
			a = temp ;
		}
		// 判断大小
		int min = a ;
		int max = b ; 
		// 取余
		while(min != 0){
			int k = max % min ;
			max = min ;
			min = k ;
			System.out.println(k+" "+max+" "+min);
		}
		
		return max ;
	}
	
	/**
	 * 最小公倍数
	 * 
	 * @param a
	 * @param b
	 * @param c
	 * @return
	 */
	public static int method2(int a , int b ,int c){
		return a*b/c ;
	}

}



7.一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序,求1000之内的所有完数

/**
 * 一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序,求1000之内的所有完数
 * 6 = 1 * 2 * 3 
 * 6 = 1 + 2 + 3
 */
public class CombineNumberTestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		for(int i = 1 ; i <= 1000 ; i++){
			
			int sum = 0 ;
			/**
			 * 求此数的所有因数,i/2 缩小比较范围
			 * 所有因数的和是否等于i
			 */
			for(int j = 1 ; j <= i/2 ; j++){
				
				if(i % j == 0){
					sum = sum + j ;
				}
			}
			
			if(sum == i){
				System.out.println(i);
			}
		}
		
	}

}





8.有 1、2、3、4 四个数字能够组成多少互不相同且无重复数字的三位数

/**
 * 有 1、2、3、4 四个数字能够组成多少互不相同且无重复数字的三位数
 */
public class AbsoluteNumberTestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * 误:想偏了,高位为1 ,后续多少中变化;高位为2,......
		 * 正:三位数,三层循环,保证最后一次循环时,三位数各不相同
		 */
		int count = 0 ;
		for(int i = 1 ; i < 5 ; i ++){
			for(int j = 1 ; j < 5 ; j++){
				for(int k = 1 ; k < 5 ; k++){
					if(i != j && i != k && j !=k){
						count ++ ;
						System.out.println(i*100+j*10+k);
					}
				}
			}
		}
		System.out.println(count);
	}

}




分享到:
评论

相关推荐

    IT公司笔试\linux c网络网络编程面试题收集

    Linux C 网络编程面试题收集 本文总结了 Linux C 网络编程面试题,涵盖了基础知识、网络编程、路由等方面的知识点,旨在帮助读者更好地理解和掌握相关知识。 一、基础知识 1. 对于程序 `func(char *str){printf(...

    TCP,UDP,Socket,Http网络编程面试题 47道.pdf

    网络编程面试题总结 本文档总结了网络编程面试题的关键知识点,涵盖了 TCP、UDP、Socket、Http 等网络协议的基础知识、网络编程的基本概念、网络协议的分层结构等内容。通过阅读本文档,读者可以了解网络编程的基本...

    C++编程经典题目

    C++经典编程题目 一、编程基础知识点: 1. 变量声明:在 C++ 中,变量声明需要指定数据类型,例如 `int a;` 声明了一个整型变量 `a`。 2. 算术运算符:C++ 支持多种算术运算符,例如 `+`、`-`、`*`、`/` 等。 3. ...

    计算机编程面试题集合.pdf

    计算机编程面试题集合 标题:计算机编程面试题集合.pdf 描述:计算机编程面试集合.pdf 标签:考试 部分内容: 一、数据结构、算法、计算机基础 1. 使用 JAVA 实现堆栈(Stack)和队列(Queue)操作。 知识点...

    网页编程面试题大全、网络面试

    本资源包含一系列的面试题,旨在帮助求职者全面准备这两个领域的面试。 在网页编程方面,面试题可能涵盖HTML、CSS、JavaScript等基础知识。HTML是构建网页结构的基础,面试中可能会涉及标签的使用、语义化元素的...

    JAVA算法编程题目及答案.doc

    JAVA算法编程题目及答案 本资源提供了50道JAVA算法编程题目及答案,涵盖了算法设计、数据结构、程序设计等多个方面的知识点。以下是对标题、描述、标签和部分内容的详细解释: 标题:JAVA算法编程题目及答案 本...

    Restful风格编程面试题

    Restful风格编程面试题 Restful风格编程简介 Restful风格编程是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更...

    大厂真题及编程题目包含很多算法及真题

    本压缩包文件"python-algorithm-master"显然是一个专注于Python算法的资源集合,它包含了大量面试题和编程挑战,旨在帮助你提升在工作和面试中的竞争力。 首先,让我们深入探讨一下"大厂"这个概念。大厂通常指的是...

    linux c/网络/网络编程面试题收集| 经典实例

    本文收集了一些常见的 Linux C 网络面试题,涵盖了网络编程、 socket 编程、网络协议等方面的知识点。本文将从标题、描述、标签和部分内容中提取知识点,详细解释每个问题的答案。 一、标题和描述 标题:Linux C/...

    Java并发编程面试题八股文

    Java并发编程面试题八股文,包括并发编程基本概念、锁、并发工具类、线程池等基本概念和高级用法。同时也介绍了上述知识点在面试过程中常见的问题及答案。 本材料适用于接下来要参加Java开发工程师岗位的面试同学,...

    并发编程面试题并发编程面试题

    并发编程面试题并发编程面试题

    并发编程面试题.pdf

    问题一:Synchronized用过吗,其原理是什么? 问 题 二 : 你 刚 才 提 到 获 取 对 象 的 锁 , 这 个 “ 锁 ” 到 底 是 什 么 ? 如 何 确 定 对 象 的 锁 ? 问 题 三 : 什 么 是 可 重 入 性 , 为 什 么 说 ...

    JAVA编程面试题全集(100题及答案).zip

    这份"JAVA编程面试题全集(100题及答案)"文档显然是一个宝贵的资源,旨在帮助Java开发者准备面试,提升技能,或者自我测试。以下是基于这个资源可能涵盖的一些关键知识点: 1. **基础语法**:Java的基础语法是任何...

    编程基础面试题总结

    编程基础面试题总结 title:编程基础面试题总结 面向对象编程和面向过程编程是两种不同的编程思想。面向过程编程是一种结构化编程思想,将大的任务分解成小任务,每个小任务由函数实现。程序包含两类基本元素:...

    编程面试题全集

    嵌入式开发.C语言面试题

    java面试题之代码与编程题

    Java面试题之代码与编程题 在这篇文章中,我们将讨论Java面试题中的一些代码与编程题,涵盖Singleton模式、继承时类的执行顺序问题、内部类的实现方式等几个方面。 Singleton模式 Singleton模式是一种常用的设计...

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...

    C++_面试题(服务器编程、网络编程)

    C++面试题(服务器编程、网络编程) C++ 面试题中涵盖了服务器编程和网络编程相关的知识点,以下是对标题、描述、标签和部分内容的详细解释: 1. 类成员指针:在 C++ 中,类成员指针可以指向非静态成员函数或静态...

    BIO,NIO,AIO,Netty面试题 35道.pdfJava并发编程最全面试题 123道.pdfJava并发编程面试题

    Java并发编程面试题 75题.pdf JAVA核心面试知识点整理.pdf Java垃圾收集必备手册.pdf Java虚拟机(JVM)面试题 51道.pdf SpringBoot面试题 30道.pdf Spring面试题(含答案).pdf 多线程面试59题(含答案).pdf 面试...

Global site tag (gtag.js) - Google Analytics