多重循环 方法和递归练习题+参考答案

来源:互联网 发布:winscp mac版下载 编辑:程序博客网 时间:2024/05/21 10:40

1.判断1-100之间有多少个素数并输出所有素数。

(将判断一个数是否是素数的功能提取成方法,在循环中直接调用即可)

public static void main(String[] args) {//循环判断1-100有多少素数int sum=0;for (int i = 2; i <= 100; i++) {if(isSs(i)){sum++;}}System.out.println("一共有"+sum+"个素数");}// 写一个方法实现一个判断一个数是否是素数的功能// 是素数就返回true 不是我就返回falsepublic static boolean isSs(int n) {// 实现功能// 判断素数的方法boolean flag = true;// 先认为就是素数for (int i = 2; i < n; i++) {if(n%i==0){flag = false;// 证明他不是素数break;}}if(flag){System.out.println(n);}return flag;}
2.定义方法:打印指定行和列的矩形
//打印指定行和列的矩形public static void printJx(int h, int l) {for (int i = 1; i <= h; i++) {for (int j = 1; j <= l; j++) {System.out.print("★");}System.out.println();}}
public static void main(String[] args) {printJx(5, 20);}

3.编写Java程序,实现接收用户输入的正整数,输出该数的阶乘。要求:限制输入的数据在1-10之间,无效数据进行提示,结束程序。要求使用递归和循环分别实现。

输出结果如:4!=1*2*3*4=24


public static void Jc(){Scanner sc = new Scanner(System.in);System.out.println("请输入你要计算的阶乘:");int k = sc.nextInt();if(k<1||k>10){System.out.println("无效输入");return;}else{String s =""; //1*2*3*4...for(int i=1;i<=k;i++){if(i==k){s+=i;}else{s+=i+"*";}}int r  = dg(k);System.out.println(k+"!="+s+"="+r);}}public static int dg(int n){if(n==1){return 1;}else{return n*dg(n-1);}}}
public static void main(String[] args) {
Jc();}

4.编写递归算法程序:斐波那契数列的第40位数是多少。(递归)
public class Zuoye3 {public static long fbn(int n){if(n==0){return 0;}else if(n==1){return 1;}else if(n>1){return fbn(n-1)+fbn(n-2);}else{return -1;}}public static void main(String[] args) {long a=fbn(40);System.out.println(a);}}
5.使用递归求阶层
public class DgDemo {public static long dg(int a){if(a==1){return 1;}else{return a*dg(a-1);}}public static void main(String[]args){long b=dg(5);System.out.println(b);}}

 6.输入三个班,每班10个学生的成绩,求和并求平均分

import java.util.Scanner;public class Zuoye4 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int sum = 0;for (int i = 1; i <= 3; i++) {System.out.println("这是第" + i + "个班");for (int j = 1; j <= 10; j++) {System.out.println("这是第" + i + "个班第" + j + "个同学的成绩");double a = sc.nextDouble();sum += a;}System.out.println("总和是" + sum);System.out.println("平均数是" + sum / 30);}}}