阅读程序1:(程序输入不超过数组或字符串定义的范围;判断题正确填T,错误填F;除特殊说明外,判断题 1.5,选择题 3 分,共计 40分)判断题
(1)输入的字符串只能由小写字母或大写字母组成。()
(2)若将第 8 行的 i = 1 改为 i = 0,程序运行时会发生错误。()
(3)若将第 8 行的 i <= n 改为 i * i <= n,程序运行结果不会改变。()
(4)若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。()
选择题
(5)若输入的字符串长度为 18,那么输入的字符串跟输出的字符串相比,至多有()个字符不同。
A. 18
B. 6
C. 10
D. 1
(6)若输入的字符串长度为(),那么输入的字符串跟输出的字符串相比,至多有 36 个字符不同。
A. 36
B. 100000
C. 1
D. 128
阅读程序2:假设输入的 n 和 m 都是正整数,x 和 y 都是在 [1,n] 的范围内的整数,完成下面的判断题和单选题:
判断题
(1)当 m>0 时,输出的值一定小于 2n。()
(2)执行完第 27 行的 ++ans 时,ans —定是偶数。()
(3)a[i] 和 b[i] 不可能同时大于 0。()
(4)若程序执行到第 13 行时,x 总是小于 y,那么第 15 行不会被执行。()
•选择题
(5)若 m 个 x 两两不同,且 m 个 y 两两不同,则输出的值为()
A. 2n-2m
B. 2n+2
C. 2n-2
D. 2n
(6)若 m 个 x 两两不同,且 m 个 y 都相等,则输出的值为()
A. 2n-2
B. 2n
C. 2m
D. 2n-2m
阅读程序3:判断题
(1)如果 a 数组有重复的数字,则程序运行时会发生错误。()
(2)如果 b 数组全为 0,则输出为 0。()
选择题
(3)当 n=100 时,最坏情况下,与第 12 行的比较运算执行的次数最接近的是:()。
A. 5000
B. 600
C. 6
D. 100
(4)当 n=100 时,最好情况下,与第 12 行的比较运算执行的次数最接近的是:()。
A. 100
B. 6
C. 5000
D. 600
(5)当 n=10 时,若 b 数组满足,对任意 0≤i<n,都有 b[i] = i + 1,那么输出最大为()。
A. 386
B. 383
C. 384
D. 385
(6)(4分)当 n=100 时,若 b 数组满足,对任意 0≤i<n,都有 b[i]=1,那么输出最小为()。
A. 582
B. 580
C. 579
D. 581
完善程序1:1.①处应填()
A. n%2
B. 0
C. t
D. 1
2.②处应填()
A. x-step,y-step
B. x,y-step
C. x-step,y
D. x,y
3.③处应填()
A. x-step,y-step
B. x+step,y+step
C. x-step,y
D. x,y-step
4.④处应填()
A. n-1,n%2
B. n,0
C. n,n%2
D. n-1,0
5.⑤处应填()
A. 1<<(n+1)
B. 1<<n
C. n+1
D. 1<<(n-1)
完善程序2:(计数排序)计数排序是一个广泛使用的排序方法。下面的程序使用双关键字计数排序,将 n 对 10000 以内的整数,从小到大排序。
例如有三对整数 (3,4)、(2,4)、(3,3),那么排序之后应该是 (2,4)、(3,3)、(3,4) 。
输入第一行为 n,接下来 n 行,第 i 行有两个数 a[i] 和 b[i],分别表示第 i 对整数的第一关键字和第二关键字。
从小到大排序后输出。
数据范围: 1<n<107,1<a[i],b[i]<104。
提示:应先对第二关键字排序,再对第一关键字排序。数组 ord[] 存储第二关键字排序的结果,数组 res[] 存储双关键字排序的结果。1.①处应填()
A. ++cnt[i]
B. ++cnt[b[i]]
C. ++cnt[a[i] * maxs + b[i]]
D. ++cnt[a[i]]
2.②处应填()
A. ord[–cnt[a[i]]] = i
B. ord[–cnt[b[i]]] = a[i]
C. ord[–cnt[a[i]]] = b[i]
D. ord[–cnt[b[i]]] = i
3.③处应填()
A. ++cnt[b[i]]
B. ++cnt[a[i] * maxs + b[i]]
C. ++cnt[a[i]]
D. ++cnt[i]
4.④处应填()
A. res[–cnt[a[ord[i]]]] = ord[i]
B. res[–cnt[b[ord[i]]]] = ord[i]
C. res[–cnt[b[i]]] = ord[i]
D. res[–cnt[a[i]]] = ord[i]
5.⑤处应填()
A. a[i], b[i]
B. a[res[i]], b[res[i]]
C. a[ord[res[i]]],b[ord[res[i]]]
D. a[res[ord[i]]],b[res[ord[i]]]