Skip to content

Commit 326e8fa

Browse files
committed
feat: 扩充到 34 题
Signed-off-by: YdrMaster <[email protected]>
1 parent 735a24c commit 326e8fa

File tree

30 files changed

+245
-54
lines changed

30 files changed

+245
-54
lines changed

exercises/06_array/main.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include "../exercise.h"
2+
3+
// READ: 数组 <https://zh.cppreference.com/w/cpp/language/array>
4+
5+
unsigned long long arr[90]{0, 1};
6+
unsigned long long fibonacci(int i) {
7+
switch (i) {
8+
case 0:
9+
return 0;
10+
case 1:
11+
return 1;
12+
default:
13+
// TODO: 补全三目表达式缺失的部分
14+
return <condition> ? <cache> : (arr[i] = fibonacci(i - 1) + fibonacci(i - 2));
15+
}
16+
}
17+
18+
int main(int argc, char **argv) {
19+
// TODO: 为此 ASSERT 填写正确的值
20+
ASSERT(sizeof(arr) == ?, "sizeof array is size of all its elements");
21+
// ---- 不要修改以下代码 ----
22+
ASSERT(fibonacci(2) == 1, "fibonacci(2) should be 1");
23+
ASSERT(fibonacci(20) == 6765, "fibonacci(20) should be 6765");
24+
ASSERT(fibonacci(80) == 23416728348467685, "fibonacci(80) should be 23416728348467685");
25+
return 0;
26+
}
File renamed without changes.

exercises/08_pointer/main.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include "../exercise.h"
2+
3+
// READ: 数组向指针退化 <https://zh.cppreference.com/w/cpp/language/array#%E6%95%B0%E7%BB%84%E5%88%B0%E6%8C%87%E9%92%88%E7%9A%84%E9%80%80%E5%8C%96>
4+
bool is_fibonacci(int *ptr, int len, int stride) {
5+
ASSERT(len >= 3, "`len` should be at least 3");
6+
// TODO: 编写代码判断从 ptr 开始,每 stride 个元素取 1 个元素,组成长度为 n 的数列是否满足
7+
// arr[i + 2] = arr[i] + arr[i + 1]
8+
return true;
9+
}
10+
11+
// ---- 不要修改以下代码 ----
12+
int main(int argc, char **argv) {
13+
int arr0[]{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55},
14+
arr1[]{0, 1, 2, 3, 4, 5, 6},
15+
arr2[]{99, 98, 4, 1, 7, 2, 11, 3, 18, 5, 29, 8, 47, 13, 76, 21, 123, 34, 199, 55, 322, 0, 0};
16+
// clang-format off
17+
ASSERT( is_fibonacci(arr0 , sizeof(arr0) / sizeof(*arr0) , 1), "arr0 is Fibonacci" );
18+
ASSERT( is_fibonacci(arr0 + 2, sizeof(arr0) / sizeof(*arr0) - 4, 1), "part of arr0 is Fibonacci" );
19+
ASSERT(!is_fibonacci(arr1 , sizeof(arr1) / sizeof(*arr1) , 1), "arr1 is not Fibonacci");
20+
ASSERT( is_fibonacci(arr1 + 1, 3 , 1), "part of arr1 is Fibonacci" );
21+
ASSERT(!is_fibonacci(arr2 , sizeof(arr2) / sizeof(*arr2) , 1), "arr2 is not Fibonacci");
22+
ASSERT( is_fibonacci(arr2 + 2, 10 , 2), "part of arr2 is Fibonacci" );
23+
ASSERT( is_fibonacci(arr2 + 3, 9 , 2), "part of arr2 is Fibonacci" );
24+
ASSERT(!is_fibonacci(arr2 + 3, 10 , 2), "guard check" );
25+
ASSERT(!is_fibonacci(arr2 + 1, 10 , 2), "guard check" );
26+
// clang-format on
27+
return 0;
28+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)