二级 · 程序填空:在函数里逆置数组

函数 reverse 把数组 a 的 n 个元素逆序存放。下面的程序输出 6 5 4 3 2 1。请在【】处填入正确的内容。 #include <stdio.h> void reverse(int a[], int n) {

开始练习 →

二级 · 程序改错:函数里冒泡排序

下面程序中,函数 fun 的功能是:用冒泡法把数组 a 的 n 个元素按从小到大排序。例如输入 4 和 9 2 7 5,输出 2 5 7 9。 程序中有两处错误。请改正 found 下面一行中的错误,不要改动 main,也不要增删行。

开始练习 →

二级 · 只写 fun:高于平均分的人数

函数 fun(score, m) 的功能:返回 m 个成绩中高于平均分的人数。main 已写好:第一行输入 m,第二行输入 m 个整数成绩。例如输入: 3 60 70 95 平均分 75,只有 95 高于它,输出 1。不要改 main,只在

开始练习 →

作品:我的一周步数条形图

输入一周 7 天的步数(单位:千步,0~20),画成条形图:每天一行,周1 后面跟几个 # 就是几千步;最后一行写出哪天走得最多。例如输入 6 9 4 11 7 13 2: 周1 ###### 周2 ######### 周3 #### 周4

开始练习 →

函数里再调用函数

嵌套调用:一层叫一层,最里面的先做完 g 做完,带着结果回到 f g(…) 正在执行 f(…) 等 g 回来 main 等 f 回来 一个函数里面可以调用另一个函数,这叫嵌套调用。下面 main 调用 sum_sq,sum_sq 又调用 s

开始练习 →

递归:先递下去,再归回来

函数在自己的函数体里调用自己,叫递归。它必须有一个结束条件,不然会一直调用下去,直到程序崩溃: if (n == 0) return;:结束条件,n 减到 0 就不再往下调用; count(n - 1);:自己调用自己,但问题规模变小了一点

开始练习 →

母题:递归求 1 + 2 + … + n

写递归只要想清楚两件事: 结束条件:最小的情况直接给答案——sum(1) 就是 1; 递推关系:大问题怎么用小一号的问题表示——sum(n) = n + sum(n - 1)。 输入 n(1 ≤ n ≤ 100),输出 1 + 2 + …

开始练习 →

变式 1:递归求 n 的阶乘

n! = n × (n−1)!,规定 0! = 1。输入 n(0 ≤ n ≤ 20),输出 n!。结果很大,用 long long 和 %lld。例如输入 10,输出: 3628800 现在不管输入几都输出 0。

开始练习 →

变式 2:递归求各位数字之和

输入一个非负整数 n,输出各位数字之和。递归的想法: 结束条件:n 只有一位(n < 10),和就是 n; 递推关系:和 = 个位 n % 10 + 去掉个位以后那个数的数位和。 例如输入 12345,输出: 15

开始练习 →

变式 3:递归求 x 的 n 次方

输入 x 和 n(n ≥ 0),输出 x 的 n 次方(用 long long)。递归:x⁰ = 1;xⁿ = x × xⁿ⁻¹。例如输入 5 3,输出: 125

开始练习 →