IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> ch03:Java语句 -> 正文阅读

[数据结构与算法]ch03:Java语句

第3章 习题

1.求1!+3!+…+13!。

代码见 实验 showFact()

//1.1递归求阶乘
    private static long factorial(int num){
        if(num == 1){
            return 1;
        }else{
            return num * factorial(num - 1);
        }
    }
    //展示阶乘
    private static void showFact(){
        long sum = 0;
        for(int i = 1; i <= 13; i+=2){
            sum = sum + factorial(i);
        }
        System.out.println("1!+3!+…+13! = " + sum);
    }

    //1.2 循环求阶乘
    private static void factorial_2(){
        long sum = 0, factorial;
        for(int i = 1; i <= 13; i+=2){
            factorial = 1;
            for(int j = 1; j <= i; j++){
                factorial = factorial * j;
            }
            sum = sum + factorial;
        }
        System.out.println("题目1结果:" + sum);
    }

2.分别用do-while和for循环计算1+1/2!+1/3!+1/4!…的前20项之和。

代码见 实验 u3p2()


    //2.前n项和 方法1,for
    private static void u3p2(){
        //for方式
        int j;
        double sum = 0;
        for(int i = 1; i <= 20; i++){
            for (j = 1; j <= i; j++){
                j*=j;
            }
            sum = sum + (1 / (double)j);
        }
        System.out.println(sum);

        //do-while方式
        int j2, i2 = 1;
        sum = 0;
        do {
            j2 = 1;
            do {
                j2 *= j2;
                j2++;
            }while(j2 <= i2);
            i2++;
            sum = sum + 1/(double)j2;
        }while (i2 <= 20);
        System.out.println(sum);
    }

3. 编写程序对三个整数排序。

  • 从键盘输入整数分别存入变量num1、num2和num3,对他们进行排序,使得num1<=num2<=num3。
    代码见 实验 u3p3()
 //3.排序3个数
    private static void u3p3(){
        int num1, num2, num3;
        Scanner sc = new Scanner(System.in);
        System.out.println("输入比较的3个数:");
        num1 = sc.nextInt();
        num2 = sc.nextInt();
        num3 = sc.nextInt();
        //每一次都要选出一个最值,然后对剩下的2个数字进行比较
        if(num1 > num2 && num1 > num3){
//            System.out.println("num1 > " + num1);
            if(num2 > num3){
                System.out.println("num1 > num2 > num3: " + num1 + ">" + num2 + ">" + num3);
            }else {
                //num2 < num3
                System.out.println("num1 > num3 > num2: " + num1 + ">" + num3 + ">"  + num2);
            }
            System.out.println("num1" + num1);
        }else if(num2 > num3 && num2 > num1){
            if(num1 > num3){
                System.out.println("num2 > num1 > num3: " + num2 + ">" + num1 + ">" + num3);
            }else {
                System.out.println("num2 > num3 > num1: " + num2 + ">" + num3 + ">" + num1);
            }
        }else if(num3 > num1 && num3 > num2){
            if (num1 > num2){
                System.out.println("num3 > num1 > num2" + num3 + ">" + num1 + ">" + num2);
            }else {
                System.out.println("num3 > num2 > num1" + num3 + ">" + num2 + ">" + num1);
            }
        }
    }

4.从键盘读入个数不确定的整数,并判断读入的正数和负数个数,输入为0时结束程序。

代码见 实验 u3p4()


    //4.判断输入的个数
    private static void u3p4(){
        int input, positive = 0, negative = 0; //正数,负数
        System.out.println("输入数据:");
        Scanner sc = new Scanner(System.in);

        while((input = sc.nextInt()) != 0) {
            if (input > 0)
                positive++;
            else
                negative++;
        }
        System.out.println("正数有:" + positive + "\n负数有:" + negative);
    }

5.读入整数并求它们的总和与平均值。输入为0时程序结束。

代码见 实验 u3p5()


    //5.求和,平均值
    private static void u3p5(){
        int num, sum = 0, count = 0;
        System.out.println("输入数据:");
        Scanner sc = new Scanner(System.in);
        //也可以用 !sc.hasNext("0") 做判读
        //如果下一个标记与从指定字符串构造的模式匹配,则返回 true
        while ((num = sc.nextInt()) != 0){
            sum += num;
            count++;
        }
        System.out.println("求和:" + sum + "\n平均值: " + sum / count);
    }

6.用while循环求㎡大于12000的最小数m。

代码见 实验 u3p6()


    //6.求㎡大于12000的最小数m
    private static void u3p6(){
        int m = 1;
        while((m * m) < 12000){
            m++;
        }
        System.out.println("n方大于12000的最小数: " + m);
    }

7.编写程序读入一个整数,显示它的所有素数因子。例如,若输入整数为120,输出应为2、2、2、3、5.

代码见 实验 u3p7()


    //7.素数因子
    private static void u3p7(){
        Scanner sc = new Scanner(System.in);
        System.out.println("求素数因子,请输入一个整数:");
        int a=sc.nextInt();
        System.out.println("该整数所有素数因子为:");

        for (int i = 2; i <= a;) {
            if(a % i == 0) {
                a = a / i;
                System.out.print(i+" ");
                i=2;
            }
            else {
                i++;
            }
        }
    }

8.写一个嵌套的for循环打印下列图案:

1
1 2
1 2 3
1 2 3 4
代码见 实验 u3p8()


    //8.打印
    private static void u3p8(){
        for (int i = 1; i <= 4; i++){
            for (int j = 1; j <= i; j++){
                System.out.print(j + " ");
            }
            System.out.println();
        }
    }

