一道试题(10分)

M

mkbss

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个12位的数字,如257134786074,该数字的前11位偶数位之和的3倍
(5+1+4+8+0)*3=54,加上 前11位奇数位之和(2+7+3+7+6+7)=32
即54+32=86
那么该数字的末位数字=10-两者之和的个位
即4=10-6
请用delphi编写函数,检测该数字是否符合该规则
这是一道程序题,请高手指教
 
D

dfw1001

Unregistered / Unconfirmed
GUEST, unregistred user!
m(''257134786074'');
function m(temp:string):integer;
var jishu,oushu,x:integer;
tm:string;
begin
for i:=1 to 11do
begin
x:=strtoint(temp);
if (x mod 2)=0 then
jishu:=jishu+x
else
oushu:=oushu+x;
end;
oushu:=oushu*3;
x:=oushu+jishu;
tm:=inttostr(x);
m:=10-strtoint(copy(tm,length(tm)-1,1));
end;

试下吧
 
H

hzh2001sz

Unregistered / Unconfirmed
GUEST, unregistred user!
var
n :Int64;
i,odd,even,n12 : Integer;
na : array[1..12] of Integer;
begin
n := 257134786074;
for i := 12do
wnto 1do
begin
na := n mod 10;
n := n div 10;
end;
odd :=0;
even :=0;
for i := 1 to 11do
begin
if i mod 2 = 1 then
odd := odd + na
else
even := even + na;
end;
if na[12] = (10 - ((even * 3 + odd) mod 10 )) then
Writeln('该数字符合规则')
else
Writeln('该数字不符合规则');
end;
 
M

mkbss

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

回复
0
查看
850
不得闲
D
回复
0
查看
755
DelphiTeacher的专栏
D
D
回复
0
查看
811
DelphiTeacher的专栏
D
D
回复
0
查看
566
DelphiTeacher的专栏
D
顶部