例 4-18 p71
DESCRIPTION
b 34. a 13. a 24. a 25. b 43. b 53. 例 4-18 P71. 转置矩阵,就是将一个矩阵的行列互换。编程输入一个 4 行 5 列的矩阵,顺时针旋转 90 度后输出。. 1 22 3 2 3 2 4 3 4 3 8 4 5 0 9 17 8 4 1 88. 2 3 4 17 88 3 4 8 9 1 22 2 3 0 4 1 3 4 5 8. 已知. b[i,j]:=a[ , ]. 直接输出. 1 22 3 2 3 2 4 3 - PowerPoint PPT PresentationTRANSCRIPT
例 4-18 P71 转置矩阵,就是将一个矩阵的行列互换。编程输入一个 4 行 5 列的矩阵,顺时针旋转 90 度后输出。
2 3 4 17 88
3 4 8 9 1
22 2 3 0 4
1 3 4 5 8
1 22 3 2
3 2 4 3
4 3 8 4
5 0 9 17
8 4 1 88
a24
b43a25
b53
a13
b34
b[i,j]:=a[ , ]已知
2 3 4 17 88
3 4 8 9 1
22 2 3 0 4
1 3 4 5 8
1 22 3 2
3 2 4 3
4 3 8 4
5 0 9 17
8 4 1 88
program ex_zz;var i,j:integer; a:array[1..4,1..5] of integer; begin for i:=1 to 4 do for j:=1 to 5 do read(a[i,j]); for i:=1 to 5 do begin for j:=4 downto 1 do write(a[j,i],' '); writeln; end;end.
直接输出
2008第一题var i,a,b,c,d:integer; f:array[0..3] of integer;begin for i:=0 to 3 do read(f[i]); a:=f[0]+f[1]+f[2]+f[3]; a:=a div f[0]; b:=f[0]+f[2]+f[3]; b:=b div a; c:=(b*f[1]+a) div f[2]; d:=f[(b div c) mod 4]; if (f[(a+b+c+d) mod 4]>f[2]) then begin a:=a+b; writeln(a) end else begin c:=c+d; writeln(c); end;end.输入: 9 19 29 39
f[0] f[1] f[2] f[3] a b c d
1
2
3
4
9 19 29 39
96
10 77 4 19
数组应用
4-19 进制转换4-21 约瑟夫问题
所有信息在计算机内部都是以 0 与 1 组成的序列表示,包括文字、声音、图像、视频等
数也不例外,由 0 与 1 作为基数来代表数,是二进制
我们日常习惯用 10 进制,这就涉及到转换
11 二进制,转换成 10 进制是多少?
10 进制的特点0-9,10 个数组成, 0-9 也就做基数逢 10 进一不同位上的 1 ,代表不同的数,叫权
111 3263*102+2*101+6*100
常见的数制数制:指用一组固定的符号和统一的规则来表示数的方法,也称计数制。进位计数制:按进位的方法进行计数,如十进制、二进制等进位计数制包括三个要素:数位、基数、位权 ①数位:指数中各数字的位置(从右到左, 0 位开始); ②基数:指进位计数制中数字。如十进制有 0 ~ 9 共 10 个数字 ③位权:某位上数字所代表的数值大小等于该数字乘以一个固定的数,这个固定的数就是这个数位的位权。
十进制,位数比较有个性,有自己的名字 如百位 十位 个位 · 十分位 百分位 千分位102 101 100 · 10-1 10-2 10-3
1 1 1
22 21 20 · 2-1 2-2 2-3
1 1 1
=1* 102 +1*101 +1*100
=1* 22 +1*21 +1*20
常见进位计数制的三要素基本情况如下十进位计数制
数位 …… 百位 十位 个位 · 十分位 百分位 千分位 ……基数 10(∵ 十进制有 0 ~ 9 共 10 个数字 )
位权 …… 102 101 100 · 10-1 10-2 10-3 ……
二进位计数制数位 …… 第 2 位 第 1 位第 0 位 · 第 1 位 第 2 位 第 3 位 ……基数 2(∵ 二进制有 0 ~ 1 共 2 个数字 )位权 ……22 21 20 · 2-1 2-2 2-3 ……
八进位计数制数位 …… 第 2 位 第 1 位 第 0 位 · 第 1 位 第 2 位 第 3 位 ……基数 8(∵ 二进制有 0 ~ 7 共 8 个数字 )位权 ……82 81 80 · 8-1 8-2 8-3 ……
十六进位计数制数位 …… 第 2 位 第 1 位 第 0 位 · 第 1 位 第 2 位 第 3 位 ……基数 16(∵ 十六进制有 0 ~ 9 、 A ~ F 共 16 个数字 )位权 ……162 161 160 · 16-1 16-2 16-3 ……
十进制整数与 2进制整数之间的转换
逆向取余
用短除法
**=n mod 2
n:=n div 2
十进制整数与 N进制整数之间的转换
4-19将一个十进制正整数 n(n<=2 147 483 647) 转换成二进制
inteter -32768..32767 longint -2147483648..2147483647
是否知道除多少次?循环的条件是什么呢?循环体要做多少件事?如何输出?
思考10 进制转换成 16 进制
要考虑超过超过 9 就应当用字母表示,如何实现?
var n,i,t:longint; a:array[1..100] of integer; b:char;begin readln(n); i:=0; while n>0 do begin inc(i); a[i]:=n mod 16; n:=n div 16; end; t:=i; for i:=t downto 1 do begin if (a[i]>=0)and(a[i]<10) then write(a[i]); if a[i]=10 then write('A'); if a[i]=11 then write('B') ; if a[i]=12 then write('C') ; if a[i]=13 then write('D') ; if a[i]=14 then write('E') ; if a[i]=15 then write('F') ; end;end.
秦翔宇