public class Main {
public static void main(String[] args) {
// write your code here
System.out.println((0 + 15) / 2);
System.out.println(2.0e-6 * 100000000.1);
System.out.println(true && false || true && true);
}
}
/*
习题1.1.1答案
7
200.0000002
true 这题说明and优先于or比较运算符
*/
public static void main(String[] args) {
// write your code here
System.out.println((1 + 2.236) / 2);
System.out.println(1 + 2 + 3 + 4.0);
System.out.println(4.1 >= 4);
System.out.println(1 + 2 + "3");
}
}
/*
答案是
1.618 浮点型与整型同时参与除法运算,由整除变为除法
10.0 浮点型与整型同时参与运算时,自动转换为浮点型
true 布尔表达式输出为true或false
33 算术运算符功能优先于链接字符串功能
*/
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
int a = StdIn.readInt();
int b = StdIn.readInt();
int c = StdIn.readInt();
if (a == b && b ==c ){
System.out.println("equal");
}else {
System.out.println("not equal");
}
}
}
/*
1.1.3答案
*/
//1.1.4答案:ad错,bc对。
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
double x = 1.0;
double y = 2.0;
System.out.println(0< x & x < 1 & 0< y & y < 1);
}//close main
}
/*
1.1.5答案 x,y自己改试一下
*/
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
int f = 0;
int g = 1;
for (int i = 0;i <= 15; i++){
StdOut.println(f);
f = f + g;
g = f - g;
}
}//close main
}
/*
1.1.6答案 :
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
*/
//1.1.7答案: a, 3.009;b, 499500;c, 10000
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
System.out.println('b');
System.out.println("b" + 'c');
System.out.println((char) ('a' + 4));
}//close main
}
/*
1.1.8输出:
b
bc
e
*/
/*
这题书中就有答案。至于原理,请自行在高中数学书中查找
1.1.9答案:
String s = "";
for (int n = N; n > 0;n /=2)
s = (n % 2) + s;
*/
1.1.10没有为数组分配内存,或者用ArrayList的append()方法。
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
boolean [][] booleans = new boolean[2][2];
booleans[0][0] = true;
booleans[0][1] = false;
booleans[1][0] = false;
booleans[1][1] = true;
for(boolean[] array : booleans){
for (boolean boolValue : array){
if (boolValue){
System.out.print('*');
} else System.out.print(' ');
}//inner loop
}//outer loop
}//close main
}
/*
1.1.11输出:
* *
*/
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
int [] a = new int[10];
for (int i = 0; i < 10; i++)
a[i] = 9 - i;
for (int i = 0;i < 10; i++)
a[i] = a[a[i]];
for (int i= 0;i < 10; i++)
System.out.println(i);
}//close main
}
/*
1.1.12答案:前面两个循环是大大的忽悠
0
1
2
3
4
5
6
7
8
9 */
import java.util.Arrays;
import edu.princeton.cs.algs4.*;
public class Main {
public static void main(String[] args) {
int M =(int) (Math.random() * 10);
int N =(int) (Math.random() * 10);
int[][] array = new int[M][N];
int[][] newArray = new int[N][M];
for (int i = 0; i < M; i++){
for (int j = 0; j < N; j++ ){
array[i][j] = (int) (Math.random() * 10);
}
}
System.out.println(Arrays.deepToString(array));
for (int i = 0; i < M; i++){
for (int j = 0; j < N; j++ ){
newArray[j][i] = array[i][j];
}
}
System.out.println(Arrays.deepToString(array));
System.out.println(Arrays.deepToString(newArray));
}//close main
}
/*1.1.13答案;
我看过博客上有不少有关二维数组进行转置的,他们给出的答案有的将矩阵设想为例如3*3的方阵,这明显自降难度,
他们可能认为用方阵能够想使用同一个reference的名称,满足所谓的原地转置,来满足心中的自豪感。
但是,明显题目要求的是M行N列的方阵,谁规定M = N呢?
我们的答案要有普遍性。
可能有人会认为转置得到的数组应该使用新的内存地址,
这就涉及到Java的万类之王Object的clone()方法了。
有兴趣可以自行了解。
*/