第7章课后作业

本文提供了一系列Java编程练习题,包括逆序输出句子、查找数组最小值、统计特定数值出现次数、数组逆序排序及处理负数、英文歌名的数组插入与排序等,帮助初学者掌握基本语法和数据结构操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1题    逆序输出输入的五句话

import java.util.Scanner;
public class HomeWork7_2 {
public static void main(String[] args) {
String words[]=new String[5];
System.out.println("请输入5句话:");
Scanner input = new Scanner(System.in);
for (int i = 1; i <=5; i++) {
System.out.print("第"+i+"句话:");
words[i-1]=input.next();
}
System.out.println("逆序输出5句话为:");
for (int i = words.length-1; i >=0; i--) {
System.out.println(words[i]);
}input.close();
}

}

第2题   找出数组中的最小数,并找出其在数组中的下标

public class HomeWork7_3 {
public static void main(String[] args) {
int integral[]=new int[] {18,25,7,36,13,2,89,63};
int min = integral[0];
for (int i = 0; i < integral.length; i++) {
if(min>integral[i]) {
min=integral[i];
}
}System.out.println("其中最低的积分是:"+min);
for (int i = 0; i < integral.length; i++) {
if(integral[i]==min) {
System.out.println("它在数组中的原始位置是:"+i);
}
}
}

}

第3题 输入10个整数,合法值为1,2或3,其他为非法数字,统计各种数字的数量

import java.util.Scanner;
public class HomeWork7_4 {
public static void main(String[] args) {
int nums[] = new int[10];// 长度为10的数组
int num1 = 0;// 数字1的个数
int num2 = 0;// 数字2的个数
int num3 = 0;// 数字3的个数
int numOther = 0;// 其他数字
Scanner input = new Scanner(System.in);
System.out.println("请输入10个整数:");
for (int i = 0; i < 10; i++) {
nums[i] = input.nextInt();
}
for (int i = 0; i < nums.length; i++) {//遍历数组找数字
switch (nums[i]) {
case 1:
num1++;
break;
case 2:
num2++;
break;
case 3:
num3++;
break;
default:
numOther++;
break;
}
}
System.out.println("数字1的个数:" + num1);
System.out.println("数字2的个数:" + num2);
System.out.println("数字3的个数:" + num3);
System.out.println("非法数字的个数:" + numOther);
input.close();
}

}

第4题   将数组逆序排序,且小于0的变成0

public class HomeWork7_5 {
public static void main(String[] args) {
int nums[] = new int[] {1,3,-1,5,-2};
System.out.println("原数组为:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
System.out.println("\n逆序并处理后的数组为:");
for (int j = nums.length-1; j >=0; j--) {
if(nums[j]<0) {
nums[j]=0;
}
System.out.print(nums[j]+" ");
}
}

}

第5题   插入英文歌名,且升序排列

import java.util.Arrays;
import java.util.Scanner;
public class HomeWork7_6 {
public static void main(String[] args) {
String music[] = new String[] { "Island", "Ocean", "Pretty", "Sun" };// 已经排好序就不要排序了,如未排序,可以使用Array.sort()来排序
String music1[] = Arrays.copyOf(music, 5);// 复制一个新的数组,因为原数组长度已固定,无法添加
int index = music1.length;// 定义位置(即下标)
System.out.println("插入前的数组为:");
for (int i = 0; i < music.length; i++) {
System.out.print(music[i] + " ");
}
Scanner input = new Scanner(System.in);
System.out.println("\n请输入歌曲名称:");
String newMusic = input.next();
for (int j = 0; j < music.length; j++) {
if (music[j].compareToIgnoreCase(newMusic) > 0) {// 比较新数据与原数据的大小
index = j;// 确定位置
break;
}
}
for (int k = music1.length - 1; k > index; k--) {
music1[k] = music1[k - 1]; // index下标开始的元素后移一个位置
}
music1[index] = newMusic;// 插入数据
System.out.print("插入后的数组是: ");
for (int l = 0; l < music1.length; l++) { // 循环输出目前数组中的数据
System.out.print(music1[l] + " ");
}
input.close();
}
}

### 数据结构与算法第七课后作业答案解析 对于数据结构与算法课程中的第七课后作业,不同版本的教材会有不同的侧重点和题目设置。以下是基于常见教材内容对这一节可能涉及的知识点及其对应练习题目的解析。 #### 一、树的概念理解 针对树这种非线性的逻辑结构,在该节通常会考察基本概念的理解程度,比如定义、性质以及分类等。例如: - **判断题**:一棵度为零的二叉树是一棵空树。(错误) 正确的说法应该是:“一颗仅含有根节点而无子结点的二叉树也称为‘单节点’或‘平凡’二叉树。”[^1] #### 二、遍历操作实现 掌握前序、中序、后续三种方式来访问二叉树各个顶点的方法非常重要。这里给出一段简单的Python代码用于演示如何通过递归方法完成这些遍历动作: ```python class TreeNode: def __init__(self, value=0, left=None, right=None): self.value = value self.left = left self.right = right def preorder_traversal(root): if root is not None: print(root.value) preorder_traversal(root.left) preorder_traversal(root.right) def inorder_traversal(root): if root is not None: inorder_traversal(root.left) print(root.value) inorder_traversal(root.right) def postorder_traversal(root): if root is not None: postorder_traversal(root.left) postorder_traversal(root.right) print(root.value) ``` 此段程序展示了如何构建一个基础的二叉树类`TreeNode`并实现了三个函数分别用来执行先序(`preorder`)、中序(`inorder`) 和 后序 (`postorder`) 的遍历过程[^2]。 #### 三、应用实例分析 实际应用场景下的问题解决能力也是考核的重点之一。以查找最小公共祖先为例,这是一个典型的利用二叉搜索特性解决问题的任务。下面是一个简化版的例子说明思路: 假设给定如下图所示的一颗BST(平衡二叉搜索树),我们需要找到两个指定数值所在位置之间的最近共同父辈节点的位置。 ![image](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Binary_search_tree.svg/350px-Binary_search_tree.svg.png) 解决方案可以采用迭代法自底向上回溯路径直至遇到第一个分岔口即为目标结果;也可以借助于栈的数据结构保存沿途经过的所有节点以便随时比较两者间的关系变化情况[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值