Skip to content

Commit c1cb875

Browse files
committed
feat: 完成c++基础作业
1 parent 919dfd0 commit c1cb875

File tree

34 files changed

+239
-140
lines changed

34 files changed

+239
-140
lines changed

exercises/00_hello_world/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66

77
int main(int argc, char **argv) {
88
// TODO: 在控制台输出 "Hello, InfiniTensor!" 并换行
9-
std::cout : "Hello, InfiniTensor!" + std::endl;
9+
std::cout << "Hello, InfiniTensor!" << std::endl;
1010
return 0;
1111
}

exercises/01_variable&add/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
int main(int argc, char **argv) {
66
// TODO: 补全变量定义并打印加法运算
77
// x ?
8+
int x=5;
89
std::cout << x << " + " << x << " = " << x + x << std::endl;
910
return 0;
1011
}

exercises/02_function/main.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
// NOTICE: 补充由内而外读法的机翻解释 <https://learn.microsoft.com/zh-cn/cpp/c-language/interpreting-more-complex-declarators?view=msvc-170>
66

77
// TODO: 在这里声明函数
8+
int add(int a, int b);
89

910
int main(int argc, char **argv) {
1011
ASSERT(add(123, 456) == 123 + 456, "add(123, 456) should be 123 + 456");
@@ -16,4 +17,5 @@ int main(int argc, char **argv) {
1617

1718
int add(int a, int b) {
1819
// TODO: 补全函数定义,但不要移动代码行
20+
return a + b;
1921
}

exercises/03_argument&parameter/main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ void func(int);
88
// TODO: 为下列 ASSERT 填写正确的值
99
int main(int argc, char **argv) {
1010
auto arg = 99;
11-
ASSERT(arg == ?, "arg should be ?");
11+
ASSERT(arg == 99, "arg should be 99");
1212
std::cout << "befor func call: " << arg << std::endl;
1313
func(arg);
14-
ASSERT(arg == ?, "arg should be ?");
14+
ASSERT(arg == 99, "arg should be 99");
1515
std::cout << "after func call: " << arg << std::endl;
1616
return 0;
1717
}
1818

1919
// TODO: 为下列 ASSERT 填写正确的值
2020
void func(int param) {
21-
ASSERT(param == ?, "param should be ?");
21+
ASSERT(param == 99, "param should be 99");
2222
std::cout << "befor add: " << param << std::endl;
2323
param += 1;
24-
ASSERT(param == ?, "param should be ?");
24+
ASSERT(param == 100, "param should be 100");
2525
std::cout << "after add: " << param << std::endl;
2626
}

exercises/04_static/main.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ static int func(int param) {
1010

1111
int main(int argc, char **argv) {
1212
// TODO: 将下列 `?` 替换为正确的数字
13-
ASSERT(func(5) == ?, "static variable value incorrect");
14-
ASSERT(func(4) == ?, "static variable value incorrect");
15-
ASSERT(func(3) == ?, "static variable value incorrect");
16-
ASSERT(func(2) == ?, "static variable value incorrect");
17-
ASSERT(func(1) == ?, "static variable value incorrect");
13+
ASSERT(func(5) == 5, "static variable value incorrect");
14+
ASSERT(func(4) == 6, "static variable value incorrect");
15+
ASSERT(func(3) == 7, "static variable value incorrect");
16+
ASSERT(func(2) == 8, "static variable value incorrect");
17+
ASSERT(func(1) == 9, "static variable value incorrect");
1818
return 0;
1919
}

exercises/05_constexpr/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ int main(int argc, char **argv) {
1818

1919
// TODO: 观察错误信息,修改一处,使代码编译运行
2020
// PS: 编译运行,但是不一定能算出结果……
21-
constexpr auto ANS_N = 90;
22-
constexpr auto ANS = fibonacci(ANS_N);
21+
constexpr auto ANS_N = 9; //PS :原值90
22+
const auto ANS = fibonacci(ANS_N);
2323
std::cout << "fibonacci(" << ANS_N << ") = " << ANS << std::endl;
2424

2525
return 0;

exercises/06_array/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ unsigned long long fibonacci(int i) {
1111
return 1;
1212
default:
1313
// TODO: 补全三目表达式缺失的部分
14-
return <condition> ? <cache> : (arr[i] = fibonacci(i - 1) + fibonacci(i - 2));
14+
return arr[i] ? arr[i] : (arr[i] = fibonacci(i - 1) + fibonacci(i - 2));
1515
}
1616
}
1717

1818
int main(int argc, char **argv) {
1919
// TODO: 为此 ASSERT 填写正确的值
20-
ASSERT(sizeof(arr) == ?, "sizeof array is size of all its elements");
20+
ASSERT(sizeof(arr) == 720, "sizeof array is size of all its elements");
2121
// ---- 不要修改以下代码 ----
2222
ASSERT(fibonacci(2) == 1, "fibonacci(2) should be 1");
2323
ASSERT(fibonacci(20) == 6765, "fibonacci(20) should be 6765");

exercises/07_loop/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
// READ: 纯函数 <https://zh.wikipedia.org/wiki/%E7%BA%AF%E5%87%BD%E6%95%B0>
66
static unsigned long long fibonacci(int i) {
77
// TODO: 为缓存设置正确的初始值
8-
static unsigned long long cache[96], cached;
8+
static unsigned long long cache[96] = {0, 1}, cached = 2;
99
// TODO: 设置正确的循环条件
10-
for (; false; ++cached) {
10+
for (; cached <= i; ++cached) {
1111
cache[cached] = cache[cached - 1] + cache[cached - 2];
1212
}
1313
return cache[i];

exercises/08_pointer/main.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ bool is_fibonacci(int *ptr, int len, int stride) {
55
ASSERT(len >= 3, "`len` should be at least 3");
66
// TODO: 编写代码判断从 ptr 开始,每 stride 个元素取 1 个元素,组成长度为 n 的数列是否满足
77
// arr[i + 2] = arr[i] + arr[i + 1]
8+
for (int i = 0; i < len - 2; ++i) {
9+
if (ptr[(i + 2) * stride] != ptr[i * stride] + ptr[(i + 1) * stride]) {
10+
return false;
11+
}
12+
}
813
return true;
914
}
1015

exercises/09_enum&union/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ ColorEnum convert_by_pun(Color c) {
3737

3838
TypePun pun;
3939
// TODO: 补全类型双关转换
40+
pun.c = c;
4041

4142
return pun.e;
4243
}

0 commit comments

Comments
 (0)