阅读程序专题
关于
2个月前
更新
0
频次
42
题目数
分享
有问题?问问AI帮你修改 改主题:如咖啡问卷改为奶茶问卷
本试卷共 6 道阅读程序题,包含判断题与选择题,每题均附标准答案与解析。请仔细阅读代码与题目描述,按要求作答,祝您考试顺利!
Q1:姓名
:程序 1:小模拟(统计某数位出现次数)#include using namespace std;int n, k, cnt = 0;void dep(int x) { int a; while(x 1) { a = x % 10; if (a == k) cnt++; x = x / 10; }}int main() { cin n k; dep(n); cout cnt endl; return 0;}
Q2:【程序1】判断题:将第 7 行“a = x % 10;”改为“a = x - x/10*10;”,程序的运行结果不会改变。
Q3:【程序1】判断题:如果 k=10,则程序一定输出 0。
Q4:【程序1】判断题:如果 k=0,则程序一定输出 0。
Q5:【程序1】选择题:如果输入是 n=11123, k=1,程序的输出结果是()。
Q6:【程序1】选择题:如果输入是 n=12233, k=2,程序的输出结果是()。
:分割线
:程序 2:字符串模拟(字母桶计数)#include using namespace std;char st[100];int cnt[100];int len, sum = 0;int main() { scanf(%s, st); len = strlen(st); for(int i = 0; i len; i++) { if (st[i] = a && st[i] = z) st[i] = st[i] - a + A; } for(int i = 0; i len; i++) { if (st[i] = A && st[i] = Z) { cnt[st[i]-A]++; } } for(int i = 0; i 26; i++) { printf(%d , cnt[i]); sum = sum + cnt[i]; } printf(\n); printf(%d\n, sum); return 0;}
Q7:【程序2】判断题:若输入全为小写字母且互不相同,则输出一定为 26。
Q8:【程序2】判断题:大小写字母分别计数,因此 A 和 a 会被视为不同字符。
Q9:【程序2】判断题:若输入为空字符串,则程序会发生运行时错误。
Q10:【程序2】选择题:若输入字符串中没有任何字母(如全为数字或符号),程序输出是()。
Q11:【程序2】选择题:若输入为 aAbBcCdD(4 个不同小写+3 个不同大写,注意字母不重复),程序统计不同字母的个数为()。
:分割线
:程序 3:数组模拟(桶计数,从大到小取偶次)#include using namespace std;int n, sum = 0, js = 0;int a[1005], b[1005], maxn = 0;int main() { cin n; for(int i = 1; i = n; i++) { cin a[i]; b[a[i]]++; if (a[i] maxn) maxn = a[i]; } for(int i = maxn; i = 1; i--) { if (b[i] 0) { js = js + 1; if (js % 2 == 0) sum += b[i]; } } cout sum endl; return 0;}
Q12:【程序3】判断题:程序从大到小遍历不同值,并累加偶数次序位上的频次。
Q13:【程序3】判断题:若 maxn 初始为 0,输入数据均为正整数,则 maxn 最终会更新为 a 数组中的最大值。
Q14:【程序3】判断题:将第 2 个 for 循环的起始条件改为 i=n 而不是 i=maxn,结果一定不变。
Q15:【程序3】选择题:若输入 n=5,a 数组为 1,2,3,4,5(各出现 1 次),程序输出是()。
Q16:【程序3】选择题:若频次分布为 1→2、2→1、3→3、4→1,程序输出 sum 为()。
:分割线
:程序 4:数组模拟(约瑟夫环变体)#include using namespace std;int n, k, live[100];int main() { cin n k; for(int i = 1; i = n; i++) live[i] = 1; int ind=0; for(int i = 1; i n; i++) { int bs = 0; while(bs != k) { ind++; if (ind n) ind = 1; if (live[ind]==1) bs++; } live[ind] = 0; } for(int i = 1; i = n; i++) if (live[i] == 1) cout i ; return 0;}
Q17:【程序4】判断题:live 数组用 1 表示存活、0 表示出局,报数时只对 live[ind]==1 的人计数。
Q18:【程序4】判断题:ind 超过 n 时会回到 1,实现环形报数。
Q19:【程序4】判断题:程序最终输出的是最后一个存活者的编号。
Q20:【程序4】选择题:在特定输入下,程序输出的幸存者编号为 2,对应的选项是()。
Q21:【程序4】选择题:当 k 取某特殊值时,幸存者编号总是 n,对应选项是()。
:分割线
:程序 5:指向法(二分图配对计数)#include using namespace std;int n, w1 = 0, w2 = 0;int a[100], b[100];int main() { int x, y; cin n; for(int i = 1; i = n; i++) { a[i] = 0; b[i] = 0; } for(int i = 1; i = n; i++) { cin x y; if (a[x] != 0) b[a[x]] = 0; else w1++; a[x] = y; b[y] = x; } for(int i = 1; i = n; i++) { if (a[i] 0) w2++; if (b[i] 0) w2++; } cout w1*2-w2 endl; return 0;}
Q22:【程序5】判断题:w2 统计的是 a、b 两个数组中大于 0 的元素总个数,且每个数对 (x,y) 一定贡献 2 个计数。
Q23:【程序5】判断题:若每次输入都把之前的映射完全覆盖且最终无有效映射,则 w2 一定等于 2n。
Q24:【程序5】判断题:b[y]=x 表示建立从 y 到 x 的反向映射,且可能覆盖旧值。
Q25:【程序5】选择题:在特定输入下,w1 的输出结果为 0,对应选项是()。
Q26:【程序5】选择题:在特定输入下,w2 的输出结果为 99,对应选项是()。
:分割线
:程序 6:递归类(二分分治交换计数)#include using namespace std;int n, a[1000], b[1000];int ff(int l, int r) { if (l == r) return 1; int mid = (l+r) / 2, Lv = 0, Rv = 0; for(int i = l; i = mid; i++) if (a[i] b[i]) { Lv++; int tmp = a[i]; a[i] = b[i]; b[i] = tmp; } for(int i = mid+1; i = r; i++) if (b[i] a[i]) { Rv++; int tmp = a[i]; a[i] = b[i]; b[i] = tmp; } int lf = ff(l, mid); int rf = ff(mid+1, r); return lf * Lv + rf * Rv;}int main() { cin n; for(int i = 0; i n; i++) cin a[i]; for(int i = 0; i n; i++) cin b[i]; cout ff(0, n-1) endl;
Q27:【程序6】判断题:将递归边界“if(l == r) return 1;”改为“if(l r) return 1;”,程序结果不变。
Q28:【程序6】判断题:交换第 21 行“int lf = ff(l, mid);”和第 22 行“int rf = ff(mid+1, r);”的顺序,结果不变。
Q29:【程序6】选择题:假设 n=10,且满足 a[i]=i,b[i]=n-1-i,则程序的输出是()。
Q30:【程序6】选择题:假设 n=100,且满足 a[i]=i,b[i]=n-1-i,则程序的输出是()。
Q31:【程序6】选择题:假设 n=10,且满足所有 b[i] a[i],则程序的输出是()。
联系我们
问卷网公众号