本题导读

本题考查程序框图,以及整数除法与取余运算。

📌【题干】

Question

(2017年山东卷(理)) 执行两次如图所示的程序框图,若第一次输入的 的值为 7,第二次输入的 的值为 9,则第一次、第二次输出的 的值分别为 ()

A. 0,0     B. 1,1     C. 0,1     D. 1,0

🔍【思路分析】

破题导航

  1. 分析框图逻辑:该框图一般是一个判断质数的算法。输入一个正整数 ,通过循环使 从 2 开始递增。
  2. 第一次模拟 ():
  • , 余数不为 0, 变为 3。
  • , 余数不为 0, 变大… 直到满足退出循环条件(如 )。
  • 由于 7 是质数,最终走向“是质数”的路径,输出 。
  1. 第二次模拟 ():
  • , 余数不为 0, 变为 3。
  • , 余数为 0,满足整除条件。
  • 走向“非质数”路径,输出 。

✅【答案】

点击查看答案

D

✍【详细解析】

Abstract

【答案】 D 【解析过程】 第一次执行:输入

  1. ,判断 能否被 整除,不能,执行 ;
  2. 此时满足循环终止条件(例如 或 ),程序跳出循环;
  3. 根据路径,7 是质数,输出 。

第二次执行:输入

  1. ,判断 能否被 整除,不能,执行 ;
  2. ,判断 能否被 整除,能,余数为 0;
  3. 程序直接跳出循环,走向另一分支,输出 。

综上,第一次输出 1,第二次输出 0。 故选 D

💡【考点归纳与避坑指南】

Danger

  • 算法功能识别:高考程序框图常考查经典算法,如“求最大公约数(更相减损术/辗转相除法)”、“判断质数”、“累加/累乘求和”等。
  • 变量跟踪:在草稿纸上建立变量表(),逐步记录变量的变化,是避免逻辑混乱的最有效方法。
  • 注意终止条件:是“直到型(Until)”还是“当型(While)”,以及判断框内的不等号是否包含等号,决定了循环的次数。

📖【试题探源与推广】

Tip

  1. 变式思考:如果输入 ,程序会输出什么?(通常输出 )。
  2. 代码关联:该框图在 Python 中对应的逻辑为:
def check(x):
    for n in range(2, int(x**0.5) + 1):
        if x % n == 0:
            return 0
    return 1

🔗【关联脉络】

Multi column