华仪电气官方网站:PASCAL程序设计问题:

来源:百度文库 编辑:杭州交通信息网 时间:2024/03/28 17:56:42
输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

program DoSum;
var
I, SumI: Integer;
begin
Write('Input a number: ');
Readln(I);
I := Abs(I); {确保I为正数}
SumI := 0;
while I > 0 do
begin
SumI := SumI + I mod 10; {取得最低一位, 加到SumI}
I := I div 10; {去掉最低一位}
end;
Writeln('它的各位数字之和是: ', SumI);
end.

现编的, 没有调试, 所以不知语法有没有问题, 不过意思就是这个意思. 你自己运行一下试试.

无限位数所以:
以字符读入
program DOIT;
var
l:real;
c:char;
begin
assign(input,'aa.in'); {输入在aa.in中}
reset(input);
l:=0;
while not eof do begin
read(c);
l:=l+ord(c)-48;
end;
close(input);
writeln(r:0:0);
end.
打的,没试。

program aa;
var
number :string;
shu:real;
t,tt:integer;
begin
readln(number);
t:=len(number);
for tt:=1 to t do shu:=shu+(ord(number[tt])-48)
writeln(shu);
end.

program kk;
var f:string; m,i,ans:word;
begin
readln(f); {以字符串形式读入一整数}
m:=length(f); {求字符串长度,即数位}
for i:=1 to m do
ans:=ans+(ord(m[i])-ord('0')); {逐个取位相加}
end;
writeln('The total is:',ans); {输出}
end.
正确率百分之百!
处理较大的数字也绰绰有余!
如果用实型即使开浮点也不能输入太大的数字
这就是用字符串的好处!

不应该用string 那个只有255位 ansistring 才是无限长度的 应该用那个!!或者直接一位位的读入,然后读一位处理一位,可是设个ch:char 就办了!!

以字符串的形式读入整数,然后按位减去48,再相加