PASCAL求一个数的个十百千万位上的数

你们讲的太深奥了。我记得好象是
百位=这个数 mod 10;
十位=这个数 mod 100 div 10
......

给你一个求一个数左数第k位的函数,如果没有则返回-1。写个简单的递归程序。

function get(n,k:longint):longint;
begin
if ((trunc(ln(n)/ln(10))+1)<k)or(k<1) then exit(-1);
if k=1 then exit(n mod 10);
exit(n div 10,k-1);
end;

你说的“百位=这个数 mod 10;十位=这个数 mod 100 div 10 ”太局限了,如果求十万位不是要打字打死了吗?用朴素算法求,对任意情况都能做。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-03
个位=这个数 mod 10 (div 1)
十位=这个数 mod 100 div 10
百位=这个数 mod 1000 div 100
千位=这个数 mod 10000 div 1000
万位=这个数 mod 100000 div 10000



个位=这个数 (div 1) mod 10
十位=这个数 div 10 mod 10
百位=这个数 div 100 mod 10
千位=这个数 div 1000 mod 10
万位=这个数 div 10000 mod 10
第2个回答  2009-02-03
var
s:string;
i:longint;
begin
readln(s);
for i:=length(s) downto 1 do
write(s[i]);
end.
第3个回答  2009-02-03
两个参考程序:
var n:string;
begin
read(n);{这里只能输入5位数}
writeln('这个数的万位是',n[1]);
writeln('这个数的千位是',n[2]);
writeln('这个数的百位是',n[3]);
writeln('这个数的十位是',n[4]);
writeln('这个数的个位是',n[5]);
end.

var n,s1,s2,s3,s4,s5:integer;
begin
read(n);{这里最大能输入32767,最小为1}
s1:=n div 10000;n:=n-n div 10000*10000;
s2:=n div 1000;n:=n-n div 1000*1000;
s3:=n div 100;n:=n-n div 100*100;
s4:=n div 10;n:=n-n div 10*10;
s5:=n; {上面改的简单了一点}
writeln('这个数的万位是',s1);
writeln('这个数的千位是',s2);
writeln('这个数的百位是',s3);
writeln('这个数的十位是',s4);
writeln('这个数的个位是',s5);
end.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网