本次博客为项目实训第六周的工作汇总。
本周中,小组成员完成了环境的相关配置,并把 配置说明与操作步骤携程实验指导书。且进行每个模块课程的实验1、2的知识整理、实验构思、实验示例代码编写。
1.Java部分
1.1 实验1:条件判断和循环
考察相等性运算符和关系运算符、逻辑性运算符、条件语句、循环语句等,并使用Scanner类考察代码实现的交互。
实验题目:
1.编写Stars.java程序中的test01_1Code()方法,实现从控制台输入一个自然数n(n>=1),使得在控制台中打印出边长为n的菱形。
2.编写PalindromeTester.java程序中的 test01_2Code(String testString)方法,测试参数testString是否为回文字符串(回文:顺读和倒读都相同的字符串序列),如果是,则返回true;反之返回false。
例如,测试用例为“radar”时,返回true。
1.2 实验2:对象和类。
考察学生对如何定义类、创建对象、使用类与对象的掌握,还有类及成员的修饰符的运用、构造函数的使用、局部变量和全局变量在使用中的影响等多个方面。
实验题目:
为二次方程式ax^2+bx+c=0设计一个名为QuadraticEquation的类。这个类包括:
代表三个稀疏的私有数据域a、b、c。
一个参数为a、b、c的构造方法。
a、b、c的三个get方法。
一个名为getDiscriminant()的方法返回判别式,b^2-4ac。
名为getRoot1()和getRoot2()的方法返回等式的两个根。
名为test()的方法,返回值为void,如果判别式为正数,显示两个根,返回2;如果判别式为0,显示一个根,返回1;否则,显示“The equation has no roots.”,返回0。
2.C语言部分
2.1 实验1:helloworld.c、两数相加
考察对于Ubuntu更新gcc、安装编程环境的基本操作,以及基本c程序的编写与运行。
实验题目:
helloworld.c 程序
程序说明:利用printf() 函数 输出"hello , raspberry!";
两数相加
程序说明:从控制台读入两个int型数值,输出两数之和
2.2 实验2:熟悉do{} while() 循环结构
通过多个小实验,考察对于do{} while()语句的掌握程度,掌握结构化设计的分支结构。
实验题目:
打印十遍raspberry pi
程序说明:熟悉do-while结构,输出十次raspberry pi
累数相加之和
程序说明:从控制台读入两个整型数字from 和 to, 求从from到to的累加之和
从数组中找出最大的元素并输出
程序说明:在array数组中找出最大元素,并将其输出
3.Python部分
3.1 实验1:条件、循环分支
通过补充代码并使用python第三方库——单元测试框架pytest,学习关于条件语句和循环语句的相关内容。
实验题目:
- 编写一个名为collatzl()的函数,它有一个名为number的参数,如果参数是偶数,那么collatz()就返回number//2,如果number是奇数,collatz()就返回3*number+1。
- 编写一个函数,让用户输入一个正整数,并不断对这个数调用collatz(),可以发现,无论输入的参数为什么整数,最后结果都为1,即使时数学家也不能确定为什么。
3.2 实验2:列表
给你一个数组 nums 和一个值 val,你需要在 原数组上 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:
输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。
例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。示例 2:
输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
4.计算机系统原理部分
本实验包含 7 道与位级层面整数运算及操作的题目,使用 C++ 写成。Exp1.cc 文件中包含这 7 道题的空函数体,学生需要通过有限的 C++ 算术或逻辑操作符修改这些函数体,以实现函数功能。因为需要在树莓派上运行,实验将提供基于 Linux 环境本地检查功能,以方便学生进行检查。
实验题目:
本实验假设学生的机器有如下特征:
- 使用 32 位二进制补码存储数据
- 右移操作为算术右移
- 使用小端法存储数据
题目一,使用位级运算符号 NOT ~ 和 OR | 实现 x & y,本题目为 CS:APP Data Lab 中 bitXor 的简化版。
题目二,返回当前值的相反数,本题为 CS:APP Data Lab 原题。
题目三,无符号整数乘法,这道题是从 CS:APP 书上模拟出来的,只要认真看了课本应该没有什么难度。
题目四,从整数中取出字节,这道题目是 0-index 的。
题目五,判断当前值是否为 32 位补码整数最大值,即 2^31-1 = 2147483647,本题为 CS:APP Data Lab 原题。
题目六,判断当前整数的所有奇数位比特是否为 1,本题目为 CS:APP Data Lab 中 allOddBits 的修改版。
题目七,判断是否 x ≥ y,本题目为 CS:APP Data Lab 中 isLessOrEqual 的修改版。