如何做这题 free pascal 用repeat语句 解得别太复杂 我才7年及 要让我听得懂 我才选

求出所有小于1000并个位加百位的和能被十位整除的数的和、
2024-12-16 09:19:15
推荐回答(3个)
回答1:

这个问题主要用到取模(余数)的函数MOD 和 整除函数 DIV
个位=这个数除10的余数 (比如6的个位=6 ÷ 10=0....6,104的个位=104 ÷ 10=10.....4)
小于四位数的百位=这个数整除100 (比如10的百位=10 ÷ 100=0,502的百位=502 ÷ 100=5)
小于四位数的十位=这个数除10的结果再除10的余数 (如204=204 ÷ 10=20 20 ÷10=2.....0)
(个位+百位)整除十位=(个位+百位)除十位的余数为0,所以就=(个位+百位) mod 10=0
Var
i:Longint;
Begin
Repeat
Inc(i); {i+1}
If ((i Mod 10)+(i Div 100)) Mod (i Div 10 Mod 10)=0 Then
Writeln(i); {当i符合要求则输出}
Until i>999; {当大于999时停止}
End.

回答2:

program tt;
var
j,n,n1,n2,n3:integer; {n为数,n1为个位,n2为十位,n3为百位}

begin
n:=0;
repeat
n:=n+1;
j:=n
n1:=j mod 10;
j:=j div 10;
n2:=j mod 10;
n3:=j div 10;
if (n1+n2+n3=10) then write(n:4);
until n=999;
end.
一定要选我啊,不懂可以继续问

回答3:

program ex1;
var
n,j,i,k,x:integer;
begin
x:=0; ----------x是计算和的,一开始设为0
n:=100; ---------个位加百位能被十位整除,肯定是三位数,从100开始
repeat
n:=n+1;
j:=n mod 10; --------取出个位
i:=(n div 10) mod 10; -------------取出十位
k:=n div 100; ---------取出百位
if (j+k) mod i =0 then x:=x+n; ---------如果j+k除以i余数是0,意味着能整除,就加进x里
until n=999; ---------当n=999时,说明小于1000的三位数都轮过了,就跳出循环
write(x);
end.
你自己在pascal上面调试一下把,我没调试过,基本没问题的,可以追问,哪里不懂吗?