1、进制转换题目及代码 By LYLtim2010-09-29 20:501、十进制转换成任意进制【问题描述】请你编一程序将十进制整数转换成任意进制m的数(2WmW16)。【输入格式】 输入数据共有二行。第一行是一个正整数,表示需要转换的十进制数。第二行也是一个正整数,表示转换之后的数的进制m(2WmW16)。【输出格式】输出仅一行,包含一个正整数,表示转换之后的m进制的数。【输入样例】mchange.in1516【输出样例】 mchange.outF【参考程序】/By LYLtimvar x:longword;m,n,i:byte; a:arraywordof byte;beginassign(input,mchange.in);reset(input); assign(output,mchange.out);rewrite(output); readln(x);readln(m);n:=0;repeatinc(n);an:=x mod m;x:=x div m;until x=0;for i:=n downto 1 dobeginif ai=10 then write(chr(ord(
2、ai)-10+ord(A); end;close(input);close(output);end.2、任意进制转换成十进制【问题描述】请你编一程序将将任意进制n(2WnW16)的整数转换成十进制数。【输入格式】 输入数据共有二行。第一行是一个正整数,表示需要转换的数的进制n (2WnW16)。 第二行是一个n进制的数,若n10则用大写字母AF表示数码1015。【输出格式】 输出仅一行,包含一个正整数,表示转换之后的十进制数。【输入样例】nchange.in16FF【输出样例】 nchange.out255【参考程序】/By LYLtimuses math;var n,i,len:byte;sum:longword;s:string;beginassign(input,nchange.in);reset(input);assign(output,nchange.out);rewrite(output); readln(n);readln(s);sum:=0;len:=length(s);for i:=1 to len dobeginif siin0.9then inc(sum,(ord
3、(si)-ord(0)*n*(len-i);if siinA.Ftheninc(sum,(10+ord(si)-ord(A)*n*(len-i);end;writeln(sum);close(input);close(output);end.3、任意进制转换问题描述】请你编一程序实现两种不同进制之间的数据转换。【输入格式】 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2WnW16),第二行是一个n进制数,若n10则用大写字母AF表示数码10 15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正 整数,表示转换之后的数的进制m(2WmW。【输出格式】 输出仅一行,包含一个正整数,表示转换之后的 m 进制数。【输入样例】change.in16FF2【输出样例】 change.out11111111【参考程序】/By LYLtimuses math;var n,m,len,i,l:byte;sum:longword;s:string;x:longword;a:arraybyteof byte;beginassign(input,change.i
4、n);reset(input); assign(output,change.out);rewrite(output); readln(n);readln(s);readln(m);sum:=0;len:=length(s);for i:=1 to len dobeginif siin0.9then inc(sum,(ord(si)-ord(0)*n*(len-i);if siinA.Ftheninc(sum,(10+ord(si)-ord(A)*n*(len-i);end;x:=sum;l:=0;repeatinc(l);al:=x mod m;x:=x div m;until x=0;for i:=l downto 1 dobeginif ai9 then write(chr(ord(A)+ord(ai)-10); end;close(input);close(output);end.4、数列(sequence.pas) 【问题描述】给定一个正整数k(3WkW15),把所有k的方幕及所有有限个互不相等的k的 方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是:1, 3,4,
5、9,10, 12, 13,(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,) 请你求出这个序列的第N项的值(用10进制数表示)。例如,对于k=3,N=100,正确答案应该是981。【输入文件】输入文件sequence.in只有1行,为2个正整数,用一个空格隔开:k N(k、N的含义与上述的问题描述一致,且3WkW15,10WNW1000)。 【输出文件】输出文件 sequence.out 为计算结果,是一个正整数(在所有的测试数据中 结果均不超过2.1*109)。(整数前不要有空格和其他符号)。【输入样例】3 100【输出样例】981【参考程序】/By LYLtimuses math;var n,m,len,i,l:byte; sum:longword; s:string; x:longword; a:arraybyteof byte;beginassign(input,change.in);reset(input); assign(output,change.out);rewrite(output); readln(n);readln(s)
6、;readln(m);sum:=0;len:=length(s);for i:=1 to len dobeginif siin0.9then inc(sum,(ord(si)-ord(0)*n*(len-i);if siinA.Ftheninc(sum,(10+ord(si)-ord(A)*n*(len-i);end;x:=sum;l:=0;repeatinc(l);al:=x mod m;x:=x div m;until x=0;for i:=l downto 1 dobeginif ai9 then write(chr(ord(A)+ord(ai)-10); end;close(input);close(output);end.5、波浪数(num.pas)【问题描述】波浪数是在一对数字之间交替转换的数,如 1212121,双重波浪数则是指在 两种进制下都是波浪数的数,如十进制数 191919 是一个十进制下的波浪数,它 对应的十一进制数121212也是一个波浪数,所以十进制数191919是一个双重波 浪数。类似的可以定义三重波浪数,三重波浪数在三种不同的进制中都是波浪数,甚至 还有
7、四重波浪数,如十进制 300=606(七进制) =363(九进制) =454(八进制) =1A1 (十三进制),你的任务就是在指定范围内找出双重、三重、四重波浪数。 【输入格式】一行,包含五个用空格隔开的十进制整数,前两个数表示进制的范围(232), 第三与第四个数表示指定的范围(110000000),第五个数为 2,3,4 中的一个, 表示要找的波浪数的重数。【输出格式】 从小到大,以十进制形式输出指定范围内的指定重数的波浪数,一行输出一 个数。【输入样例】num.in10 11 190000 960000 2【输出样例】 num.out191919【参考程序】/By LYLtimvar hex_low,hex_high,tar:byte;low,high,x:longword;function is_wave(x:longword;hex:byte):boolean;var l:byte;a:arraybyteof byte;beginl:=0;repeatinc(l);al:=x mod hex;x:=x div hex; if(l2)and(alal-2)or(l=2)and(al=al-1)then exit(false);until x=0; exit(true);end;is_wavefunction chongshu(x:longword):byte; var hex:byte;begin chongshu:=0; for hex:=hex_low to hex_high do beginif is_wave(x,hex) then inc(chongshu); if chongshutar then break;end;exit(chongshu); end;chongshubeginmain assign(input,num.in);reset(input); assign(output,num.out);rewrite(output); readln(hex_low,hex_high,low,high,tar); close(input);for x:=low to high do if chongshu(x)=tar then writeln(x); close(output);end.
《进制转换题目及代码》由会员公****分享,可在线阅读,更多相关《进制转换题目及代码》请在金锄头文库上搜索。