🏋️ C3-8 自定义函数 · 本讲巩固

精选 6 道本讲核心题 · 函数定义·参数·返回值·函数封装

📌 在家怎么做本讲巩固: ① 先自己想思路 ② 对照流程图检查 ③ 去OJ平台敲代码 ④ 输本讲密码对答案
下面的解题思路流程图 + 重难点提示可以直接看;参考答案代码需要输入本节课密码后在本页弹出。
6L6 求阶乘(函数封装练习)

📚 覆盖知识点

自定义函数定义、函数调用、返回值、累乘

⭐ 难度

入门级,函数封装基础

解题思路流程图

定义函数 factorial(n)
↓
函数内:result=1,循环累乘
↓
return result 返回结果
↓
主函数调用 factorial(n) 并输出

⚠️ 需格外注意

  • 累乘变量初始化为1,不是0
  • 函数返回值类型用long long防止溢出
  • 函数定义要在main之前,或者先声明函数原型
🚀 去OJ平台做题(L6)
7L7 求最大公约数(函数参数传递)

📚 覆盖知识点

函数多参数、辗转相除法、while循环、参数传递

⭐ 难度

入门级,经典算法

解题思路流程图

定义函数 gcd(a, b)
↓
while(b!=0):temp=b; b=a%b; a=temp
↓
return a
↓
主函数调用 gcd(a, b)

⚠️ 需格外注意

  • 辗转相除法:gcd(a,b) = gcd(b, a%b)
  • 循环条件是b!=0,结束时a就是最大公约数
  • 注意交换顺序:先保存b,再更新b,最后更新a
🚀 去OJ平台做题(L7)
8L8 判断素数(函数返回值)

📚 覆盖知识点

bool返回值、素数判断、循环优化、函数调用

⭐ 难度

入门级,bool函数应用

解题思路流程图

定义函数 isPrime(n) 返回bool
↓
n<2 → return false
↓
for i=2到sqrt(n):n%i==0 → return false
↓
循环结束 → return true

⚠️ 需格外注意

  • 小于2的数不是素数,要先判断
  • 只需判断到sqrt(n),不需要判断到n-1
  • 找到一个因数就可以return false,不需要继续循环
🚀 去OJ平台做题(L8)
9L9 斐波那契数列(函数调用)

📚 覆盖知识点

递推思想、状态变量更新、函数封装、循环实现

⭐ 难度

入门级,递推基础

解题思路流程图

定义函数 fib(n)
↓
n<=2 → return 1
↓
a=1,b=1; 循环:c=a+b; a=b; b=c
↓
return b

⚠️ 需格外注意

  • 用循环实现(递推),不要用递归(GESP三级不要求)
  • 前两项都是1,要特殊处理
  • 更新顺序:先算c,再a=b,最后b=c
🚀 去OJ平台做题(L9)
10L11 水仙花数(函数综合应用)

📚 覆盖知识点

数位分解、函数封装、枚举法、立方计算

⭐ 难度

入门级,函数综合应用

解题思路流程图

定义函数 isNarcissistic(n)
↓
分解百位、十位、个位
↓
判断 百位³+十位³+个位³ == n?
↓
主函数枚举100-999调用函数

⚠️ 需格外注意

  • 十位 = (n/10)%10,不要忘记对10取余
  • 立方是自己乘自己三次,不是乘3
  • 水仙花数只有4个:153、370、371、407
🚀 去OJ平台做题(L11)
14L75 跳绳(模拟+函数封装)

📚 覆盖知识点

数组传参、函数封装、条件判断、模拟统计

⭐ 难度

普及-,函数综合应用

解题思路流程图

读入n次跳绳成绩
↓
定义函数 countPass(a, n, target)
↓
函数内遍历数组:a[i]>=target则计数
↓
主函数调用并输出结果

⚠️ 需格外注意

  • 数组作为函数参数时,数组名就是首地址
  • 函数参数要包含数组长度n,因为函数内不知道数组大小
  • 达标条件是大于等于目标值,不是大于
🚀 去OJ平台做题(L75)
💪 本讲巩固做完意犹未尽?👉 去 💻 OJ练习题(完整题库 10基础+5进阶) 刷更多题!