作品:一颗会跳的爱心

数学里有一条心形线:所有满足 (x² + y² - 1)³ - x²·y³ ≤ 0 的点,拼起来正好是一颗心。 程序用两层循环扫一遍格子:外层 y 从上往下,内层 x 从左往右,点在心里就打 *,否则打 .。 为了避免小数误差,x 和 y

开始练习 →

辗转相除求最大公约数

辗转相除:(a, b) → (b, a % b),直到 b 为 0,a 就是最大公约数 481848 % 18 = 12 181218 % 12 = 6 12612 % 6 = 0 60余数为 0,停 下面的程序输出两个数:84 和 36

开始练习 →

斐波那契数列

斐波那契数列:1, 1, 2, 3, 5, 8, 13……从第 3 项起,每一项都是前两项之和。程序现在输出第 10 项(55)。先运行,看画布上每一项是怎么来的;然后只改一个数,输出第 30 项: 832040 代码里以 @youci 开

开始练习 →

母题:所有水仙花数

水仙花数:一个三位数,它各位数字的立方和等于它本身(如 153 = 1³ + 5³ + 3³)。输出所有水仙花数,用空格隔开: 153 370 371 407 程序把三位数逐个拆开判断,有一位的立方算错了。

开始练习 →

变式 1:最大公约数

输入两个正整数,用辗转相除法求最大公约数。例如输入 48 18,输出: 6 程序更新 a、b 的顺序错了(a 先被改掉,b 用的已经是新的 a)。变量 t 已经声明好了,用它把余数先存起来。

开始练习 →

变式 2:最小公倍数

输入两个正整数,输出它们的最小公倍数。公式:最小公倍数 = a ÷ 最大公约数 × b。例如输入 4 6,输出: 12 最大公约数已经算好了(画布上能看到它),最后一步没用上它。 代码里以 @youci 开头的 printf 只负责运行后在

开始练习 →

变式 3:1000 以内的完数

完数:一个数恰好等于它除自己以外的所有因数之和,比如 6 = 1 + 2 + 3。输出 1000 以内所有完数,用空格隔开: 6 28 496 外层枚举每个数,内层把它的因数加起来——内层的范围多算了一个。

开始练习 →

变式 4:区间里有几个素数

输入 m 和 n(1 ≤ m ≤ n ≤ 10000),输出 [m, n] 里素数的个数。内层只试到 j * j <= i 就够了,比试到 i - 1 快得多。例如输入 1 20,输出: 8 程序把 1 也当成了素数。

开始练习 →

二级 · 程序填空:斐波那契前 n 项

下面的程序输出斐波那契数列的前 10 项:1 1 2 3 5 8 13 21 34 55。请在【】处填入正确的内容。 #include <stdio.h> int main(void) { int f1 = 1, f2

开始练习 →

二级 · 程序改错:最大公约数

下面程序的功能是:用辗转相除法求 24 和 36 的最大公约数,输出 12。 程序中有两处错误(都能通过编译)。请改正 found 下面一行中的错误,不要改动其他地方,也不要增删行。

开始练习 →