modified `Experiment.md`

master
xqm32 4 years ago
parent b8952f0d4c
commit 218a4f5e7d

@ -120,13 +120,11 @@
## (二)、
1. 解题分析:
1. 第一题24解题分析:
此题较为简单,调用 `math.h` 库即可
```c
// 第二题和第四题
#include <math.h>
#include <stdio.h>
@ -146,9 +144,9 @@
printf("%lf\n", T3(x, y));
}
```
测试:
```
输入:
1
@ -157,14 +155,12 @@
1.290994
20.453416
```
2. 解题分析:
2. 第二题解题分析:
此题较为简单,考虑读取的是字符,将字符逆向输出即可
```c
// 第二题
#include <stdio.h>
int main() {
@ -185,13 +181,11 @@
4, 3, 2, 1
```
3. 解题分析:
3. 第三题解题分析:
此题较为简单,调用 `math.h` 库即可
```c
// 第三题
#include <math.h>
#include <stdio.h>
@ -220,13 +214,11 @@
4. 解题分析:
4. 第五题13解题分析:
此题较为简单,可以使用 `for` 循环,这里使用递归进行求解
```c
// 第五题中的第一题和第二题
int T1(int i) {
return i == 1 ? i : i + T1(i - 1);
}
@ -252,15 +244,165 @@
程序如期运行,结果正确
5. 第六题解题分析:
比较简单的一道题
```c
#include <stdio.h>
#define MAGIC_NUMBER 21
void print_left(int i) {
for (int j = 1; j <= i; j += 2)
printf(" %d ", j);
}
void print_right(int i) {
for (int j = i - 2; j >= 1; j -= 2)
printf(" %d ", j);
}
void print_space(int i) {
for (int j = 1; j <= MAGIC_NUMBER - i - 1; j += 2) {
printf(" ");
}
}
int main() {
for (int i = 1; i <= MAGIC_NUMBER; i += 2) {
print_space(i);
print_left(i);
print_right(i);
printf("\n");
}
}
```
测试
```
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
1 3 5 7 9 11 9 7 5 3 1
1 3 5 7 9 11 13 11 9 7 5 3 1
1 3 5 7 9 11 13 15 13 11 9 7 5 3 1
1 3 5 7 9 11 13 15 17 15 13 11 9 7 5 3 1
1 3 5 7 9 11 13 15 17 19 17 15 13 11 9 7 5 3 1
1 3 5 7 9 11 13 15 17 19 21 19 17 15 13 11 9 7 5 3 1
```
6. 第七题题目解析:
遍历即可
```c
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; ++i)
for (int j = 1; j < i; ++j)
printf("<%d, %d>\n", i, j);
}
```
测试
```
<2, 1>
<3, 1>
<3, 2>
...
<10, 7>
<10, 8>
<10, 9>
```
7. 第八题题目解析:
暴力输出即可
```c
#include <stdio.h>
int main() {
for (int i = 2; i < 10; ++i)
for (int j = 1; j < i; ++j)
printf("%d\n", j * 10 + i);
for (int i = 3; i < 10; ++i)
for (int j = 2; j < i; ++j)
for (int k = 1; k < j; ++k)
printf("%d\n", k * 100 + j * 10 + i);
for (int i = 4; i < 10; ++i)
for (int j = 3; j < i; ++j)
for (int k = 2; k < j; ++k)
for (int l = 1; l < k; ++l)
printf("%04d\n", l * 1000 + k * 100 + j * 10 + i);
}
```
测试:
```
12
13
23
...
4789
5789
6789
```
8. 第九题题目解析:
使用递归进行求解较为简单
```c
#include <stdio.h>
void find_fact(int n) {
int is_fact = 1;
for (int i = 2; i < n; ++i) {
if (n % i == 0) {
printf("%d*", i);
find_fact(n / i);
is_fact = 0;
break;
}
}
if (is_fact) {
printf("%d", n);
}
}
int main() {
int n;
scanf("%d", &n);
find_fact(n);
}
```
测试:
```
输入16
输出2*2*2*2
输入15
输出3*5
输入200
输出2*2*2*5*5
```
## (三)、
1. 解题分析:
1. 第二题解题分析:
只需反复求出后三位乘以 `12` 的结果即可
```c
// 第二题
#include <stdio.h>
int main() {
@ -271,6 +413,12 @@
}
```
测试:
```
512
```
# 实验总结
在完成 `T10` 时,本地编译出现了错误;经排错发现为报告代码出现问题。将代码中 `int fun(int) `的声明修改为 `void fun(int)` 后编译通过。通过此测试了解到了 `C++` 语言中声明应与实现一致。

Loading…
Cancel
Save