#G1OBJ07. 数位与基础算法
数位与基础算法
数位与基础算法
GESP C++ 一级真题客观题分类训练|模块 07 当前已收录真题场次:2025 年 3 月、6 月、9 月、12 月,2026 年 3 月、6 月。主编号采用模块号与模块内顺序,考试年月和原题号保留为来源注释。
07-01|单选题
来源:2025 年 3 月原题第 13 题
下面C++代码执行后输出是()。

{{ select(1) }}
- -1000
- 0
- 999
- 1000
07-02|单选题
来源:2025 年 6 月原题第 10 题
下面的C++代码用于求M天后是星期几,两处横线处分别应填入的代码是()。

{{ select(2) }}
- (N + M) / 7;D == 0
- (N + M) % 7;D == 0
- (N + M) / 7;D <= 0
- (N + M) % 7;D = 0
07-03|单选题
来源:2025 年 6 月原题第 12 题
下面的C++代码用于求N的所有因数(即能将N整除的数),如输入12则将输出12,6,4,3,2,1。()

{{ select(3) }}
- i-=1
- i==1
- i>1
- i>=1
07-04|单选题
来源:2025 年 6 月原题第 15 题
以下C++代码可以找出百位、十位和个位满足特定条件的三位数,横线处应该填入的是()

{{ select(4) }}
- int b=(i/10)/10;
- int b=(i/10)%10;
- int b=(i%10)/10;
- int b=(i%10)%10;
07-05|单选题
来源:2025 年 9 月原题第 7 题
当前是9月,编写C++代码求N个月后的月份。横线处应填入的代码是()。

{{ select(5) }}
- N%12
- 9+N%12
- (9+N)/12
- (9+N)%12
07-06|单选题
来源:2025 年 9 月原题第 9 题
下面的C++代码执行后输出是()。

{{ select(6) }}
- 900
- 100
- 0
- -100
07-07|单选题
来源:2025 年 9 月原题第 11 题
下面的C++代码用于求N的镜面数(N的个位到最高位的各位数字依次反过来出现在数字中,但高位0将被忽略,不输出),如输入1234,则将输出4321,又如输入120,则将输出21,错误的选项是()。

{{ select(7) }}
- N!=0
- not (N==0)
- N=0
- N>0
07-08|单选题
来源:2025 年 9 月原题第 13 题
下面C++代码用于获得正整数N的第M位数,约定个位数为第1位,如N等于1234,M等于2,则输出3。假设M的值是大于等于1且小于等于N的位数。横线处应填入的代码是()。

{{ select(8) }}
- N%div/10
- N/div/10
- N%div%10
- N/div%10
07-09|单选题
来源:2025 年 9 月原题第 15 题
下面C++代码用于记录多个输入数中的最大数和最小数(输入-999则输入结束),相关说法错误的是()。

