擅长:python、mysql、java
<p>第一件事是当C为空时从C复制内容。在尝试访问其元素之前,应放置readln(C):</p>
<pre><code>writeln('Enter the code which contains 11 digits:');
readln(C);
nr1:=...
nr2:=...
</code></pre>
<p>第二点是,如果值只有1个字符,则可以通过索引访问它:</p>
^{pr2}$
<p>要将字符串转换为整数,必须包含sysutils才能使用strpoint函数:<a href="http://www.freepascal.org/docs-html/rtl/sysutils/strtoint.html" rel="nofollow">http://www.freepascal.org/docs-html/rtl/sysutils/strtoint.html</a></p>
<p>另一种方法(逐字符)是计算char值与48(即“0”的ASCII代码)之间的差</p>
<p>样本代码:</p>
<pre><code>uses sysutils;
var C:string
nr1, nr2, nr3, nr4, nr5, nr6, nr7, nr8, nr9, nr10, nr11: integer;
begin
readln(C);
nr1:=strtoint(C[1]);
nr2:=strtoint(C[2]);
nr3:=strtoint(C[3]);
.
.
.
if nr11 = (nr1*1 + nr2*2 + nr3*3 + nr4*4 + nr5*5 + nr6*6 + nr7*7 + nr8*8 + nr9*9 + nr10*1) mod 11 then
writeln('The code is correct!')
//if you skip the begin/end statements, only the next statement
//is executed in loops/if statements
else writeln('Not correct'); //notice that I didn't use ELSE IF but ELSE
readln;
//in Pascal you can skip the parathenses if you don't pass arguments to the function
end.
</code></pre>