注意:所有程序默认使用《算法第四版》中附带的algs4.jar包中的函数,下载链接https://algs4.cs.princeton.edu/code/
1.1.1
a. 7
b. 200.0000002
c. true(Java逻辑表达式运算顺序从左向右)
1.1.2
通过“变量名.getClass().getName()”或者“变量名.getClass().toString()”获得类型
a. 1.618, double
b. 10.0, double
c. true, boolean
d. 33, String
1.1.3
import edu.princeton.cs.algs4.StdOut;
public class test {
public static void main(String[] args) {
String str0 = args[0];
String str1 = args[1];
String str2 = args[2];
if(str0.equals(str1) && str1.equals(str2)) {
StdOut.println("equal");
}else {
StdOut.println("not equal");
}
}
}
1.1.4
a. 没有if…then语句
b. if条件需要()
c. 没有问题
d. c = 0后面需要分号
1.1.5
import edu.princeton.cs.algs4.StdOut;
public class test {
public static void main(String[] args) {
double a = 0.5, b = 1.5;
if ( a > 0 && a < 1 && b > 0 && b < 1) {
StdOut.println("true");
}else {
StdOut.println("false");
}
}
}
1.1.6 [011 0-1-1 011 0-1-1…]
1.1.7
a. 3.00009
b. 499550
c. 10000
1.1.8
a. 结果:b。原因:直接输出char类型字符
b. 结果:197。原因:char+char=两者的ASCII值相加
c. 结果:e。原因:通过强制类型转换将ASCII值转换为了char类型
1.1.9
import edu.princeton.cs.algs4.StdOut;
public class test {
public static void main(String[] args) {
String s = "";
int num = 8;
while(num != 1 && num !=0){
int add = num % 2;
s = add + s;
num = num / 2;
}
s = num + s;
StdOut.println(s);
}
}
1.1.10 没有为数组申请内存
1.1.11
import edu.princeton.cs.algs4.StdOut;
import java.util.Random;
public class test {
public static void main(String[] args) {
boolean[][] a = new boolean[9][9];
Random r = new Random();
for (int i = 0; i < 9 ; i++ ) {
for (int j = 0; j < 9 ; j++ ) {
a[i][j] = r.nextBoolean();
}
}
StdOut.print(" 1 2 3 4 5 6 7 8 9 ");
for (int i = 0; i < 9 ; i++ ) {
StdOut.print("\r\n" + (i+1) + " ");
for (int j = 0; j < 9 ; j++ ) {
if(a[i][j] == true) {
StdOut.print("* ");
}else {
StdOut.print(" ");
}
}
}
}
}
1.1.12 结果:0123443210
1.1.13
import edu.princeton.cs.algs4.StdOut;
import java.util.Random;
public class test {
public static void main(String[] args) {
int[][] a = new int[10][10];
Random r = new Random();
// init matrix and print
for (int i = 0; i < 10 ; i++ ) {
for (int j = 0; j < 10 ; j++ ) {
a[i][j] = r.nextInt(10);
StdOut.print(a[i][j] + " ");
}
StdOut.println();
}
// transposition
StdOut.println("Transposing...");
for (int i = 0; i < 10 ; i++ ) {
for (int j = 0; j < i; j++) {
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
// print new matrix
for (int i = 0; i < 10 ; i++ ) {
for (int j = 0; j < 10 ; j++ ) {
StdOut.print(a[i][j] + " ");
}
StdOut.println();
}
}
}
1.1.14
import edu.princeton.cs.algs4.StdOut;
public class test {
public static void main(String[] args) {
StdOut.println(lg(1024));
}
public static int lg(int N) {
int x = 1;
int num = 2;
if(N == 1) {
return 0;
}else {
while(num*2 <= N) {
num *= 2;
x++;
}
return x;
}
}
}
1.1.15
import edu.princeton.cs.algs4.StdOut;
import java.util.Random;
public class test {
public static void main(String[] args) {
i

本文提供了《算法第四版》第一章的课后习题答案,包括逻辑运算、类型转换、递归问题、算法分析等内容,并讨论了一些编程细节和优化策略。
最低0.47元/天 解锁文章
609

被折叠的 条评论
为什么被折叠?



