Java经典练习题_Day05
一、 选择题
1.下列各项中的各项定义正确的是:(ACD)
A. public static void m(){}
B. public void static m(){}
C. public static int m(){return 1.0;}
D. public static double m(){return 'a';}
E. public static m(){}
2.对于代码:(ACD)
public class Test {
public static int sum(int i, int j){
return i + j;
}
//
}
A. public static int sum(int j, int i){
return i + j;
}
B. public static void sum(int i){
return i * 2;
}
C. public static int sums(int i, int j){
return i + j;
}
D. public static int sum(double i, double j){
return i + j;
}
E. public static char sum(char i, char j){
return i + j;
}
3.对于代码:(C)

结果为:
A. 10 2 3 4 5
B. 1 2 3 4 5
C. 10 2 3 4 5 0 0 0 0 0
D. 1 2 3 4 5 0 0 0 0 0
E. 编译报错
二、 简答题
1、简述方法在定义过程中需要注意的问题
1.方法不能定义在另一个方法里面
2.写错方法名字
3.写错参数列表
4.方法返回值是void,方法中可以省略return不写
return 下面不能写代码
5.方法返回值类型和return后面的数据类型必须匹配
6.方法不能重复定义
7.调用方法时,返回值是void,不能写在输出语句中(返回值为空,无法输出)
2、简述方法的重载
就是方法名相同,方法参数的个数和类型不同,通过个数和类型的不同来区分不同的函数;
方法的重载跟返回值类型和修饰符无关,Java的重载是发生在本类中的,重载的条件实在本类中有多个方法名相同,
但参数列表不同(可能是,参数个数不同参数类型不同)跟返回值无关;
3、请对递归与循环进行比较
相同:
递归与循环都是解决 重复操作的机制
不同:
就算法效率而言,递归算法的实现往往要比迭代算法消耗更多的时间(调用和返回均需要额外的时间)
与存储空间(用来保存不同次调用情况下变量的当前值得栈空间)也限制了递归的深度。
每个迭代算法原则上总可以转换成与它等价的递归算法,反之不然。
递归的层次是可以控制的,而循嵌套的层次只能是固定的,因此递归是比循环更灵活的重复操作机制。
递归算法解题通常有三个步骤:
1.分析问题 寻找递归 找出最大规模问题 与最小规模问题的关系 这样通过递归使问题的规模逐渐变小
2.设置边界、控制递归、找出停止条件 也就是说算法可解的最小规模问题
3.设计函数、确定参数 和其他算法模块一样设计函数中的操作及相关操作
三、 编程题
1、写一个函数add,接收两个整数作为参数,返回这两个整数的和。
import java.util.Scanner;
public class add1 {
public static void main(String[] args) {
System.out.println("请输入两个整数:");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();
System.out.println("两个数的和:"+add(a, b));
}
public static int add(int a, int b) {
int sum = a + b;
return sum;
}
}
2、写一个函数接收一个整数,打印这个整数的所有因子。
import java.util.Scanner;
public class test {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
f(a);
}
public static void f(int s) {
int a = s;
for(int i=1; i<=a; i++) {
if(a % i == 0)
System.out.println(i);
}
}
}
3、写一个函数,接收一个整数n,输出1+2+3+...+n的和。
public class sum {
public static void main(String[] args) {
System.out.println(add(3));
}
public static int add(int n) {
int sum;
if(n==1) {
sum = 1;
return sum;
}
sum = n + add(n - 1);
return sum;
}
}
4、写一个函数,接收一个正整数,输出这个正整数是一个几位数。
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
System.out.println(f(n));
}
public static int f(int n) {
int count = 1;
while(true) {
if(n / 10 != 0) {
n = n / 10;
count++;
}
else
break;
}
return count;
}
}
5、写一个函数,接收一个整数,判断这个整数是否是一个质数。
package s1;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
f(n);
}
public static void f(int n) {
for(int i=2; i<=n; i++) {
if(n % i != 0) {
System.out.println("是质数");
break;
}
else {
System.out.println("不是质数");
break;
}
}
}
}
6、写一个函数计算两点(x1,x2)之间的距离。
import java.util.Scanner;
public class test4 {
public static void main(String[] args) {
System.out.println("请输入两个坐标:");
Scanner s = new Scanner(System.in);
double x1 = s.nextInt();
double x2 = s.nextInt();
System.out.println(f(x1,x2));
}
public static double f(double x1, double x2) {
double sum = x2 - x1;
return sum;
}
}
7、求abc 和xyz。
已知两个完全平方三位数abc 和xyz,其中a、 b、 c、 x、 y、 z 未必是不同的,而ax、 by、 cz 是三个完全平方数。
看不懂题目
8、求3000以内的全部亲密数。
如果整数A 的全部因子(包括1,不包括A 本身)之和等于B,且整数B 的全部因子包括1,不包括B 本身)之和等于A,则称整数A\B 是一对亲密数。
public class AB {
public static void main(String[] args) {
for(int j=1; j<=3000; j++) {
int a = sum(j);
int b = sum(a);
if(b == j && j < a) {
System.out.println(a+" "+b);
}
}
}
public static int sum(int a) {
int sum = 0;
for(int i=1; i<=a/2; i++) {
if(a % i == 0) {
sum += i;
}
}
return sum;
}
}
9、验证哥德巴赫猜想
任何一个大于6 的偶数,都能分解成两个质数的和。要求输入一个整数,输出这个数能被分解成哪两个质数的和。
例如: 14
14=3+11
14=7+7
package Day8_09;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
System.out.println("请输入一个大于6的偶数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
f(n);
}
public static void f(int n){
if(n % 2 == 0 && n > 6){
for(int i=1; i<n; i++){
if(i % 2 != 0) {
for(int j=1;j<n;j++){
if(j % 2 != 0) {
if(i + j == n){
System.out.println(i+" "+j);
}
}
}
}
}
}
}
}
10、输入一个数字n,利用递归求出这个1~n的和。
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
System.out.println("请输入一个数字:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
System.out.println(add(n));
}
public static int add(int n){
if(n == 1)
return 1;
return n + add(n-1);
}
}
11、请使用递归获取斐波那契数列的第n项。
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……
特别指出:第0项是0,第1项是第一个1。
这个数列从第三项开始,每一项都等于前两项之和。
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
System.out.print("请输入一个数字:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
for (int count = 0; count <= n; count++){
System.out.print(f(count)+" ");
}
}
public static int f(int n){
if(n == 1 || n == 0)
return n;
else
return f(n-1) + f(n-2);
}
}
Java经典练习题_Day05的更多相关文章
- Java 经典练习题_Day010
final 变量能被显式地初始化并且只能初始化一次.被声明为 final 的对象的引用不能指向不同的对象.但是 final 对象里的数据可以被改变.也就是说 final 对象的引用不能改变,但是里面的 ...
- Java经典练习题_Day04
一.选择题 1. 下列关于数组的说法正确的是:(A) A. 在Java中数组的长度是可变的 B. 数组中存储的数据的类型是相同的 C. 数组在进行扩容操作的时候源数组的地址不发生改变 D. int[] ...
- Java经典练习题_Day03
一.选择 B D(死循环) E(switch) BC 二.编程 1.读入一个整数,表示一个人的年龄. 如果小于6岁,则输出“儿童”, 6岁到13岁,输出“少儿”; 14岁到18岁, ...
- Java 经典练习题_Day06
面向对象与面向过程的比较 类与对象的关系 成员变量和局部变量 构造方法 this 构造代码块 局部代码块 匿名对象 一. 选择题 1.下列各项中关于面向对象及面向过程的说法错误的是:(BDE) A. ...
- 【视频+图文】Java基础经典练习题(一)输出2-100之间的素数,及素数个数
目录 第一题:判断2-100之间有多少个素数,并输出所有素数. 1.视频讲解: 2.思路分析: 代码讲解:以i=4为例 4.为大家准备了彩蛋: 能解决题目的代码并不是一次就可以写好的 我们需要根据我们 ...
- 【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出
目录 一.视频讲解 二.思路分析 总结: 三.代码+详解+结果 四.彩蛋 能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能 ...
- JAVA经典算法40题及解答
JAVA经典算法40题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...
- Java经典算法四十例编程详解+程序实例
JAVA经典算法40例 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程 ...
- JAVA经典算法40题
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
随机推荐
- js 倒计时 时间戳
功能:传入一个截止时间(unix时间戳),显示倒计时 因为unix时间戳,并不等于js 的new Date().getTime()得到的那一串毫秒数,所以要在JS中使用unix时间戳,必须先转换一下u ...
- codis3.2安装配置中的一些问题
1.参考文档与参考资料问题 安装codis集群之前,我先在网上找资料,然后又到github的项目官方地址找,不得不说,相关的资料不好找,而且找到之后有些东西说的也不是很清楚.由于codis版本迭代的问 ...
- 第1课:接口测试和jmeter总结
接口测试 1. 接口的分类:webService和http api接口 1) webService接口:是按照soap协议通过http传输,请求报文和返回报文都是xml格式,一般要借助工具来测试接口: ...
- 【PL/SQL编程】数据类型说明
1. 数值类型 数值类型主要包括NUMBER.PLS_INTEGER.和BINARY_INTEGER 3种基本类型.NUMBER可以用来存储整数或浮点数,PLS_INTEGER和BINARY_INTE ...
- 利用xcopy在复制文件或文件夹的时候保留其权限
当用 Windows Explorer 复制或移动文件和文件夹时,文件或文件夹上设置的权限可能会发生改变.例如,当在一个 NTFS文件系统卷内或在两个 NTFS 卷之间复制一个文件时,Windows将 ...
- Cannot forward after response has been committed 错误
出现该错误的原因是:页面的跳转控制不好,换句话就是说程序的逻辑控制不好,导致了程序顺序执行的时候多次跳转到同一页面,有的程序员建议用多次使用return语句来返回,但是个人认为最好的还是自己要先理清页 ...
- 用位运算替代js中的常见操作
一.补码 所谓补码就是所有位取反: 例如3的二进制表示是:00000011,那么3的补码就是11111100: 对于-3的二进制表示就是3的补码+1:11111101: 所以二进制的负数就是该数的补码 ...
- 用css和php脚本来使得poscms的list标签顺利输出记录
每次拿到前端给的页面,都会有意想不到的惊喜,因为他们给的页面总是不能很好地契合poscms的模板标签 输出规范,这时候就需要动点脑筋去解决问题了. 拿前两天拿到的一类(对,你没看错,是一类)页面来说吧 ...
- android 几个开源项目
android的几个开源项目ormlite.volley.jsoup.vitamio ksoap2
- linux前奏
1:选典型 2:选稍后自定义安装系统 3: 4: :5:弹出清单 二:装系统 下载linux的网址:https://mirrors.aliyun.com/centos/ 1: 2: 3: 2:如何修改 ...