9.分别用switch语句和if语句写两个例子

  • 说明它们在应用中的优缺点。
    代码见 实验 u3p9()

    //9.写例子
    private static void u3p9(){
        //判断输入的数
        int num;
        System.out.println("1-3的数:");
        Scanner sc = new Scanner(System.in);
        num = sc.nextInt();

        //switch方式
        switch(num){
            case 1:
                System.out.println("输入的是1");
                break;
            case 2:
                System.out.println("输入的是2");
                break;
            case 3:
                System.out.println("输入的是3");
                break;
            default:
                System.out.println("输入1-3的数");
        }

        //if方式
        if (num == 1)
            System.out.println("输入的是1");
        if (num == 2)
            System.out.println("输入的是2");
        if (num == 3)
            System.out.println("输入的是3");
        if(num != 1 && num != 2 && num != 3)
            System.out.println("输入1-3的数");
    }

10.分别用do-while和while编写程序,求,3*n!。

代码见 实验 u3p10()


    //10.用do-while和while编写程序,求,3*n!
    private static void u3p10(){
        //while方式
        int n,temp;
        long sum = 1;
        System.out.println("输入数字:");
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        temp = n;

        while (n > 1){
            sum = sum * n;
            n--;
        }
        System.out.println("3*n! = " + 3 * sum);

        sum = 1;
        n = temp;   //重新赋值,前面的循环让n 减到了0
        do{
            sum = sum * n;
            n--;
        }while (n > 1);
        System.out.println("3*n! = " + 3 * sum);
    }

11.写一个例子程序,包含return语句、break语句和continue语句的应用。

代码见 实验 u3p11()


    //10.用do-while和while编写程序,求,3*n!
    private static void u3p10(){
        //while方式
        int n,temp;
        long sum = 1;
        System.out.println("输入数字:");
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        temp = n;

        while (n > 1){
            sum = sum * n;
            n--;
        }
        System.out.println("3*n! = " + 3 * sum);

        sum = 1;
        n = temp;   //重新赋值,前面的循环让n 减到了0
        do{
            sum = sum * n;
            n--;
        }while (n > 1);
        System.out.println("3*n! = " + 3 * sum);
    }

    //11.return语句、break语句和continue语句的应用
    private static void u3p11(){
        for (int i = 0; i <= 5; i++) {
            if (i == 3){
                System.out.print(i + " ");
                continue;
            }
            System.out.print(i + " ");
        }
        System.out.println("continue后跳转到循环语句的最右侧 程序继续执行");

        for (int i = 0; i <= 5; i++) {
            if (i == 3){
                System.out.print(i + " ");
                break;
            }
            System.out.print(i + " ");
        }
        System.out.println("break 跳出整个循环程序");

        for (int i = 0; i <= 5; i++) {
            if (i == 3){
                System.out.print(i + " ");
                System.out.println("return 程序停止运行");
                return;
            }
            System.out.print(i + " ");
        }
    }


12.

假定y为3,.以下表达式运算后,y的值是什么?表达式的值是多少?
(y>1)&(y++>1)

y=4
true

13.

假定y为8,.以下表达式运算后,y的值是什么?表达式的值是多少?
(y>1)&&  (y++>1)

y=8
true

14.switch(x)语句中,变量x应该是什么数据类型?

  • 如果在执行case语句之后没有使用关键字break,那么下一条要执行的语句是什么?
  • 可以把switch语句转换成等价的if语句?反过来可以吗?使用switch语句的优点是什么?
    整型、字符串、字符型
    继续执行本语句下面的语句
    所有的switch语句都可以被if—else if替换,但是反过来则不一定。
    switch相对if来说,还有if比不了的优点就是在选择分支较多时,switch…case结构会生成跳转表,根据变量的取值跳转到合适的分支用switch…case结构会提高程序的效率

15.使用switch语句重写下列if语句,并画出switch语句的流程图:

if (a==1)
	x+=2;
else if (a==2)
	x+=3;
else if(a==3)
	x+=4;
else if(a=4)
	x+=5;
switch (a){
    case 1:
        x += 2;
        break;
    case 2:
        x += 3;
        break;
    case 3:
        x += 4;
        break;
    case 4:
        x += 5;
        break;

16.使用条件运算符重写下列if语句

if(count % 8==0)
	System.out.println(count +“\n”);
	else 
	   System.out.println(count +“ ”);
该段代码报错
count%8 = =0  ?  System.out.println(count +“\n”)  :  System.out.println(count +“ ”);

17.

  • 解释下列代码的输出:
int i=2; System.out.println(--i + i + i++);
 System.out.println(i+ ++i);

3
5

18.

  • 下列语句执行的结果是什么?
for(int i=1 ;  ;)   System.out.println(i+ ++i);

i的取值分别为1、2、3…循环输出( 2*i+1) 的值

19.

  • 如果一个变量是在for循环中说明的,退出循环后还可以使用该变量吗?
    不能

执行

  • 上面的为方法块

import java.util.Scanner;

public class unit_3 {

    public static void main(String[] args) {

        //1.方式一:递归求阶乘
        showFact();
        //1.方式二:循环求阶乘
        factorial_2();

        //2.求前n项和,for方法
        u3p2();

        //3.排序
        u3p3();

        //4.判断输入的个数
        u3p4();

        //5.求和,平均值
        u3p5();

        //6.求㎡大于12000的最小数m
        u3p6();

        u3p7();

        u3p8();

        u3p9();

        u3p10();

        u3p11();
    }

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:27:04  更:2021-09-18 10:27:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:52:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码