第一周测试内容
编程
pro week_one print, '题目1:' a = findgen(4, 6) ; 创建一个4列6行的索引矩阵(类型是float) b = 3 ; 创建一个值为3的int型变量 c = [3] ; 创建一个只有一个元素(值为3)的一维int型数组 d = [9, 3, 1] ; 创建一个含三个元素的一维int型数组 ; 开始计算 print, a[3, 4] ; 输出三列四行的数字值 print, a[15] ; 输出第15个的值(下标从0开始数) print, a + b ; + 这里表示两个矩阵各个元素相加, 返回的还是一个矩阵形式 print, a[1, 1] + b ; 矩阵a中第1列第1行(下标从0开始)的值与变量b的值相加 print, a + c ; 由于矩阵a是二维数组, 而c是一维数组, 所以一般相加时返回一维数组 print, a + d ; 这个相加类似 print, '题目2:' ; 创建一般数组 a = [[3, 9, 10], [2, 7, 5], [4, 1, 6]] b = [[7, 10, 2], [5, 8, 9], [3, 1, 6]] ; 数组相加、相乘————》+、*就是数组各个元素对应相加、相乘返回一个新数组 print, a + b print, a * b print, '题目3(难):' ; 创建一般数组 a = [[0, 5, 3], [4, 0, 2], [0, 7, 8]] b = [[0, 0, 1], [9, 7, 4], [1, 0, 2]] ; 保留a中大于3的结果, 其余元素全部置为0 print, (a gt 3) * a ; 保留b中大于等于4的结果, 其余元素置为9 print, (b le 4) * b + (b gt 4) * 9 ; 计算a和b的均值 print, (a + b) / 2.0 ; 注意, int和int型数据相除得到仍是int型,会有精度损失————》这里将2转化为2.0可以避免 ; 计算a和b的均值, 0值不纳入计算(如5 和 0的均值仍为5) c = (a ne 0) + (b ne 0) ; 只有对应的两个均不为0那么除数是2, 如果对应其只有一个为0,那么除数为1, 如果两个都为0,那么除数为0 ; print, (c le 1) + (c eq 2) * 2.0 print, (a + b) / ((c le 1) + (c eq 2) * 2.0) ; 这里对c再进行处理是为了避免除数为0的情况 end
以下是编译运行之后的结果:
IDL> week_one % Compiled module: WEEK_ONE. 题目1: 19.0000 15.0000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 20.0000 21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 8.00000 3.00000 9.00000 4.00000 3.00000 题目2: 10 19 12 7 15 14 7 2 12 21 90 20 10 56 45 12 1 36 题目3(难): 0 5 0 4 0 0 0 7 8 0 0 1 9 9 4 1 0 2 0.000000 2.50000 2.00000 6.50000 3.50000 3.00000 0.500000 3.50000 5.00000 0.000000 5.00000 2.00000 6.50000 7.00000 3.00000 1.00000 7.00000 5.00000 IDL>
IDL> week_one
% Compiled module: WEEK_ONE.
题目1:
19.0000
15.0000
3.00000 4.00000 5.00000 6.00000
7.00000 8.00000 9.00000 10.0000
11.0000 12.0000 13.0000 14.0000
15.0000 16.0000 17.0000 18.0000
19.0000 20.0000 21.0000 22.0000
23.0000 24.0000 25.0000 26.0000
8.00000
3.00000
9.00000 4.00000 3.00000
题目2:
10 19 12
7 15 14
7 2 12
21 90 20
10 56 45
12 1 36
题目3(难):
0 5 0
4 0 0
0 7 8
0 0 1
9 9 4
1 0 2
0.000000 2.50000 2.00000
6.50000 3.50000 3.00000
0.500000 3.50000 5.00000
0.000000 5.00000 2.00000
6.50000 7.00000 3.00000
1.00000 7.00000 5.00000
IDL>