1. 请分别使用程序流程图、PAD图和N-S图描述下列程序的算法: 求s=1-1/2!+1/3!-1/41+...1/n!.其中 n的值由键盘输入。
时间: 2023-06-16 09:04:13 浏览: 175
程序流程图:
![program_flowchart](https://i.imgur.com/nmH6g8r.png)
PAD图:
![program_pseudocode](https://i.imgur.com/Qvavh2n.png)
N-S图:
![program_ns](https://i.imgur.com/9W1H1af.jpg)
其中,Input为输入n的值,Output为输出最终结果s的值。算法使用循环结构和条件分支结构实现,具体实现细节见流程图,PAD图和N-S图。
相关问题
1. 请分别使用程序流程图、PAD图和(N-S图描述下列程序的算法: 描 (1)求整数1~n的累加和sum,其中n的值由键盘输入。 2)求整型数组K[50]中的最大者和次大者。 (3)求s=1-1/2!+1/3!-1/41+...1/n!.其中 n的值由键盘输入。
程序流程图:
(1)
```
开始
输入n的值
sum = 0
for i = 1 to n do
sum = sum + i
end for
输出sum
结束
```
(2)
```
开始
输入数组K[50]
max = K[0]
sec_max = K[0]
for i = 1 to 49 do
if K[i] > max then
sec_max = max
max = K[i]
else if K[i] > sec_max then
sec_max = K[i]
end if
end for
输出max和sec_max
结束
```
(3)
```
开始
输入n的值
s = 1
factorial = 1
for i = 2 to n do
factorial = factorial * i
if i mod 2 = 0 then
s = s - 1 / factorial
else
s = s + 1 / factorial
end if
end for
输出s
结束
```
PAD图:
(1)
```
┌─开始─┐
│ │
│ 输入n的值 │
│ │
├─sum = 0─┤
│ │
│ for i = 1 to n do │
│ │
│ sum = sum + i │
│ │
│ end for │
│ │
├─输出sum─┤
│ │
└─结束──┘
```
(2)
```
┌─开始─┐
│ │
│ 输入数组K[50] │
│ │
├─max = K[0]─┤
│ │
├─sec_max = K[0]─┤
│ │
│ for i = 1 to 49 do │
│ │
│ if K[i] > max then │
│ │
│ sec_max = max │
│ │
│ max = K[i] │
│ │
│ else if K[i] > sec_max then │
│ │
│ sec_max = K[i] │
│ │
│ end if │
│ │
│ end for │
│ │
├─输出max和sec_max─┤
│ │
└─结束──┘
```
(3)
```
┌─开始─┐
│ │
│ 输入n的值 │
│ │
├─s = 1─┤
│ │
├─factorial = 1─┤
│ │
│ for i = 2 to n do │
│ │
│ factorial = factorial * i │
│ │
│ if i mod 2 = 0 then │
│ │
│ s = s - 1 / factorial │
│ │
│ else │
│ │
│ s = s + 1 / factorial │
│ │
│ end if │
│ │
│ end for │
│ │
├─输出s─┤
│ │
└─结束──┘
```
N-S图:
(1)
```
开始
|
↓
输入n的值
|
↓
sum = 0
|
↓
for i = 1 to n do
|
↓
sum = sum + i
|
↓
end for
|
↓
输出sum
|
↓
结束
```
(2)
```
开始
|
↓
输入数组K[50]
|
↓
max = K[0]
|
↓
sec_max = K[0]
|
↓
for i = 1 to 49 do
|
↓
if K[i] > max then
|
↓
sec_max = max
|
↓
max = K[i]
else if K[i] > sec_max then
|
↓
sec_max = K[i]
end if
|
↓
end for
|
↓
输出max和sec_max
|
↓
结束
```
(3)
```
开始
|
↓
输入n的值
|
↓
s = 1
|
↓
factorial = 1
|
↓
for i = 2 to n do
|
↓
factorial = factorial * i
|
↓
if i mod 2 = 0 then
|
↓
s = s - 1 / factorial
else
|
↓
s = s + 1 / factorial
end if
|
↓
end for
|
↓
输出s
|
↓
结束
```
1.请分别使用程序流程图、PAD图和N-S图描述下列程序的算法:(1)求整数1~n的累加和sum,其中n的值由键盘输入。(2)求整型数组K[50]中的最大者和次大者。 (3)求s=1-1/2!+1/3!-1/4!+…1/n!,其中n的值由键盘输入。
1. (1) 求整数1~n的累加和 Sum (n输入):
- 程序流程图:
```
开始
→ 输入 n
→ 初始化 sum = 0
→ for i = 1 to n
→ sum = sum + i
→ 输出 sum
→ 结束
```
- PAD 图 (Programmer's Algorithm Description):
P(A) 输入n, S(0)
L1 S := S + A(n)
E1 输出S
P(E)
- N-S 图 (Structured English):
```
PROCEDURE Main
INPUT n
DECLARE sum = 0
FOR i = 1 TO n DO
sum = sum + i
END FOR
OUTPUT sum
END PROCEDURE
```
2. (2) 求整型数组 K[50] 中的最大者 Max 和次大者 SecondMax:
- 流程图:
```
开始
→ 输入数组 K
→ Initialize Max = K[0], SecondMax = K[0]
→ 遍历数组 K
→ 如果当前元素大于 Max, 更新 Max
→ 否则,如果当前元素大于 SecondMax 且不大于 Max, 更新 SecondMax
→ 输出 Max, SecondMax
→ 结束
```
3. (3) 求 s=1-1/2!+1/3!-1/4!+…1/n! (n输入):
- 程序流程图:
```
开始
→ 输入 n
→ 初始化 sum = 1, fact = 1
→ for i = 2 to n
→ fact *= i
→ sum += 1/fact
→ fact -= 1/fact
→ 输出 sum
→ 结束
```
阅读全文