|
综合练习一 |
|
|
|
|
一、选择题
1.要用一个数组存放某班30人3门课的考试成绩(考试成绩保留1位小数),下面哪个说明中的数组可以存放这些数据? A)var s:array[1..3,1..30] of integer; B)var s:array["a".."c",1..30] of real; C)var s:array[1..30,boolean] of real; D)var s:array[1..30,"A".."C"] of integer; 2.设有说明 VAR x:ARRAY[1..3,"x".."z"]0F Real; 则x[3,"x"]是 A)一个存放实型数据的数组元素 B)一个具有3个字符型元素的数组 C)一个具有3*3个实型元素的数组 D)一个具有6个实型元素的数组
3.设有如下说明: var a:array[1..4,1..4] of integer; i,j:integer; 且以第1个下标代表行、第2个下标代表列给a赋值为: 3 2 1 4 4 3 3 1 3 2 4 3 2 1 3 2 则执行程序段 FOR i:=1 TO 4 DO FOR j:=1 TO 4 DO a[i,j]:=a[a[i,j],a[j,i]]; writeln(a[2,3]) 后输出的是: A)1 B)2 C)3 D)4 4.已知有如下说明: VAR a:ARRAY[1..4,2..5]0F Integer; b:ARRAY[2..5,1..4]0F Integer; i,j:integer; 且a已赋值,若将a的所有元素传送给b,下面的程序段在运行时无错误的是 A)for i:=1 to 4 do B)for i:=1 to 4 do for j:=1 to 4 do for j:=2 to 5 do b[j,i]:=a[i,j] b[i,j]:=a[i,j] C)for i:=2 to 5 do D)for i:=1 to 4 do b[i,i-1]:=a[i-1,i] b[i,i+1]:=a[i,i+1]
二、看程序写结果
1.
PROGRAM CHU7_3; VAR P,Q,S,T:INTEGER; BEGIN READLN(P); FOR Q:=P+1 TO 2*P DO BEGIN T:=0; S:=(P*Q)MOD(Q-P); IF S=0 THEN BEGIN T:=P+Q+(P*Q)DIV(Q-P); WRITE(T:4); END; END; READLN END. 输入:12 输出:
2.
PROGRAM CHU7_2; VAR I,J,F:INTEGER; A:ARRAY[1..8]OF INTEGER; BEGIN FOR I:=1 TO 8 DO BEGIN F:=I MOD 2; IF F=0 THEN A[I]:=0 ELSE A[I]:=1; FOR J:=1 TO I DO IF F=0 THEN A[I]:=A[I]+J ELSE A[I]:=A[I]*J END; FOR I:=1 TO 8 DO WRITE(A[I]:5); END. 输出:
3.
var a:array[1..6] of integer; i,j,p,t:integer; begin for i:=1 to n do read(a[i]); for j:=1 to n-1 do begin p:=j; for i:=j to n do if a[i]< a[p] then p:=i; t:=a[p];a[p]:=a[j];a[j]:=t; end; for i:=1 to n do begin write(a[i]:2); if i mod 3=0 then writeln; end end. 输入:7 2 5 1 9 4 输出:
4.
var i,j,n:integer;
begin
readln(n);
for i:=1 to 2*n do
if i<=n then
begin
write("":20-i);
for j:=1 to 2*i-1 do write("*");
for j:=1 to 2*(n-i) do write(" ");
for j:=1 to 2*i-1 do write("*");
writeln
end
else
begin
write("":20-2*n+i);
for j:=1 to 2*(2*n-i)-1 do write("*");
for j:=1 to 2*(i-n) do write(" ");
for j:=1 to 2*(2*n-i)-1 do write("*");
writeln
end
end.
输入:5
输出:
三、填空题:请将每空的正确答案写在横线上
输入n个0到100之间的整数,由小到大排序输出,每行输出8个 程序清单: PROGRAM CHU7_5; VAR I,J,K,N,X:INTEGER; B:ARRAY[0..100]OF INTEGER;
BEGIN READLN(N); FOR I:=0 TO 100 DO B[I]:=0; FOR I:=1 TO N DO BEGIN READLN(X); B[X]:= ① END; ② FOR I:=0 TO 100 DO WHILE ③ DO BEGIN WRITE( ④ ); K:=K+1; B[I]:=B[I]-1; IF ⑤ THEN WRITELN END; READLN END.
四、编写程序 1.周末三位同学各带着7个鱼筐去打鱼,收工时有7个鱼筐装满了鱼,7个鱼筐装了一半,还有7个鱼筐是空的,问怎样分配这些鱼筐使得每位同学得到的鱼和鱼筐都是一样多。
2.设矩阵a为5×5的方阵,编制一个程序,实现下述功能 (1) 使a的全部元素为O; (2) 使a的上三角元素为0: (3) 使a的第二列元素等于0;(4) 使a的元素除主对角线元素之外,其他元素都为0
3.输入一个各个位上数字不全相同的四位数。把组成这个四位数的数字从大到小排列,形成由这四个数字构成的最大的四位数,再把组成这个四位数的数字从小到大排列,形成由这四个数字构成的最小的四位数,求出两数之差,得到一个新的四位数。如此循环总能得到最后的结果6174。请编程实现循环过程。 例输入:n=5346时 输出:6543-3456=3078 8730-378=8352 8532-2358=6174
4.设有n个人因坐成一圈,并且按照顺时针方向从1到n编号,由第s个人开始进行从1到m的报数,报数到第m个人时,此人出圈,再从下一个人重新开始从1到m报数,如此进行下去,直到所有的人都出圈为止。现在要求编程按照出圈的顺序,每10个人一组,输出这n个人的顺序表。
5.对给定的整数n(0<n<80),编程计算并输出i!(i的阶乘,i=1,2,…,n)的全部有效数字。 因i!的数字可能很大,故采用一维数组表示法存储计算结果。例如 14!=87178291200在数组a中可存储成 0 0 2 1 9 2 8 7 1 7 8 0 0…。在计算n!时采用了以加法代替乘法运算的办法。例如,由5!=120计算6!时, 把原来的120再累加5次120,得至6!=720。
6、输入年、月、日,求这一天是星期几。 算法提要:求出这一天离公元1年的元旦有多少天,然后对7求余{公元1年的元旦为星期一}
7、键入自然数N,打印出一个上下左右全方位对称的字符图形,其形如田字,边长2*N+1个字符,笔划均按字母顺序递增或递减对称排列。 例如:N=3时,图形为:
A B C D C B A B C B C B C D C B A B C D V B C B C B A B C D C B A
8、键入两个自然数N和K,将N写成K个大于1的自然数相乘,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-1)个数是N分解出来的最小自然数。 例如:N=24,K=2时,输出为24=2*12,而不是24=4*6 N=3,K=2时,输出则为“No answer!”
| | |