#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) }}

  • 正确
  • 错误