Skip to content

Commit 37420e6

Browse files
YdrMasterYueLingXi
authored andcommitted
Merge pull request LearningInfiniTensor#10 from DongDongBan/patch-header-ex22
为Ex22添加缺少的头文件<cstring>
2 parents 904dff0 + 86ab037 commit 37420e6

File tree

12 files changed

+49
-20
lines changed

12 files changed

+49
-20
lines changed

exercises/00_hello_world/main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#include "../exercise.h"
2+
23

34
// READ: std streams <https://zh.cppreference.com/w/cpp/io/c/std_streams>
45
// READ: 流修饰符 <https://zh.cppreference.com/w/cpp/io/manip>
56
// READ: format in cxx20 <https://zh.cppreference.com/w/cpp/utility/format/format>
67

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

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 = 3;// 定义变量 x 并赋值为 3
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;// 返回 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: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,27 @@ constexpr unsigned long long fibonacci(int i) {
44
switch (i) {
55
case 0:
66
return 0;
7+
break;
78
case 1:
89
return 1;
10+
break;
911
default:
1012
return fibonacci(i - 1) + fibonacci(i - 2);
13+
break;
1114
}
1215
}
16+
unsigned long long fibonacci2(int n) {
17+
if (n == 0) return 0;
18+
if (n == 1) return 1;
19+
20+
unsigned long long a = 0, b = 1;
21+
for (int i = 2; i <= n; ++i) {
22+
auto temp = a + b;
23+
a = b;
24+
b = temp;
25+
}
26+
return b;
27+
}
1328

1429
int main(int argc, char **argv) {
1530
constexpr auto FIB20 = fibonacci(20);
@@ -19,7 +34,7 @@ int main(int argc, char **argv) {
1934
// TODO: 观察错误信息,修改一处,使代码编译运行
2035
// PS: 编译运行,但是不一定能算出结果……
2136
constexpr auto ANS_N = 90;
22-
constexpr auto ANS = fibonacci(ANS_N);
37+
auto ANS = fibonacci2(ANS_N);
2338
std::cout << "fibonacci(" << ANS_N << ") = " << ANS << std::endl;
2439

2540
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] != 0) ? 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: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ 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+
10+
for (int i = 0; i <= len - 3; ++i) {
11+
int a = *(ptr + i * stride);
12+
int b = *(ptr + (i + 1) * stride);
13+
int c = *(ptr + (i + 2) * stride);
14+
if (c != a + b) return false;
15+
}
16+
}
817
return true;
918
}
1019

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)