var n,i,k:integer; s:string; begin readln(n); for i:=1 to n do begin str(i,s); k:=pos('7',s); if (i mod 7=0) or (k<>0) then write(i,' '); end; end. 输入:50 分析:本题的本质是输出1至n(这里n=50)之间的整数中包含有数字“7”或是7的倍数的数。故输出结果为: ________________________________
const n=6; var I,j,k:integer; r:array[0..10] of integer; begin for I:=1 to n do read(r[I]); for I:=2 to n do begin k:=r[I];j:=I-1; while (k>r[j]) and (j>0) do begin r[j+1]:=r[j];j:=j-1;end; r[j+1]:=k; end; for I:=1 to n do write(r[I],' '); end. 输入: 8 9 1 3 2 0 分析:本题是先读入6个整数,然后用插入排序法按从大到小的顺序排序。故输出的结果如下:____________
var a:array[1..10] of integer; n,m,i,j,k,p:integer; begin readln(n,m); for i:=1 to n-1 do a[i]:=i+1; a[n]:=1;j:=n;k:=1;p:=0; repeat j:=a[j];k:=k+1; if k=m then begin write(a[j]:3); p:=p+1; a[j]:=a[a[j]]; k:=1; end until p=n; end. 输入:10 6 分析:本题是约瑟夫问题,共有n个人,从第1个人开始报数,每报到m的人出列,然后继续下一个人开始重新报数,依此处理,直到所有的人都出列为止,输出出列的人的顺序。A[j]表示第j个人的下一个的编号,P表示出列的人数。输出结果如下:______________________
const maxn=100000; var ch:char; n,s,m,max,k,i,j,l:integer; a:array[1..maxn] of char; begin readln(n); for i:=1 to n do begin s:=0;k:=0; read(ch); while ch<>'E' do begin inc(k); a[k]:=ch; read(ch); end; readln; m:=0; for j:=1 to k do begin if a[j]='Y' then begin s:=s+1; m:=m+1; end else m:=0; if m=3 then begin s:=s+1; m:=0; end; end; if s>=max then begin max:=s; l:=i; end; end; writeln(l,’ ’,max); end. 输入:3 YYNNNYYYYYYNYNYYE YYNNNNNNYE NNNNNYNNNNYYE 分析:本题是求在3个字符串中,Y的个数与“YYY”的个数的和最多的是哪个字符串,并输出和。E是每个字符串的结束标记。从上面给出的三个字符串中可看出,第一个字符串的和最大。“YYNNNYYYYYYNYNYYE”中有11个Y,2个“YYY”。 故输出为:____________________
求实数经的整数幂 。 const maxn=100; var n,j,k:longint; x,y:extended; a:array[1..maxn] of integer; begin readln(x,n); k:=0; while n<>0 do begin _______ ①_________ ; a[k]:=n mod 2; n:=n div 2; end; __________②________; for j:=k downto 1 do begin y:= __________ ③____________ if__________ ④_________ then y:=y*x; end; writeln(y) end.
查看答案
① ;\\填 k:=k+1(或inc(k)),这里k是累加变量。 ② ;\\填 y:=1, 累乘积变量初始化。 ③ ;\\填 y*y 迭代相乘 ④ then y:=y*x; \\填 a[j]=1 如果n为奇数时,再乘一次x.
program data2(input,output); const n=5; var i,j,k:integer; a:array[1..2*n,1..2*n] of integer; begin k:=1 ; for i:=1 to _____(5)_____ do if i<=n then if odd(i) then for j:=_____(6)_____ do begin a[i-j+1,j]:=k; k:=k+1 end else for j:=1 to i do begin ______(7)______; k:=k+1 end else if odd(i) then for j:=n downto____(8)____ do begin a[i-j+1,j]:=k; k:=k+1 end else for j:=______(9)______ do begin a[i-j+1,j]:=k; k:=k+1 end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln; end; end.
查看答案
_____(5)_____ do \\填2*n-1,i表示对角线,共有2*n-1条对角线 _____(6)_____ do \\填I downto 1,对角线11->12->…->15上方的奇数条对角线列坐标从I 到 1循环 ______(7)______; \\填a[i-j+1,j]:=k,给对角线坐标位置赋值 ____(8)____ do \\填i-n+1,对角线11->12->…->15下方的第奇数条对角线的列坐标循环变化 _____(9)______ do \\填i-n+1 to n,对角线11->12->…->15下方的第奇数条对角线的列坐标循环变化