From 4f9588ede40fe4c6d09eab6330fa0df8d8c7fe16 Mon Sep 17 00:00:00 2001 From: YUE_DU <13673757+yue-du@user.noreply.gitee.com> Date: Tue, 5 Dec 2023 01:50:11 +0000 Subject: [PATCH] update report1.md. Signed-off-by: YUE_DU <13673757+yue-du@user.noreply.gitee.com> --- report1.md | 58 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/report1.md b/report1.md index d183aa3..dbb7935 100644 --- a/report1.md +++ b/report1.md @@ -163,32 +163,70 @@ int main(void) ## 问题2:猴子吃桃 - - +一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子? ### 1. 问题陈述 - +设计一个求第一天摘得桃子总数量的程序,输入一个正整数N表示猴子最后一天想再吃桃子时,桃子的数量为1。 ### 2. 输入、输出描述 - +-【输入】一个正整数N,表示猴子最后一天想再吃桃子时,桃子的数量为1。 +-【输出】一个整数,表示第一天猴子摘得桃子的总数量。 ### 3. 演算示例 - - +输入示例:10 +输出示例:1534 +解释:假设第一天摘得桃子总数为x,根据题意有: +·第2天剩下的桃子数量为x/2-1,即(x-2)/2; +·第3天剩下的桃子数量为(x-2)/2/2-1,即(x-4)/2/2; +·... +·第N天剩下的桃子数量为1,(x/(2^(N-1))-1)。 ### 4. 算法设计 +算法总体描述: +``` +Step 1.初始化变量 +Step 2.输入N,循环计算第一天的桃子数量 +Step 3.打印第一天摘得桃子数量 +``` +算法完整描述: +``` +//Step 1.初始化变量 +初始化桃子数量total为0 +初始化天数N为0 +//Step 2.输入天数,根据公式计算桃子数量 +输入天数 N +FOR 定义1|当第1天到第N天停止 +天数不断递增 +将前一天的桃子数量total加1后乘以2累加到总桃子数量totle中 +ENDFOR +//Step 3.输出第一天的桃子数量并打印 +``` +程序代码: - +``` +#include +int main() +{ + int n,x = 1; + scanf("%d",&n);//初始值为1 + for(int i = n; i > 1; i--){ + x = (x + 1) * 2;//第i天剩下的桃子数量 + } + printf("%d",x); + return 0; + } +``` ### 5. 测试 - +测试结果与两个演算示例一致,测试通过。 ### 小结 - - +·本题需要倒退求解第一天摘得的=桃子的总数量,可以使用循环实现。 +·在循环中,需要根据题意推到出第i天剩下的桃子数量与第i+1天剩下的桃子数量之间的关系。 +·根据推导结果,可以得到代码实现。 ## 问题3: -- Gitee