INPUT a$ l=LEN(a$) DIM a(l) FOR i = 1 TO l a(i) = VAL(MID$(a$, i, 1)) NEXT prucedure readdata(var in:array[1..100] of integer); var ch:char; i,k:integer; begin read(ch);k:=0; while ch in["0".."9"] do begin inc(k);int[k]:=ord(ch)-48; read(ch); end; end;
进行加法处理时,先设置一个加法进位标志 T,并将 T 的初值设为 0。当两数相加时,从低位到高位,各位数字分别相加,如果相加后某个单元中的数大于 10,则将该单元中的数减去10,并将进位标志 T 设为 1,当对下一单元进行相加时,还要再加上前一个单元的进位标志 T。同时将 T 再次置为 0,不断重复,直到最高位为止。具体算法为:
QBASIC PASCAL
T=0 对变量 I 从 1 到 N,重复下列步骤: C(I)=A(I)+B(I)+T:T=0 IF C(I)>=10 THEN C(I)=C(I)-10:T=1 T:=0; 对变量 I 从 1 到 N,重复下列步骤: C[I]:=A[I]+B[I]+T;T:=0; IF C[I]>=10 THEN BEGIN C[I]:=C[I]-10;T:=1; END;
②、乘法的进位处理
QBASIC PASCAL
Y=A(I)*B(I)+C:C=Y\10:C(I+J-1)=Y-C*10 Y:=A[I]*B[I]+C;C:=Y div 10;C[I+J-1]:=Y-C*10
③、减法的借位处理
BASIC PASCAL IF A(I))<B(I) THEN A(I+1)=A(I+1)-1 A(I)=A(I)+10 END IF C(I)=A(I)-B(I) IF A[I]B[I] THEN BEGIN A[I+1]:=A[I+1]-1; A[I]:=A[I]+10 END IF C[I]:=A[I]-B[I];
4、商和余数的求法
设A,B分别为不大于9位的整数,则:
QBASIC PASCAL
C=A\B为商的整数部分 X=A MOD B为余数 C:=A DIV B为商的整数部分 X:=A MOD B为余数
进行加法处理时,先设置一个加法进位标志 T,并将 T 的初值设为 0。当两数相加时,从低位到高位,各位数字分别相加,如果相加后某个单元中的数大于 10,则将该单元中的数减去10,并将进位标志 T 设为 1,当对下一单元进行相加时,还要再加上前一个单元的进位标志 T。同时将 T 再次置为 0,不断重复,直到最高位为止。