{{ select(9) }}
- 程序运行时如果第一个数输入-999,则输出将是-999 -999
- 程序输入过程中,如果输入的第一个数不是-999,则如果待输入的数据中没有-999,则程序能求出已输入整数中的最大数和最小数
- 如果用于输入考试成绩,即成绩中不可能有-999,则程序能求出已输入成绩中的最高成绩和最低成绩
- 可以将cin >>now_num;移动到while (now_num !=-999){下面,结果不变
07-10|判断题
来源:2025 年 9 月原题第 10 题
下列C++代码用于求斐波那契数列,即第1个数为0,第2个数为1,从第三个数开始,依次是其前两个数之和。如果输入的值为大于1的正整数,该代码能实现所求。()

{{ select(10) }}
- 正确
- 错误
07-11|单选题
来源:2025 年 12 月原题第 8 题
某个整数很长很长,形如:1232123212321……,其规律是从 1 开始逐一升高到 3,然后逐一降低到 1,再逐一升高到 3,一直到很长很长。假设最高位编号为 1,要求判断从左边最高位开始的第 N 位数是几?在横线处应该填入的代码是( )。

{{ select(11) }}
- N%4
- N/4
- N%3
- N/3
07-12|单选题
来源:2025 年 12 月原题第 12 题
两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的C++代码用于实现该操作,横线处应该填写的代码是()。

{{ select(12) }}
- N = N - M;M = M - N
- M = M - N;N = N - M
- M = N - M;N = M - N
- N, M = M, N;M, N = N, M
07-13|单选题
来源:2025 年 12 月原题第 13 题
如果一个正整数能被 3 整除,或者某一位能被 3 整除,则称之为“漂亮数”。下面的 C++ 代码用于判断正整数 N 是否为漂亮数,L1 行的横线处应该填入的代码是( )。

{{ select(13) }}
- N%10==0
- N%3%10==0
- N%10%3
- N%10%3==0
07-14|单选题
来源:2025 年 12 月原题第 14 题
如果正整数N的所有奇因数(即能将N整除的正奇数)的和是27的倍数,则称N是27的神秘数。下面的C++代码用于判断输入的N是否为27的神秘数。如输入53,它有两个奇因数1和53,则将输出Y。()。

{{ select(14) }}
- (N%i)&&(i%2)
- (N%i==0)&&(i%2==0)
- (N%i==0)&&(i%2)
- (N%i)&&(i%2==0)
07-15|单选题
来源:2025 年 12 月原题第 15 题
执行下面C++代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填入()

{{ select(15) }}
- tmp=i/10;
- tmp=i%100;
- tmp-=a*1000;
- tmp=i-i%1000;
07-16|判断题
来源:2025 年 12 月原题第 6 题
下面的C++代码能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同,121或414等是对称数,而123不是对称数。()

{{ select(16) }}
- 正确
- 错误
07-17|单选题
来源:2026 年 3 月原题第 11 题
一个正整数的每位都是个位数,称为数位,最高位非0。下面的C++代码用于求正整数的所有数位之和,简称数位和。如123的各数位分别是1、2、3,则其数位和为1+2+3,结果为6。为实现该目标,横线处应该填写的代码是()。

{{ select(17) }}
- tnt += N / 10;N /= 10
- tnt += N % 10;N /= 10
- tnt += N / 10;N %= 10
- tnt = tnt + N % 10;N %= 10
07-18|单选题
来源:2026 年 3 月原题第 12 题
小明想要快速知道任给一个正整数中有多少个奇数位(数位值是奇数),下面的C++代码是其实现,横线处应该填入的代码是()。

{{ select(18) }}
- N%10%2==0
- N%10%2==1
- N/10/2==1
- N/2/10==0
07-19|单选题
来源:2026 年 3 月原题第 13 题
小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数 M 和 N;然后将较大的数字放在较小的前面,拼成一个 4 位数;将这个 4 位数除以 3 的余数添加到 4 位数的后面,得到一个 5 位数;最后判断这个 5 位数能否被 14 整除。下面的 C++ 代码用于判断 M 和 N 是否符合全部要求,如果符合则输出 Y,否则输出 N。例如输入 85 和 79,可以拼出 85792,恰好是 14 的倍数,则输出 Y。关于下面代码描述正确的是( )。

{{ select(19) }}
- 代码段不能完成正确判断
- L1行代码中条件应该改为M<=N
- L2行代码应该改为if ((Q*10+Q/3)%14==0)
- 代码段可以不使用变量Q,而是在区分M和N大小后分别直接用它们来判断
07-20|单选题
来源:2026 年 3 月原题第 14 题
执行下面C++代码可以判断一个6位正整数N的高3位和低3位的差是否是314的倍数。例如628314就符合要求。横线处应该填入()。

{{ select(20) }}
- ((N%1000)-(N/1000))/314==0
- ((N/1000)-(N%1000))%314==0
- ((N%1000)-(N/1000))/314
- ((N/1000)-(N%1000))%314
07-21|单选题
来源:2026 年 3 月原题第 15 题
N 是一个正整数。如果 N 的所有奇数位的数位和等于所有偶数位的数位和,则称它是一个“双螺旋数”。例如 12375 的所有奇数位的数位和是 9,同时它的所有偶数位的数位和也是 9,则 12375 就是一个双螺旋数。下面的 C++ 代码用于判断输入的 N 是否为双螺旋数。空白处应该填入的代码是( )。

{{ select(21) }}
- N1+=N%10,N /=10;;N2+=N%10,N /=10;
- N1+=N%10,N /=10;;N2+=N/10,N /=10;
- N1+=N/10,N %=10;;N2+=N%10,N %=10;
- N1+=N/10,N %=10;;N2+=N/10,N %=10;
07-22|判断题
来源:2026 年 3 月原题第 6 题
下面的C++代码段的变量都是整型,它能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同。例如,121和414都是对称数,而123不是对称数。()

{{ select(22) }}
- 正确
- 错误
07-23|判断题
来源:2026 年 3 月原题第 7 题
执行下面的C++代码段,如果变量都为整型变量,输入为大于0的整数,则输出数值一定为-N的值。()

{{ select(23) }}
- 正确
- 错误
07-24|单选题
来源:2026 年 6 月原题第 13 题
以下 C++ 代码可以找出千位、百位、十位和个位满足特定条件的四位数(例如各位数字的四次方和等于原数,即“四叶玫瑰数”),横线处应该填入的是?

{{ select(24) }}
- int c = (n / 10) / 10;
- int c = (n / 10) % 10;
- int c = (n % 10) / 10;
- int c = (n % 10) % 10;
07-25|单选题
来源:2026 年 6 月原题第 14 题
下面的 C++ 代码用于计算经过 n 秒后的秒针位置(0~59),两处横线处分别应填入的代码是?

{{ select(25) }}
- (start + n) / 60 和 pos == 0
- (start + n) % 60 和 pos == 0
- (start + n) / 60 和 pos <= 0
- (start + n) % 60 和 pos = 0
07-26|单选题
来源:2026 年 6 月原题第 15 题
如果正整数 N 只能被 1 和它本身整除,则它是一个质数(或素数)。下面的 C++ 代码用于判断正整数 N 是否为质数(素数)。若 N 是质数,输出 YES,否则输出 NO。横线处不应填入的代码是( )。

{{ select(26) }}
- i < N
- i <= N
- i <= N / 2
- i * i <= N
07-27|判断题
来源:2026 年 6 月原题第 5 题
如下 C++ 代码能实现输出正整数 N 的各位数字。

{{ select(27) }}
- 正确
- 错误