函授B1作业 FREE PASCAL

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:09:15
1、N进制乘法口诀表(table.pas,table.in,table.out,时限1秒)
从table.in中读入一个自然数N(2≤N≤16),打印出N进制乘法口诀表,输出到table.out中。
请注意格式(大写字母、右对齐,除了最左列外,每个数据项占4列),以下是N=16时的结果:
* 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0
1 0 1
2 0 2 4
3 0 3 6 9
4 0 4 8 C 10
5 0 5 A F 14 19
6 0 6 C 12 18 1E 24
7 0 7 E 15 1C 23 2A 31
8 0 8 10 18 20 28 30 38 40
9 0 9 12 1B 24 2D 36 3F 48 51
A 0 A 14 1E 28 32 3C 46 50 5A 64
B 0 B 16 21 2C 37 42 4D 58 63 6E 79
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1
请把全部程序完整的打出来,谢谢!

{本题用到将10进制数转成n进制数,用公式tenton来完成
先将此表以十进制的方式保存在a数组中,再将它转成n
进制的形式,最后按要求输出。}
program table;
const num=1000;m=4;
var
n,i,j:longint;
a:array[-1..num,-1..num] of longint;
z:array[-1..num*2] of longint;
b:array[-1..num,-1..num] of string;

function tenton(number,jingzhi:longint):string;
var i,j,l,x:longint;
zfc,xxx,xyz:string;
code:integer;
begin
for i:=1 to num*2 do
z[i]:=0;
i:=1;j:=0;zfc:='';
repeat
x:=number mod jingzhi;
z[i]:=x;
number:=number div jingzhi;
inc(i);
until number=0;
for j:=1 to i do
if (z[j]>=10) then
zfc:=zfc+chr(z[j]+55)
else begin
str(z[j],xxx);
zfc:=zfc+xxx;
end;
l:=length(zfc);
while zfc[l]='0' do begin delete(zfc,l,1);l:=l-1;end;
if zfc='' then zfc:=zf