需要用高精度运算的根本原因是( )。
考点:为什么要高精度(A1)。
(A1)考点:为什么要高精度——数超出 long long 约 的范围即溢出,须用数组模拟。
解析:本题考查为什么要高精度。long long 约 位十进制,阶乘、幂、大斐波那契轻松越界;越界后数值回绕、结果无声出错。高精度用数组逐位存数、模拟竖式运算,位数不受限。
排除法:D 选更快的人把目的与代价弄反——高精度慢得多;B 选代码更短的人没写过四则模板;C 选数组只能存字符串的人把存储手段当成了原因。
高精度整数最常用的存储方式是( )。
考点:存储方式(A2)。
(A2)考点:存储方式——字符串读入转整型数组,每格一位。
解析:本题考查存储方式。整型数组每格存一位数字(),配 len 记位数;运算在数组上逐位进行。字符串只是读入的载体,进入运算前已转成数字。
排除法:A 选 long long 的人恰恰要溢出;D 选 double 的人忘了 double 只有约 位有效精度,尾部数字全错;B 选每格 double 的人既浪费又没解决进位问题。
把低位存在下标 、高位存后面的逆序存储,主要好处是( )。
考点:逆序存储的理由(A3)。
(A3)考点:逆序存储的理由——下标 0 恒为个位,对齐运算、进位追加都自然。
解析:本题考查逆序存储的理由。加法进位向高位传,结果变长时向数组尾部追加即可,不必整体挪位;若正序存储,个位在下标末尾、两数长度不同还要先对齐末尾。逆序是让「数组增长方向」与「进位方向」一致的巧思。
排除法:C 选打印方便的人正好说反——逆序输出要倒着打;A 选内存更小的人方向无关内存;D 选乘法不用进位的人给存储方式安了不存在的功能。
每格只存一位十进制数字的「逐位存储」,与每格存四位的「压位」相比(压位属竞赛优化,大纲未明列)( )。
考点:逐位与压位(A4)。
(A4)考点:逐位与压位——逐位简单不易错,压位省循环但复杂(竞赛优化、大纲未明列)。
解析:本题考查逐位与压位。每格一位时进位上限 以内直观;每格存四位(万进制)时单格值可达 ,运算次数减为四分之一但取模除法基数为 、转换更绕。初学先掌握逐位。
排除法:B 选代码完全一样的人没见过两套模板的差异;A 选压位不溢出的人忘了压位恰恰要在乘法中小心单格溢出;D 选逐位不能乘法的人与事实相反。
用数组存高精度数时,通常另设变量 len 记录位数,原因是( )。
考点:长度记录(A5)。
(A5)考点:长度记录——len 控制循环边界与结果长度。
解析:本题考查长度记录。数组不携带「有效到第几位」的信息:运算循环跑多少位、结果去零后剩几位、输出从哪位起打,全靠 len。运算后更新 len(加法可能加一、减法去零后变短)是模板的固定动作。
排除法:D 选输出格式的人把服务对象搞反;A 选编译需要的人高估了编译器;C 选存符号的人把职责张冠李戴。
运算结果数组高位可能出现多余的 (如减法借位后),输出前应( )。
考点:前导零处理(A6)。
(A6)考点:前导零处理——高位删零到非零或只剩一位。
解析:本题考查前导零处理。减法常把高位削成零( 的中间结果),输出前从最高位删值为 的位;全零时保留一位输出 (数值零的唯一合法表示)。
排除法:C 选全部保留的人输出 012 这类带零答案;B 选清空重算的人用大炮打蚊子;A 选只在乘法处理的人忘了减法才是前导零重灾区。
初赛范围内高精度运算对负数的标准处理思路是( )。
考点:符号处理总览(A7)。
(A7)考点:符号处理总览——绝对值运算加符号判断。
解析:本题考查符号处理总览。数组只存绝对值:同号加法直接算、异号加法转成大减小;减法不够减就交换再添负号。把符号从逐位运算中剥离,模板保持纯粹的无符号四则。
排除法:B 选数组里存负号的人会让每位运算先判符号,复杂度暴增;A 选不能处理负数的人低估了交换技巧;C 选自动乘 的人把人工判断当成了语言功能。
下列最需要高精度运算的场景是( )。
考点:应用场景(A8)。
(A8)考点:应用场景—— 有 65 位必须高精度。
解析:本题考查应用场景。 是 位数,远超 long long;阶乘、组合数、大幂、大斐波那契是高精度四大常客。两个小整数相加、求平均、判奇偶用原生类型绰绰有余。
排除法:B 选百内相加的人用不上高精度;C 选平均值的人最多用 double;D 选判偶数的人位运算即可。
高精度加法逐位相加时,某一位的「和」超过 应( )。
考点:逐位加与进位(B1)。
(B1)考点:逐位加与进位——本位写和的个位,向高位进和的十位。
解析:本题考查逐位加与进位。某位「和」:写入 ,进位 。进位最大 (),这正是逐位加的简洁所在。
排除法:B 选本位直接写和的人让 写成 ;C 选停止运算的人小题大做;A 选拆两个数组的人把一位的事做成了两位。
高精度加法的进位如何参与后续计算( )。
考点:进位传递(B2)。
(B2)考点:进位传递——进位并进下一位的和继续除 10 取余。
解析:本题考查进位传递。进位不是孤立标记,它作为加数进入下一位:。 里进位逐级向上「推骨牌」,直到最高位推出最终进位。
排除法:C 选最后统一加的人算不对中间位;D 选丢弃的人结果必然偏小;A 选存另一数组的人多此一举。
两个 位的高精度数相加,结果最多多少位( )。
考点:结果位数上界(B3)。
(B3)考点:结果位数上界——n 位加 n 位最多 n+1 位。
解析:本题考查结果位数上界。两数最高位相加加进位最多到 ,进一位后不再增长——上界 稳如泰山。 加自身是最坏情形(I 组的 位实例)。
排除法:C 答 位的人没考虑 ;B 答 位的人把乘法的上界错安过来;D 答 的人量级全错。
两个长度不等的数相加,逐位循环的正确做法是( )。
考点:不等长对齐(B4)。
(B4)考点:不等长对齐——循环到较长者,短数越界位按 0。
解析:本题考查不等长对齐。逆序存储下两数个位天然对齐于下标 ;循环上界取较长者的 len,短数取位时判断下标越界则补 。对齐的代价被逆序设计降到最低。
排除法:C 选只循环短者长度的人把长数高位全丢了;A 选补负号的人无中生有;B 选无法相加的人低估了模板的适应力。
逐位加法循环结束后,若进位变量仍为 ,应( )。
考点:最终进位(B5)。
(B5)考点:最终进位——循环后进位仍非零则追加为最高位。
解析:本题考查最终进位。逐位循环只处理到两数的最高位,若最高位相加仍产生进位,要单独把它追加进结果数组并长度加一。漏掉这步是经典 bug(P1)。
排除法:A 选丢弃的人 错成 ;C 选报错的人把正常情形当异常;D 选加回最低位的人方向全反。
的进位特点是( )。
考点:连续进位(B6)。
(B6)考点:连续进位——全 9 数加 1 进位逐级传递到底。
解析:本题考查连续进位。:个位 写 进 ;十位 写 进 ……一路传到最高位,最终进位追加成 ,结果 (I3 实测)。连续进位是进位机制的极限压力测试。
排除法:A 选只进一次的人没追踪到高位;D 选不能进位的人不了解机制;B 选结果仍六位的人丢了最终进位。
高精度加法主循环的正确结构是( )。
考点:加法代码结构(B7)。
(B7)考点:加法代码结构——循环每位取余写本位取商进位,循环后处理最终进位。
解析:本题考查加法代码结构。for 内三件事:求和、写位、记进位;循环外一件事:追加最终进位。先低位后高位是铁序——进位只能来自低位。
排除法:B 选先高位的人进位无处安放;A 选 while 进位为零才进循环的人逻辑纠缠;C 选最后统一进位的人算不对中间位(B2)。
的结果是( )。
考点:全 9 加 1 型(B8)。
(B8)考点:全 9 加 1 型——999 加 1 得 1000,三位变四位。
解析:本题考查全 9 加 1 型。这是进位机制的教科书案例:三次连锁进位把三位 9 全部翻 0,最终进位 1 顶成新最高位,位数 。
排除法:C 答 的人丢最终进位;B 答 的人进位传一半断了;D 答 的人只进了第一次。
高精度减法某位不够减时,标准的处理是( )。
考点:借位(C1)。
(C1)考点:借位——本位加 10 再减,高位多减 1。
解析:本题考查借位。 不够减:本位加 变 ,同时向高一位借 (高位计算时额外减 )。借位与进位互为镜像,都发生在「本位装不下」时。
排除法:A 选本位写负数的人让数组出现负值下游全乱;C 选跳过的人这一位的差丢了;D 选交换重算加法的人混淆了减法与小减大的处理(C5)。
高精度减法运算前先比较被减数与减数大小,目的是( )。
考点:先比较大小(C2)。
(C2)考点:先比较大小——保证大减小,小减大则交换添负号。
解析:本题考查先比较大小。逐位减法假设被减数不小于减数;小减大时先比较(比长度、再逐位从高位比),交换后按大减小计算,最后给结果添负号。比较函数本身是高精度的基本功。
排除法:C 选输出格式要求的人把用途说偏;B 选编译需要的人又高估编译器;D 选报错退出的人放弃了负数结果——交换法就能优雅解决。
的借位特点是( )。
考点:借位连锁(C3)。
(C3)考点:借位连锁——1000 减 1 连借三级得 999。
解析:本题考查借位连锁。个位 借 得 ;十位 被借后仍不够再借得 ;百位同样;千位 被借走得 。连锁借位把 逐级「拆」成 (J5 逐步追踪)。
排除法:C 选只借一次的人没看十位百位;A 选不能借位的人与机制不符;B 选结果为 的人把被减数当结果。
减法结果去前导零的正确规则是( )。
考点:去前导零(C4)。
(C4)考点:去前导零——删高位零至少留一位。
解析:本题考查去前导零。减法结果的 len 可能虚高:从最高位起删 ,直到非零或只剩一位。全零保留一位输出 ——「至少留一位」这一句是防呆关键。
排除法:D 选删所有零含个位的人会把数值 0 删成空串—— 的每一位都是 0,删到最后什么都不剩;B 选不删的人输出 012(H3);C 选只在加法处理的人方向反了——加法几乎不产生前导零,而减法去零后若差为 0 则要输出单个 0。
计算 ,标准处理流程是( )。
考点:小减大(C5)。
(C5)考点:小减大——交换算大减小,添负号。
解析:本题考查小减大。:比较得被减数小,交换算 ,添负号得 。绝对值套壳让无符号模板通吃一切减法。
排除法:D 选直接逐位减出负数组的人每位都要处理负值;B 选输出 的人发明了错误规则;A 选崩溃的人低估了交换技巧。
两个 位数相减(大减小),结果最多多少位( )。
考点:结果位数(C6)。
(C6)考点:结果位数——大减小最多 n 位不会变长。
解析:本题考查结果位数。减法只会让数变小: 位减 位结果不超过 位(可能更短,去零处理)。与加法的 上界形成对照。
排除法:B 答 的人把加法上界错安过来;A 答 的人离谱;C 答 的人把「可能」当成了「必然」—— 仍是 位。
高精度减法主循环的正确结构是( )。
考点:减法代码结构(C7)。
(C7)考点:减法代码结构——每位减借位、负则加十借一。
解析:本题考查减法代码结构。for 内:; 则 、,否则 。借位必须在每步归零或置一,跨步携带。
排除法:D 选先高位的人借位方向无着落;A 选循环外统一处理的人中间位已写错;C 选每位先加 10 再判断的人给不借位的位也加了 ,错。
的结果是( )。
考点:整千减一型(C8)。
(C8)考点:整千减一型——1000 减 1 得 999。
解析:本题考查整千减一型。:连锁借位的代表题型,结果位数由四位缩为三位,恰好测试去前导零(千位的 被删)。
排除法:C 答 的人高位没被借走(P2 的错误形态);D 答 的人输出成了被减数高位;A 答 的人全盘皆错。
高精度数乘以单精度整数(如 )的逐位做法是( )。
考点:高乘低逐位(D1)。
(D1)考点:高乘低逐位——每位乘单精度加进位,本位取余进位取商。
解析:本题考查高乘低逐位。:个位 写 进 ;十位 写 进 ;百位 。得 (K1)。结构与加法同构,只是「加两数」换成了「乘单精度」。
排除法:B 选先转 long long 的人能转就不叫高精度了;C 选从高位乘的人进位没处放;A 选不加进位的人每位都丢十位。
高乘低运算中,进位的特点是( )。
考点:进位累积(D2)。
(D2)考点:进位累积——高乘低进位可大于 9,循环后继续拆出。
解析:本题考查进位累积。一位()乘单精度(可达千级)再加进位,乘积可达数千——进位是多位数;循环结束后 while 把进位逐位拆到数组尾部直到为零。这是高乘低与加法模板的关键差异。
排除法:B 选进位最大只能是 的人套用了加法的进位上限——乘法里进位动辄两位数;D 选不处理的人丢掉尾部长出来的位;A 选乘 10 传递的人进位规则记错。
高精度乘高精度的核心技巧「错位相加」指的是( )。
考点:高乘高错位(D3)。
(D3)考点:高乘高错位——第 i 位乘第 j 位落积的第 i+j 位。
解析:本题考查高乘高错位。位权的乘法:,所以 累加到积的第 位。双重循环天然完成竖式的所有部分积,最后统一进位或边乘边进(K4 追踪)。
排除法:A 选错开一位输出的人把排版当成了运算;D 选交换再乘的人交换律不改变错位规则;C 选每位减 10 的人只做了半套进位。
一个 位数与一个 位数相乘,结果最多多少位( )。
考点:结果位数上界(D4)。
(D4)考点:结果位数上界——积最多两数位数之和。
解析:本题考查结果位数上界。 位乘 位:上界 位(最小上界为 ,首位乘积不足时少一位,O2 展开)。积数组开「位数和」大小最安全(H4)。
排除法:A 答 的人以为积不超过长数;D 答 的人把位数的乘积当成了位数;C 答 的人只对了下界一半的情形。
高精度乘法的运算时间( )。
考点:乘法复杂度(D5)。
(D5)考点:乘法复杂度——时间与两个数的位数都有关,约为之积。
解析:本题考查乘法复杂度。双重循环外层跑乘数位数、内层跑被乘数位数,总乘法次数约 ——改变任何一个数的位数都改变耗时。近年真题的概念辨析题正是考这一点(错误说法是只与较长者有关)。
排除法:B 选只与较长者有关的人被真题错项同化;D 选只与较短者有关的人同样片面;A 选与位数无关的人否认了循环的存在。
高精度数乘以 的正确处理是( )。
考点:乘零(D6)。
(D6)考点:乘零——结果为长度 1 值为 0。
解析:本题考查乘零。任何数乘 得 :逐位乘完各位皆零、去前导零后剩一位 。模板自然处理,但手写时容易忘记「至少保留一位」导致空输出。
排除法:D 选结果与原数相同的人发明了新算术;B 选每位写 9 的人错得离谱;A 选必须报错的人把正常运算当异常。
竖式乘法把两个数的末位对齐的原因是( )。
考点:末位对齐(D7)。
(D7)考点:末位对齐——位权从个位起算,对齐末位即对齐位权。
解析:本题考查末位对齐。竖式乘法的部分积要按位权错位累加,一切错位的基准是「个位对个位」;逆序数组里下标 都是各自个位,对齐天然完成(A3 的红利再次兑现)。
排除法:B 选习惯问题的人忽视了位权原理;C 选打印美观的人把结果当成了过程;D 选高位对齐同样正确的人遇到不等长数立刻翻车。
高精度数除以单精度整数(如 )的逐位做法是( )。
考点:逐位除(E1)。
(E1)考点:逐位除——从高位到低位,余数乘 10 加本位再除。
解析:本题考查逐位除。与加减乘的方向相反,除法从高位做起:模拟长除法「落下一位」的动作。: 商 ; 商 余 ; 商 余 ; 商 ——商 ?去零后 ?逐位核:实际商 余 (L1 实测),长除法每步的商位拼接即答案。
排除法:C 选从低位除的人余数无法向高位传递;B 选转 double 的人精度丢失;A 选逐位单独相除的人位权信息全丢。
高精度除以单精度的完整输出包括( )。
考点:商与余数(E2)。
(E2)考点:商与余数——商是高精度数组,余数是小于除数的单精度。
解析:本题考查商与余数。高÷单的完整产物两个:商(可能仍是多位数)与最终余数 ()。除法不整除时两者都要按题意输出。
排除法:B 选只有商的人丢了半边答案;C 选只有余数的人丢了另半边;A 选余数也是高精度的人没注意余数天然小于单精度除数。
逐位除法中「余数乘 加本位」的乘 来自( )。
考点:余数传递(E3)。
(E3)考点:余数传递——余数乘 10 来自十进制位权。
解析:本题考查余数传递。上一位剩下的 个「十」到了本位相当于 ,加上本位数字再除。乘 不是技巧是进制本质——换个进制乘的就是别的基数。
排除法:D 选凑整的人把数学必然当成了取巧;C 选除数是 10 倍数的人条件无中生有;B 选没有理由的人放弃了原理追问。
逐位除法从高位除起,商数组的低位可能出现前导零吗,正确认识是( )。
考点:商的前导零(E4)。
(E4)考点:商的前导零——被除数前几位不够除时商的高位为零。
解析:本题考查商的前导零。 首位 商 没有零;但 首位 商 ——商的高位可能为零,输出前同样去前导零。加法减法乘法的去零纪律在除法一样生效。
排除法:C 选不会有前导零的人没算过首位小的情形;A 选前导零在最低位的人方向全反;B 选必须保留的人输出 0176 这类带零答案。
一个 位数除以一位数,商的位数是( )。
考点:商的位数(E5)。
(E5)考点:商的位数——n 位除一位数得 n 位或 n-1 位。
解析:本题考查商的位数。逐位除生成与被除数同长的商数组,首位可能为零:首位够除商 位、不够除去零后 位。上界不超过被除数位数。
排除法:D 答 的人高估了增长——除法只缩不放;C 答恰好 的人把一种情形当成了全部;A 答无法确定的人没找对上下界。
高精度除法的除数为 时( )。
考点:除数为零(E6)。
(E6)考点:除数为零——运算无意义,先检查。
解析:本题考查除数为零。除以零在数学上无定义,程序里 cur / 0 直接崩溃;负责任的代码在运算前检查除数非零并按题意输出错误标记。这一条与普通整数除法完全一致。
排除法:A 认为结果为 的人发明了错误规则;D 认为程序自动处理的人把崩溃当成了处理;C 认为结果为被除数的人同样错了——除以零在数学上无定义。
高精度除以单精度的主循环结构是( )。
考点:除法代码结构(E7)。
(E7)考点:除法代码结构——从高位到低位 r=r*10+a[i] 再除取商取余。
解析:本题考查除法代码结构。一行核心:r = r*10 + a[i]; q[i] = r / k; r = r % k; 循环从 len-1 递减到 ——方向与加减乘相反,是模板记忆的第一要点。
排除法:B 选从低位循环的人余数传递方向错误;A 选先取余再除的人把一步拆成了错序两步;D 选清零余数的人每步都丢历史。
高精度数读入用字符串(或字符数组)而不用整数变量,原因是( )。
考点:字符串读入(F1)。
(F1)考点:字符串读入——数百位数字只有字符串能原样接收。
解析:本题考查字符串读入。cin >> s 把整个数字当文本收下,长度即位数;随后逐字符转数字入数组。整数读入在第一关(溢出)就失败了。
排除法:B 选字符串更快的人速度差异无关紧要;D 选整数不能运算的人反了——整数恰恰是运算方,只是装不下;C 选题目强制的人没抓住技术必然。
把字符串 "345" 转成逆序数字数组的结果是(下标 起)( )。
考点:逆序转换(F2)。
(F2)考点:逆序转换——"345" 转为 {5,4,3}。
解析:本题考查逆序转换。a[i] = s[len-1-i] - '0':字符串下标 是最高位,数组下标 要放个位——镜像翻转。转换写反是 P4 的错误源。
排除法:B 选 {3,4,5} 的人忘了翻转;C 选 {51,52,53} 的人忘了减 '0' 存了 ASCII 码;A 选 {5,45,345} 的人把「逐位」做成了「前缀」。
逆序存储的高精度数 a = {5, 4, 3}(len=3)代表的数与正确输出是( )。
考点:输出倒序(F3)。
(F3)考点:输出倒序——从 len-1 打印到 0。
解析:本题考查输出倒序。数组 {5,4,3} 代表 :下标大的是高位,输出循环从 len-1 递减。读入转换、存储方向、输出方向三处一致才不自相矛盾。
排除法:A 认为代表 且正序打印的人方向理解反了;C 认为无法输出的人低估了一行倒序循环;D 选代表 却正序打印的人——数认对了输出方向反了,会打出 。
把字符 '7' 转成数字 的标准写法是( )。
考点:字符转数字(F4)。
(F4)考点:字符转数字——'7' 减 '0' 得 7。
解析:本题考查字符转数字。数字字符的 ASCII 码连续:'7'-'0' 即 。反过来数字加 '0' 得字符。这是 07 卷字符运算的老朋友在高精度的应用。
排除法:B 选 '7'-7 的人得 是字符码;A 选 (int)'7' 的人得 ;C 选 '7'+'0' 的人得 越走越远。
输出高精度结果前去前导零的循环条件通常写为( )。
考点:输出去零(F5)。
(F5)考点:输出去零——while (len>1 && a[len-1]==0) len--。
解析:本题考查输出去零。两个条件缺一不可:len>1 保证数值零至少留一位;a[len-1]==0 从最高位定位可删之零。一行循环解决前导零。
排除法:B 选只有零判断的人可能把零删成空串;A 选 while(len>0) 的人把整个数删光;D 选不需要的人没见过减法输出 012 的惨案。
计算 需要高精度,其结果的位数是( )。
考点:阶乘大数(G1)。
(G1)考点:阶乘大数——25! 有 26 位。
解析:本题考查阶乘大数。 共 位——末尾一串零来自因子 与 配对。阶乘是高精度乘法(高×低循环)的第一应用(N2)。
排除法:D 答 位的人少数了末尾零;B 答 位的人低估;C 答 位的人还以为 long long 装得下。
,这个结果( )。
考点:组合数大数(G2)。
(G2)考点:组合数大数——C(30,15)=155117520 未超 int 但中间过程险。
解析:本题考查组合数大数。最终值约 在 int 内,但「逐项乘再除」的中间量轻易破 ——要么边乘边除用 long long,要么高精度兜底。「结果装得下」不等于「过程装得下」。
排除法:B 选必须高精度的人言过其实(本题 long long 够);D 选超 long long 的人量级感错误;C 选等于 的人把组合当成了幂。
,关于它与 unsigned long long 的关系,正确的是( )。
考点:幂运算大数(G3)。
(G3)考点:幂运算大数——2^64 恰是 unsigned long long 上限加一。
解析:本题考查幂运算大数。,恰比 unsigned long long 最大值大 ——著名的边界案例。再乘一个 就必须高精度(N1 实测)。
排除法:A 选 long long 存得下的人差一个负号位;C 选高精度算不了幂的人把「重复乘」想复杂了;D 选它是 位数的人把指数当成了位数——实际只有 位。
斐波那契数列从某项起超出 long long,需要高精度。 起步的第 项是( )。
考点:斐波那契大数(G4)。
(G4)考点:斐波那契大数——第 100 项是 21 位数。
解析:本题考查斐波那契大数。 共 位。加法模板循环 次即可——高精度加法的最经典循环应用(N3)。
排除法:B 答 的人被溢出截断骗了,尾部数字已失真;C 答 位的人把项数当成了位数;D 选无法计算的人低估了循环相加的力量。
long long 大约能表示到 (约 位十进制)。由此判断「位数超过多少的整数运算要警惕溢出」最稳妥的口径是( )。
考点:long long 的边界(G5)。
(G5)考点:long long 的边界——18 位警惕、19 位以上直接高精度。
解析:本题考查 long long 的边界。 是 位数: 位的输入在乘法里也会越界(两个 相乘爆掉),所以「警惕线」要画在位数之外再看中间结果。
排除法:A 选位数无所谓的人否认了溢出的存在;B 认为 位以内都安全的人对量级无概念——十九位就到极限;D 选 int 与 long long 相同的人差了一个数量级。
高精度加法忘记处理进位,对 的输出影响是( )。
考点:忘进位(H1)。
(H1)考点:忘进位——876+345 会错成各位取余的 0111。
解析:本题考查忘进位。丢进位后每位只写 : 的各位和 写成 ,输出 0111?逐位核(I5): 写 、 写 、 写 ——丢进位输出 111,正确是 。
排除法:A 选没有影响的人没算过具体数;D 选崩溃的人把逻辑错当运行错;C 以为只偏小 的人低估了破坏——丢失的进位让每一位都错。
减法借位后忘记在高位「多减一」, 会算成( )。
考点:借位漏减(H2)。
(H2)考点:借位漏减——1000-1 高位没被借走错成 1999。
解析:本题考查借位漏减。写 s += 10 忘 borrow = 1: 的个位 加十得 ,但十位计算时不知道要再减一,?逐位核:个位 、十位 、百位 、千位 ——输出 1009 之类的错值(P2 展开)。
排除法:B 答 的人描述的是正确行为;D 答 的人全盘皆错;C 选死循环的人把逻辑错当成了卡死。
减法 忘去前导零,输出会是( )。
考点:前导零未去(H3)。
(H3)考点:前导零未去——100-88 输出 012。
解析:本题考查前导零未去。中间结果百位为 ,不去零直接输出三位:012。判题严格按字符串比较,多一个零就是全错。去零一行循环是模板收尾必备。
排除法:B 答 12 的人给的是正确输出口径;C 答 120 的人把零挪了位;D 答无法输出的人低估了程序的坦诚。
两个 位的数相乘,积数组至少要开多少位才安全( )。
考点:数组开小(H4)。
(H4)考点:数组开小——500 位乘 500 位积数组至少 1000。
解析:本题考查数组开小。积的位数上界是两数位数和:,开 是下限、多开几格更稳(进位与压位余量)。开 会在最高位越界写坏内存。
排除法:D 答 的人把上界当成了长数位数;B 答 的人套用了加法的 ;A 答 的人连输入都装不下。
高精度计算 a = 999(逆序存 {9,9,9},len=3),b = 1,标准逐位加法 + 最终进位处理后输出。
输出是( )。
考点:全 9 加 1 执行(I1)。
(I1)考点:全 9 加 1 执行——999+1 得 1000。
解析:本题考查全 9 加 1 执行。逐位: 写 进 (三次),最终进位 追加,输出 1000。位数从 变 ,len 同步加一。
排除法:D 答 000 的人丢了最终进位;A 答 100 的人进位传到一半断了;C 答 990 的人只进了第一次位。
高精度计算 a = 123,b = 456,标准高精度加法。
输出是( )。
考点:基础加法执行(I2)。
(I2)考点:基础加法执行——123+456=579。
解析:本题考查基础加法执行。各位 、、 全程无进位,得 579。无进位情形验证「逐位独立」的基本面。
排除法:C 答 569 的人十位算错;A 答 5790 的人多补了个零;B 答 975 的人把两数当成了某种拼接。
高精度计算 a = 999999,b = 1,标准高精度加法。
输出与结果的位数是( )。
考点:连续进位执行(I3)。
(I3)考点:连续进位执行——999999+1=1000000 共 7 位。
解析:本题考查连续进位执行。六次连锁进位后最终进位追加,1000000 共 位。B6 的概念在代码上落地。
排除法:C 答 000000 共 位的人丢最终进位;B 答 100000 共 位的人连锁少传一级、少进一位;D 答 9999990 共 位的人方向错乱。
高精度计算 a = 987654321,b = 123456789,标准高精度加法。
输出是( )。
考点:大数加法执行(I4)。
(I4)考点:大数加法执行——987654321+123456789=1111111110。
解析:本题考查大数加法执行。各位相加: 写 进 、 写 进 ……逐级进位一路到首位,最终进位 追加,得 1111111110( 位)。
排除法:C 答 111111111 的人丢最终进位;B 答 1111111101 的人某位进位断了;A 答 1011111111 的人进位位置错。
高精度计算 ,逐位处理(低位到高位)时每位的「本位和、写入位、向前进位」依次是( )。
考点:逐位追踪(I5)。
(I5)考点:逐位追踪——876+345 各位 (和/写位/进位)。
解析:本题考查逐位追踪。个位 写 进 ;十位 写 进 ;百位 写 进 ;最终进位 。结果 。
排除法:D 选各位直接写 的人没做取余;A 选无进位的人没看到满十;B 选只有最高位进位的人漏了低位连锁。
高精度计算 a = 555,b = 555,标准高精度加法。
输出是( )。
考点:对称进位执行(I6)。
(I6)考点:对称进位执行——555+555=1110。
解析:本题考查对称进位执行。 写 进 (三次),最终进位 ,得 1110。对称数据让每位的进位行为完全一致。
排除法:D 答 1010 的人某位忘了加进位;B 答 0000 的人丢最终进位;A 答 1111 的人最高位算错。
补全加法主循环的关键语句:
01int c[600] = {0}; 02int carry = 0; 03for (int i = 0; i < n; i++) { 04 int s = a[i] + b[i] + carry; 05 c[i] = /* 1 */; 06 carry = s / 10; 07} 08if (carry) c[n++] = carry;
空位 /* 1 */ 处应填( )。
考点:加法补全(I7)。
(I7)考点:加法补全——本位写 s % 10。
解析:本题考查加法补全。c[i] = s % 10 写和的个位,carry = s / 10 取十位——一行两句互为表里。填 s 会让两位数进数组。
排除法:B 填 s / 10 的人把进位写进了本位;C 填 s 的人没做拆分;A 填 carry 的人把上一轮进位原样写下。
高精度计算 a = 1000,b = 1,标准高精度减法(借位处理 + 去前导零)。
输出是( )。
考点:整千减一执行(J1)。
(J1)考点:整千减一执行——1000-1=999。
解析:本题考查整千减一执行。连锁借位:个位借得 、十位借得 、百位借得 、千位被借走为 ,去零删千位,输出 999。
排除法:C 答 0999 的人没去前导零;D 答 1999 的人高位没被借走(P2);A 答 1 的人输出成了被减数高位。
高精度计算 a = 523,b = 345,标准高精度减法。
输出是( )。
考点:基础减法执行(J2)。
(J2)考点:基础减法执行——523-345=178。
解析:本题考查基础减法执行。个位 不够借十得 ;十位 不够借十得 ;百位 。得 178。
排除法:D 答 288 的人借位处理漏了高位多减;A 答 188 的人百位忘了被借;C 答 222 的人把各位绝对值相减。
高精度计算 a = 100,b = 88,标准高精度减法。
输出是( )。
考点:借位减法执行(J3)。
(J3)考点:借位减法执行——100-88=12。
解析:本题考查借位减法执行。个位 借十得 ;十位 借十得 ;百位 ,去零得 12。
排除法:C 答 012 的人没去前导零(H3);A 答 22 的人十位借位算错;B 答 18 的人某位加减颠倒。
高精度计算 a = 500,b = 499,标准高精度减法。
输出是( )。
考点:接连位减法执行(J4)。
(J4)考点:接连位减法执行——500-499=1。
解析:本题考查接连位减法执行。个位 借十得 ;十位 借十得 ;百位 ,去零后只剩 1。
排除法:B 答 001 的人没去零;C 答 101 的人百位漏减借位;A 答 111 的人借位全丢。
高精度计算 (逆序存储),逐位处理时「本位差、是否借位」依次是( )。
考点:借位逐位追踪(J5)。
(J5)考点:借位逐位追踪——1000-1 各位差与借位。
解析:本题考查借位逐位追踪。个位 不够借得 ;十位 不够借得 ;百位同理得 ;千位 不再借。三级连锁借位是减法的压力测试。
排除法:A 选只有个位借位的人没看连锁;D 选各位都写 的人忘了借十;C 选千位不受影响的人漏了「多减一」。
高精度计算 a = 12345,b = 678,标准高精度减法(短数高位按 0 参与)。
输出是( )。
考点:不等长减法执行(J6)。
(J6)考点:不等长减法执行——12345-678=11667。
解析:本题考查不等长减法执行。 的高位按 参与:个位 借得 ;十位 借得 ;百位 借得 ;千位万位照抄。得 11667。
排除法:A 答 11567 的人十位借位处理错;B 答 12333 的人减数没对齐数位;D 答 0667 的人把高位丢了。
补全减法主循环的关键语句:
01int borrow = 0; 02for (int i = 0; i < n; i++) { 03 int s = a[i] - b[i] - borrow; 04 if (s < 0) { s += 10; borrow = 1; } 05 else /* 1 */; 06 c[i] = s; 07}
空位 /* 1 */ 处应填( )。
考点:减法补全(J7)。
(J7)考点:减法补全——else 分支填 borrow = 0。
解析:本题考查减法补全。够减时必须把借位归零,否则上一步的 错误地传到下一位。借位是「逐位重置」的变量,不是一借到底。
排除法:B 填 borrow = 1 的人让借位永久粘连;A 填 s = 0 的人把差值清零;D 填 break 的人直接中断运算。
高精度计算 a = 123(逆序 {3,2,1}),k = 4,逐位乘单精度。
输出是( )。
考点:高乘低执行(K1)。
(K1)考点:高乘低执行——123×4=492。
解析:本题考查高乘低执行。个位 写 进 ;十位 ;百位 。得 492。
排除法:D 答 482 的人十位忘加进位;A 答 412 的人进位彻底没管;C 答 498 的人最高位算错。
高精度计算 a = 999,k = 9,逐位乘单精度(含进位拆出)。
输出是( )。
考点:高乘低进位(K2)。
(K2)考点:高乘低进位——999×9=8991。
解析:本题考查高乘低进位。个位 写 进 ;十位 写 进 ;百位同;尾进位 拆出。得 8991——进位大于 的活例(D2)。
排除法:B 答 899 的人丢尾部进位;C 答 8981 的人某位进位加错;D 答 9981 的人进位方向错乱。
高精度计算 a = 999,b = 99,错位相乘的标准高精度乘法。
输出是( )。
考点:高乘高执行(K3)。
(K3)考点:高乘高执行——999×99=98901。
解析:本题考查高乘高执行。错位累加 (三位循环)与 左移一位,合并进位得 98901。验算 ✓。
排除法:D 答 9890 的人少了一位;B 答 108900 的人错位错一格;A 答 99891 的人部分积对齐错。
高精度计算 (各自逆序存储),乘数第 位()与被乘数各位相乘的中间积落在积数组的哪些位( )。
考点:错位追踪(K4)。
(K4)考点:错位追踪——23×14 的部分积落位。
解析:本题考查错位追踪。乘数第 位 : 写积第 位进 , 落第 位——部分积 (即 );乘数第 位 的部分积从积第 位起。错位规则:第 位起落。
排除法:B 选从最高位落的人方向反;C 选全落第 位的人没做错位;A 选规则随位数变的人把规律玄学化。
高精度计算 a = 123,b = 456,错位相乘的标准高精度乘法。
输出是( )。
考点:高乘高进阶(K5)。
(K5)考点:高乘高进阶——123×456=56088。
解析:本题考查高乘高进阶。三重部分积(、 左移、 再左移)错位累加,得 56088。位数 上界、实得 位。
排除法:D 答 5608 的人丢最高进位;B 答 57088 的人某部分积错位;A 答 456123 的人只做了拼接。
高精度计算 a = 9999,b = 9999,标准高精度乘法。
积与积的位数是( )。
考点:积的位数(K6)。
(K6)考点:积的位数——9999×9999=99980001 共 8 位。
解析:本题考查积的位数。 恰为上界(最大四位数自乘满位):积 99980001 正好 位。对照 O2 的「 或 」,这是「顶到上界」的实例。
排除法:C 答积是 99980001 却有 位的人多数了一位;B 答 99990000 共 位的人乘积算错——真实积是 99980001;D 答 100000000 共 位的人把「差一点到 」记成了「到了」,实际差 。
补全高乘高内层循环的累加语句:
01for (int i = 0; i < lb; i++) { 02 int carry = 0; 03 for (int j = 0; j < la; j++) { 04 int t = c[i + j] + b[i] * a[j] + carry; 05 c[i + j] = t % 10; 06 carry = /* 1 */; 07 } 08 c[i + la] += carry; 09}
空位 /* 1 */ 处应填( )。
考点:乘法补全(K7)。
(K7)考点:乘法补全——进位填 t / 10。
解析:本题考查乘法补全。内层每步 t = c[i+j] + b[i]*a[j] + carry:本位 t % 10、进位 t / 10。乘法进位不再限于 (D2),但取商取余的形式不变。
排除法:B 填 t % 10 的人把本位值当进位;A 填 carry + 1 的人自创了进位规则;D 填 b[i] 的人把乘数当成了进位。
高精度计算 a = 1234,k = 7,逐位除法(高位到低位)。
商与余数是( )。
考点:除法执行(L1)。
(L1)考点:除法执行——1234÷7 商 176 余 2。
解析:本题考查除法执行。高位起: 商 余 ; 商 余 ; 商 余 ; 商 余 。商 0176 去零得 176,余 。
排除法:B 答余 (且商 176)的人没做完最后一步——余数恰为 ;D 答商 167 余 的人第三步商位算错;C 答商 余 的人没理解逐位除、一步都没除下去。
高精度计算 a = 1000,k = 3,逐位除法。
商与余数是( )。
考点:余数判断(L2)。
(L2)考点:余数判断——1000÷3 商 333 余 1。
解析:本题考查余数判断。 商 ; 商 余 ; 商 余 ; 商 余 。商 0111?逐位核:商 333 余 ✓()。
排除法:A 答商 334 余 的人多除了一位且 已超被除数;B 答商 300 余 的人中途断了余数传递;D 答商 333 余 的人整除错记——余数恰为 。
高精度计算 a = 99999,k = 9,逐位除法。
商与余数是( )。
考点:整除执行(L3)。
(L3)考点:整除执行——99999÷9 商 11111 余 0。
解析:本题考查整除执行。 商 余 连续五次,商 11111 余 ——整除时余数恰为零的干净样例。
排除法:B 答商 11110 余 的人最后一位没除尽——正确商是 11111;C 答商 11111 余 的人把余数上限记成了除数本身(应小于除数);D 答商 11112 余 的人多除了一位。
高精度计算 ,从高位逐位处理,「本位数字、当前被除值、商位、余数」依次是( )。
考点:逐位追踪(L4)。
(L4)考点:逐位追踪——725÷6 逐步 (被除值/商位/余数)。
解析:本题考查逐位追踪。高位 :商 余 ;落 成 :商 余 ;落 成 :商 余 。商 120 余 。余数乘十加本位的机制(E3)逐步可见。
排除法:A 选从个位处理的人方向全反;C 选商 121 的人末位没等余数——末位商恰为 ;B 选余数不参与下一位的人机制没懂,余数 也要乘十传下去。
高精度计算 a = 100,k = 10,逐位除法。
商与余数是( )。
考点:除以整十(L5)。
(L5)考点:除以整十——100÷10 商 10 余 0。
解析:本题考查除以整十。 商 余 ; 商 余 ; 商 余 。商 010 去零得 10 余 。
排除法:A 答商 1 余 的人去零去过头;D 答余 的人忘了余数须小于除数(本题为余 );C 答商 01 的人输出没去零,首位的 应删。
补全逐位除法的关键语句:
01int r = 0; 02for (int i = len - 1; i >= 0; i--) { 03 int cur = r * 10 + a[i]; 04 q[i] = cur / k; 05 r = /* 1 */; 06}
空位 /* 1 */ 处应填( )。
考点:除法补全(L6)。
(L6)考点:除法补全——余数填 cur % k。
解析:本题考查除法补全。r = cur % k 保住「除不尽的零头」传给下一位。填 cur / k 会把商当余数;填 r * 10 会指数放大;填 a[i] 丢了当前步的余数信息。
排除法:D 填 cur / k 的人商余不分;C 填 r * 10 的人漏加本位;B 填 a[i] 的人把输入当状态。
补全加法循环结束后的最终进位处理:
01int carry = 0; 02for (int i = 0; i < n; i++) { 03 int s = a[i] + b[i] + carry; 04 c[i] = s % 10; carry = s / 10; 05} 06if (carry > 0) /* 1 */;
空位 /* 1 */ 处应填( )。
考点:补加法进位(M1)。
(M1)考点:补加法进位——最终进位追加 c[n++] = carry。
解析:本题考查补加法进位。循环外的 if (carry > 0) c[n++] = carry; 把最后的进位写成新最高位并长度加一。填 c[0] 会覆盖个位。
排除法:A 填 c[0] 的人把进位塞回个位毁了结果;C 填 carry = 0 的人亲手丢弃进位;D 填 n-- 的人反而缩短长度。
补全减法的不够减分支:
01int s = a[i] - b[i] - borrow; 02if (s < 0) { 03 s += /* 1 */; 04 borrow = 1; 05} else { 06 borrow = 0; 07}
空位 /* 1 */ 处应填( )。
考点:补减法借位(M2)。
(M2)考点:补减法借位——不够减时 s += 10。
解析:本题考查补减法借位。借十:本位加 变得够减,代价是高一位多减 (borrow 置 )。加 源于十进制借一个「十」。
排除法:B 填 100 的人借的面额太大差值失真;C 填 1 的人借的面额太小不够减;D 填 b[i] 的人借的是减数的值而非一个「十」。
补全高乘高的落位下标:
01for (int i = 0; i < lb; i++) 02 for (int j = 0; j < la; j++) { 03 int t = c[/* 1 */] + b[i] * a[j] + carry; 04 c[i + j] = t % 10; carry = t / 10; 05 }
空位 /* 1 */ 处应填( )。
考点:补乘法错位(M3)。
(M3)考点:补乘法错位——落位下标 i + j。
解析:本题考查补乘法错位。第 位与第 位的乘积位权为 ,落积的第 位。填 、、 都会让部分积挤在同一位置。
排除法:C 填 i 的人丢了 的错位;B 填 j 的人丢了 的错位;D 填 i * j 的人把「位权相加」错记成「下标相乘」。
补全逐位除法的被除值计算:
01for (int i = len - 1; i >= 0; i--) { 02 int cur = /* 1 */ + a[i]; 03 q[i] = cur / k; 04 r = cur % k; 05}
空位 /* 1 */ 处应填( )。
考点:补除法余数(M4)。
(M4)考点:补除法余数——被除值 = r * 10 + a[i]。
解析:本题考查补除法余数。上一轮余数 到本位放大十倍再加本位数字——长除法「落下一位」的代码化。填别的量会让余数链断裂。
排除法:C 填 r + 10 的人加常数而非放大十倍;A 填 k * 10 的人把除数掺了进来;B 填 q[i] * 10 的人用商冒充了余数。
补全字符串读入的逆序转换:
01char s[505]; 02cin >> s; 03int len = strlen(s); 04for (int i = 0; i < len; i++) 05 a[i] = s[/* 1 */] - '0';
空位 /* 1 */ 处应填( )。
考点:补读入转换(M5)。
(M5)考点:补读入转换——取字符 s[len-1-i] 实现镜像翻转。
解析:本题考查补读入转换。字符串首位是最高位、数组首位要放个位:下标 与 关于中点对称。填 s[i] 是正序存储(P4 的祸根)。
排除法:D 填 s[i] 的人忘了翻转;A 填 s[i+1] 的人错位一格还越界;B 填 s[len-i] 的人偏移一步首位就越界。
补全逆序数组的高位到低位输出:
01for (int i = /* 1 */; i >= 0; i--) 02 cout << a[i];
空位 /* 1 */ 处应填( )。
考点:补倒序输出(M6)。
(M6)考点:补倒序输出——起点 len - 1。
解析:本题考查补倒序输出。最高位在下标 ,从它打印递减到 。从 len 起会读越界格(P3),从 起方向全反。
排除法:C 填 len 的人越界读一位垃圾值;A 填 的人倒着打了个正序;B 填 的人丢最高位。
用高精度(或大数)计算 ,结果是( )。
考点:二的六十四次方(N1)。
(N1)考点:二的六十四次方——18446744073709551616。
解析:本题考查二的六十四次方。( 位),恰为 unsigned long long 上限加一(G3)。高精度幂=「高乘低」循环 次。
排除法:A 答 9223372036854775808 的人给的是 ;C 答 18446744073709551615 的人给的是 unsigned long long 的最大值();D 答 10000000000000000000 的人给的约值 既不等于 也不精确。
,它的位数是( )。
考点:阶乘位数(N2)。
(N2)考点:阶乘位数——25! 有 26 位。
解析:本题考查阶乘位数。,数位共 。高乘低循环 次逐个累乘即得。
排除法:A 答 位的人少数一位;B 答 位的人高估;D 答 位的人低估了末尾的零的贡献。
斐波那契数列 的第 项是( )。
考点:斐波那契第一百项(N3)。
(N3)考点:斐波那契第一百项——354224848179261915075。
解析:本题考查斐波那契第一百项。 起步加 次,( 位)。高精度加法的招牌应用(G4)。
排除法:A 答 35422484817926191507 尾巴的人被截断值误导——真实值有 位;C 答 218922995834555169026 的人给的是前一项 ,相邻两项一步之差;D 答无法计算的人低估了循环相加的力量。
从 开始用高精度乘 ,连续 次,结果是( )。
考点:翻倍十次(N4)。
(N4)考点:翻倍十次——1 乘 2 十次得 1024。
解析:本题考查翻倍十次。——高乘低的微型演示:十次循环每次乘单精度 。位数从 涨到 ,len 随最终进位增长。
排除法:A 答 100 的人数错次数;D 答 2048 的人多乘一次;B 答 512 的人少乘一次。
的值是( )。
考点:组合数计算(N5)。
(N5)考点:组合数计算——C(30,15)=155117520。
解析:本题考查组合数计算。( 位)。逐项乘除时中间量更大(G2 的警示),高精度乘配合高精度除单精度可全程无忧。
排除法:D 答 1551175200 的人多乘了一个 ;C 答 591322907824307200 的人给的是排列数 或别的组合的值;A 答 的人把上标当下标。
的值是( )。
考点:三的二十次方(N6)。
(N6)考点:三的二十次方——3486784401。
解析:本题考查三的二十次方。( 位)——超 int(约 )但未超 long long,高精度当然也算得。幂循环同 N1。
排除法:C 答 348678440 的人丢了一位;B 答 10460353203 的人算的是 ;D 答 1000000000 的人给了个约数——精确值是 。
两个都是 位且各位都是 的数相加,结果的位数是( )。
考点:加法位数(O1)。
(O1)考点:加法位数——两个 100 位全 9 数相加得 101 位。
解析:本题考查加法位数。 与自身相加 ?更直接:全 加全 每位 加进位 ,连锁进位最终进 ,得 后跟 个 —— 位,恰好顶到 上界。
排除法:B 答 位的人丢最终进位;A 答 位的人把乘法上界错安;D 答 位的人多进了一级。
一个 位数与一个 位数相乘,结果位数的一切可能( )。
考点:乘法位数(O2)。
(O2)考点:乘法位数——50 位乘 30 位得 79 或 80 位。
解析:本题考查乘法位数。上界 (位数和);当首位乘积不足 (粗略判据)时积只有 位。两种都可能,开数组按 保险。
排除法:D 答恰好 位的人把上界当成了定值;B 答从 到 任意的人放宽了界( 位乘数的位数不缩水、最小就是 );A 答 的人把位数积当位数。
高精度计算 a = 100000,b = 1,标准高精度减法。
输出是( )。
考点:借位综合(O3)。
(O3)考点:借位综合——100000-1=99999。
解析:本题考查借位综合。五级连锁借位:个位到万位逐级借十得 ,十万位 被借走为 删除。输出 99999( 位)。
排除法:A 答 099999 的人没去前导零;B 答 9999 位的人少借一级;C 答 10000 的人没做借位。
,它的位数是( )。
考点:阶乘综合(O4)。
(O4)考点:阶乘综合——50! 有 65 位。
解析:本题考查阶乘综合。 共 位(脚本实测)。尾部的 个零来自因子 ( 内含因子 的数共 个 , 富余)。大阶乘位数只能靠高精度逐位累计。
排除法:D 答 位的人把 当位数;B 答 的人高估;C 答 的人差一位—— 才是实测。
加法代码漏写 if (carry) c[n++] = carry;,对 的输出影响是( )。
考点:忘最终进位(P1)。
(P1)考点:忘最终进位——999+1 输出 000 去零后错成 0。
解析:本题考查忘最终进位。漏 if (carry) c[n++] = carry;:各位翻 、最高位的 消失,输出 000;若又做了去零,缩成 0——双重错误叠加。
排除法:A 答正确输出 1000 的人没执行漏写后的代码;D 答崩溃的人逻辑错不会崩;B 答 100 的人丢了三位中的两位于理不合。
减法借位分支写了 s += 10 却忘写 borrow = 1;,对 的输出影响是( )。
考点:借位少减(P2)。
(P2)考点:借位少减——忘 borrow=1 时 1000-1 错成 1009 型。
解析:本题考查借位少减。个位 加十得 ,但借位没记账:十位按 算,百位同样,千位照抄 ——输出 1009。高位没被借走 ,各级差全错。
排除法:B 答 999 的人描述正确行为;C 答 的人输出成了被减数;A 答死循环的人把逻辑错当卡死。
输出循环误写为 for (int i = len; i >= 0; i--)(从 len 起且没去前导零),可能的后果是( )。
考点:前导零输出错(P3)。
(P3)考点:前导零输出错——起点写 len 且没去零双重错。
解析:本题考查前导向输出错。for (i = len; ...) 先读越界格 a[len](垃圾值),且前导零未删——输出既多一位假数据又带零。两个独立 bug 叠加,排查时先修越界再修去零。
排除法:B 答只少输出一位的人没发现越界读;D 答没有影响的人无视了垃圾值;C 答编译错误的人高估了数组检查。
读入转换误写为正序存储(a[i] = s[i] - '0';)却仍按下标 对齐逐位加,后果是( )。
考点:方向写反(P4)。
(P4)考点:方向写反——正序存储仍按下标 0 对齐相加,位权全错。
解析:本题考查方向写反。正序存储时两数长度若不同,下标 一个是最高位一个是最高位,个位没对齐;即使等长,进位也会加到「数组下一格」(实为低位)——方向与进位南辕北辙,结果完全错误。
排除法:A 答结果不变的人没考虑位权方向;B 答无法运行的人程序照跑只是错;C 答只影响输出顺序的人低估了破坏面。
关于高精度运算,下列说法正确的是( )。
考点:综合判断(P5)。
(P5)考点:综合判断——加减乘从低位起、除法从高位起,进位借位是核心机制。
解析:本题考查综合判断。四则的统一灵魂是「模拟竖式」:加减乘的进位/借位逐位向上传递,故从低位算起;除法的余数要向低位传递(乘十落下一位),故从高位算起。方向与机制对上了,模板自然对。
排除法:A 选乘法只与较长数位数有关的人复述了真题错误说法(D5);C 选减法不处理借位的人没做过 ;D 选除法从低位起的人方向全反。