1、辅导信息学奥赛的几点体会精心备课,突破疑点难点,追求直观高效。分析: 将十进数转换成二进制数 ,一般采用除二取余法。如果用一个数组 b来存放二进制数 ,可以依次把所得的余数存入 b0、 b1、 、 bn,最后按 bn、 bn-1、 、 b1、b0的顺序输出这些余数 ,就得到了所求的二进制数。 1、读入一个十进制自然数,将其转换成二进制数后输出。例如: 余数:2521226232120输出结果为: 11001010110123456var i,j,n:longint; b:array 0.31 of 0.1;beginreadln(n);write(n,=();i:=0;while( ) dob
2、egin( ) ;i:=i+1; 指定下一个余数的存放位置 n:=n div 2 产生的商将作为新的被除数 end;for j:=( ) do write(bj);writeln()2)end.nl2 then j:=l1 else j:=l2;k:=0;for i:=l1 downto 1 dobegink:=k+1;ak:=ord(str1i)-ord(0);end;k:=0;for i:=l2 downto 1 dobegink:=k+1;bk:=ord(str2i)-ord(0);end;for i:=1 to j dobeginai:=ai+bi; if ai=10then begi
3、nai:=( ) ;ai+1:=( ) ;end;end;if ai+1=0 then j:=j-1;for i:=j+1 downto 1 do write(ai);writeln;end.处理进位从低位到高位依次将各位数相加用字符串形式输入加数和被加数ai-10ai+1+1分析: 类似加法,可以用竖式求乘法。在做乘法运算时,同样也有进位,同时对每一位进行乘法运算时,必须进行错位相加。8 4 82 32 5 4 41 6 9 61 9 5 0 43*8+0+0=24 c1=4x= ai*bj+ x div 10+ ci+j-1 ci+j-1= x mod 103*4+2+0=14 c2=43
4、*8+1+0=25 c3=5c4=22*8+0+4=20 c2=02*4+2+5=15 c3=52*8+1+2=19 c4=9c5=13、高精度乘法vars1,s2:string;a,b:array1.100of 0.9;c:array1.200of 0.9;la,lb,lc, i,j,x,y,z,w:integer;beginreadln(s1); readln(s2);la:=length(s1); lb:=length(s2); lc:=la+lb; 积的位数为 la+lb-1或者 la+lb; for i:=la downto 1 do ala-i+1:=ord(s1i)-ord(0)
5、;for i:=lb downto 1 do blb-i+1:=ord(s2i)-ord(0);for i:=lc downto 1 do ci:=0;for i:=1 to la dobeginx:=0; 上次乘积进位初始化 for j:=1 to lb do 对乘数的每一位进行处理 beginx:=ai*bj+x div 10+ci+j-1;ci+j-1:= x mod 10;end;ci+j:= x div 10;end;while (clc=0) and (lc1) do lc:=lc-1; for i:=lc downto 1 do write(ci); writeln;end.varyh:array1.5,1.5of integer;i,j:integer;beginyh1,1:=1;for i:=2 to 5 dobeginyhi,1:=1;yhi,i:=1;for j:=2 to i-1 doyhi,j:=yhi-1,j-1 + yhi-1,j;end;for i:=1 to 5 do beginfor j:=1 to i do write(yhi,j:3); writeln;end;end.11 11 121 13 31 14 6 44、 阅读 程序,写出运行 结果。