| 网站首页 | 学校介绍 | 德育工作 | 家长学校 | 教学教研 | 信息技术 | 书香飘逸 | 资源下载 | 靓图欣赏 | 雁过留声 | 语文 | 
最新公告:     已所不欲,勿施于人,已之所欲,施之于人!  [adminit  2007年4月19日]            生命如流水,只有在他的急流与奔向前去的时候,才美丽,才有意义。 ——张闻天  [旗峰中学  2006年7月8日]            不要让忧愁压在你的心头,也不要让犹豫缠住你的脚步,满天的阴霾终会被风吹散,而晴朗的天空就是你无比辉煌的前程。只有在遭受痛苦经历时,仍然能笑,仍然能乐观的生活的人,才称得起是真正坚强的人。生活是一面镜子,你对它笑,他就对你笑;你对它哭,他也对你哭。  [旗峰中学  2006年7月8日]            勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏。  [旗峰中学  2005年11月3日]            志不强者智不达,言不信者行不果。  [旗峰中学  2005年11月3日]        
您现在的位置: 旗峰中学校园网 >> 信息技术 >> 信息奥赛 >> Pascal >> 文章正文
专题栏目
更多内容
最新推荐 更多内容
相关文章
第三届NOC“主题网页设计
第三届NOC“主题网页设计
全国青少年网络文明公约
第十一届青少年信息学联
2005年南海区青少年信息
第二届选拔赛试题
天津市青少年信息学(计算
逻辑判断问题
八皇后问题程序及注解
基础训练题
更多内容
进制互化问题           ★★★
进制互化问题在Pascal中的程序设计
作者:未知 文章来源:本站原创 点击数: 更新时间:2004-11-24 18:47:15

进制1

【题目】键盘输入一个十进制的整数,及确定进制n,把这个数转换成相应的n进制输出。

(其中2〈=n〈=16)

例如:输入10,n=3 则输出 (10)10=(101)3

【参考程序】

var i,j,m,n:longint;

a:array [1..100] of byte; {用数组存放求出的余数}

begin

writeln('input m,n');

fillchar(a,sizeof(a),0);

readln(m,n);

write(m);

i:=0;

repeat

i:=i+1;

a[i]:= m mod n;

m:=m div n;

until m=0;

write('=(');

for j:=i downto 1 do

if a[j]>9 then write(chr(a[j]+55)) {如果大于9,用字母输出}

else write(a[j]);

writeln(')',n);readln;

end.

.context 进制2

【题目】把n进制的数化回十进制表示

如 (10101)2=(21)10

【参考程序】

var cf,s,i,j,n:longint;

m:string[20];

a:array[1..20] of byte;

begin

writeln('input m,n');

fillchar(a,sizeof(a),0);

readln(m,n); {用字符串接收要转换的数}

for i:=1 to length(m) do begin {把字符串换成数字,注意字母时的情况}

if (m[i]<='9') and (m[i]>='0') then a[i]:=ord(m[i])-48;

if (upcase(m[i])<='F') and (upcase(m[i])>='A') then

a[i]:=ord(upcase(m[i]))-55;

if a[i]>=n then begin writeln('Error, Invaild m !');halt;end;

{如果含有不在n进制内的字符,则判为出错。如2进制的数,则不应

出现诸如10102,110031210等情况}

end;

cf:=1; s:=a[length(m)]; {cf:乘方}

for i:=length(m)-1 downto 1 do begin {从低位向高位,逐步转换}

cf:=cf*n; {s记录得出来的数}

s:=s+a[i]*cf;

end;

writeln('(',m,')',n,'=',s);

readln;

end.

.context 进制3

【题目】任意进制间的互化。

把n进制的M转化成k进制表示

如m=ff n=16 k=2

则有 (ff)16=(11111111)2

【参考程序】

var s,n,k:longint;m:string[20];

a:array [1..100] of byte;

procedure first(m:string;n:integer); {把数m化成十进制}

var cf,i,j:longint;

begin

for i:=1 to length(m) do begin

if (m[i]<='9') and (m[i]>='0') then a[i]:=ord(m[i])-48;

if (upcase(m[i])<='F') and (upcase(m[i])>='A') then

a[i]:=ord(upcase(m[i]))-55;

if a[i]>=n then begin writeln('Error, Invaild m !');halt;end;

end;

cf:=1; s:=a[length(m)];

for i:=length(m)-1 downto 1 do begin

cf:=cf*n;

s:=s+a[i]*cf;

end;

write('(',m,')',n);write('=(',s,')10');

end;

procedure second(m,n:longint); {把十进制的数化成k进制}

var i,j:longint;

begin

i:=0;

repeat

i:=i+1;

a[i]:= m mod n;

m:=m div n;

until m=0;

write('=(');

for j:=i downto 1 do

if a[j]>9 then write(chr(a[j]+55))

else write(a[j]);

writeln(')',n);readln;

end;

begin

fillchar(a,sizeof(a),0);

writeln('input m,n,k:'); {m:数, n:原先进制, k:化成什么进制}

readln(m,n,k);

first(m,n); {把n进制的m化成十进制数S}

second(s,k); {把S化成k进制}

end.

进制2

【题目】把n进制的数化回十进制表示

如 (10101)2=(21)10

【参考程序】

var cf,s,i,j,n:longint;

m:string[20];

a:array[1..20] of byte;

begin

writeln('input m,n');

fillchar(a,sizeof(a),0);

readln(m,n); {用字符串接收要转换的数}

for i:=1 to length(m) do begin {把字符串换成数字,注意字母时的情况}

if (m[i]<='9') and (m[i]>='0') then a[i]:=ord(m[i])-48;

if (upcase(m[i])<='F') and (upcase(m[i])>='A') then

a[i]:=ord(upcase(m[i]))-55;

if a[i]>=n then begin writeln('Error, Invaild m !');halt;end;

{如果含有不在n进制内的字符,则判为出错。如2进制的数,则不应

出现诸如10102,110031210等情况}

end;

cf:=1; s:=a[length(m)]; {cf:乘方}

for i:=length(m)-1 downto 1 do begin {从低位向高位,逐步转换}

cf:=cf*n; {s记录得出来的数}

s:=s+a[i]*cf;

end;

writeln('(',m,')',n,'=',s);

readln;

end.

.context 进制3

【题目】任意进制间的互化。

把n进制的M转化成k进制表示

如m=ff n=16 k=2

则有 (ff)16=(11111111)2

【参考程序】

var s,n,k:longint;m:string[20];

a:array [1..100] of byte;

procedure first(m:string;n:integer); {把数m化成十进制}

var cf,i,j:longint;

begin

for i:=1 to length(m) do begin

if (m[i]<='9') and (m[i]>='0') then a[i]:=ord(m[i])-48;

if (upcase(m[i])<='F') and (upcase(m[i])>='A') then

a[i]:=ord(upcase(m[i]))-55;

if a[i]>=n then begin writeln('Error, Invaild m !');halt;end;

end;

cf:=1; s:=a[length(m)];

for i:=length(m)-1 downto 1 do begin

cf:=cf*n;

s:=s+a[i]*cf;

end;

write('(',m,')',n);write('=(',s,')10');

end;

procedure second(m,n:longint); {把十进制的数化成k进制}

var i,j:longint;

begin

i:=0;

repeat

i:=i+1;

a[i]:= m mod n;

m:=m div n;

until m=0;

write('=(');

for j:=i downto 1 do

if a[j]>9 then write(chr(a[j]+55))

else write(a[j]);

writeln(')',n);readln;

end;

begin

fillchar(a,sizeof(a),0);

writeln('input m,n,k:'); {m:数, n:原先进制, k:化成什么进制}

readln(m,n,k);

first(m,n); {把n进制的m化成十进制数S}

second(s,k); {把S化成k进制}

end.

进制3

【题目】任意进制间的互化。

把n进制的M转化成k进制表示

如m=ff n=16 k=2

则有 (ff)16=(11111111)2

【参考程序】

var s,n,k:longint;m:string[20];

a:array [1..100] of byte;

procedure first(m:string;n:integer); {把数m化成十进制}

var cf,i,j:longint;

begin

for i:=1 to length(m) do begin

if (m[i]<='9') and (m[i]>='0') then a[i]:=ord(m[i])-48;

if (upcase(m[i])<='F') and (upcase(m[i])>='A') then

a[i]:=ord(upcase(m[i]))-55;

if a[i]>=n then begin writeln('Error, Invaild m !');halt;end;

end;

cf:=1; s:=a[length(m)];

for i:=length(m)-1 downto 1 do begin

cf:=cf*n;

s:=s+a[i]*cf;

end;

write('(',m,')',n);write('=(',s,')10');

end;

procedure second(m,n:longint); {把十进制的数化成k进制}

var i,j:longint;

begin

i:=0;

repeat

i:=i+1;

a[i]:= m mod n;

m:=m div n;

until m=0;

write('=(');

for j:=i downto 1 do

if a[j]>9 then write(chr(a[j]+55))

else write(a[j]);

writeln(')',n);readln;

end;

begin

fillchar(a,sizeof(a),0);

writeln('input m,n,k:'); {m:数, n:原先进制, k:化成什么进制}

readln(m,n,k);

first(m,n); {把n进制的m化成十进制数S}

second(s,k); {把S化成k进制}

end.

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |