父亲今年40岁,儿子6岁,编程求多少年后父亲的岁数是儿子的2倍
实现思路后面都是最基础的数学问题
y + n = 2(y + n - 6)
=> n = 12 - y
#include <stdio.h>
int main() {
int son_age = 6;
int x = 0;
while (son_age != 12) {
son_age++;
x++;
}
printf("输出\n", x);
return 0;
}
#include <stdio.h>
int main() {
int y = 0;
int baba = 40;
int son = 6;
while (baba != son * 2) {
baba += 1;
son += 1;
y += 1;
}
printf("%d", y);
return 0;
}
以下是用 C 语言编写的实现代码:
#include <stdio.h>
int main() {
int father_age = 40; // 父亲的年龄
int son_age = 6; // 儿子的年龄
int year = 0; // 记录多少年后父亲的岁数是儿子的两倍
while (father_age != 2 * son_age) {
year++; // 每循环一次,年数加1
father_age++; // 父亲每年增加1岁
son_age++; // 儿子每年增加1岁
}
printf("%d 年后,父亲的岁数是儿子的两倍。\n", year);
return 0;
}
运行结果:
28 年后,父亲的岁数是儿子的两倍。
首先画下设计流程图:
源代码:
#include<stdio.h>
void main()
{
int i,s=1;
for(i=1;i<10;i++)//因为到第十天还剩一个,所以循环9次
{
s=(s+1)*2;//倒序求出每天的数量
}
printf("猴子第一天摘了%d个桃子\n",s);
}
运行结果:
根据题目要求,我们需要计算父亲年龄达到儿子年龄两倍的时间,已知父亲今年40岁,儿子6岁。因此,我们可以通过算法2:数学公式法来解决这个问题。
根据等差数列前n项和的数学求法:
Sn = \frac{n(a_1+a_n)}{2}
因为这里我们只知道 $a_n$ 以及 公差 $5$,并不知道 $n$ 是多少,为此我们可以变换公式。
Sn = \frac{(a_n-a_1)^2}{2d}
进一步地,我们需要找到 $a_1$ 和 $n$ 的值。由于我们已知儿子6岁,父亲40岁,在第 $n$ 年时,儿子 $a_n = a_1 + (n-1) \times d = 6 + (n-1) \times 5 = 5n + 1$。
而父亲的年龄 $40+a_1 = 2(6+n) = 12 + 2n$。结合等差数列前n项和的数学求法,我们有:
\frac{(5n+1-6)^2}{10} = 12 + 2n - 40
化简后得到:
n^2 - 15n + 56 = 0
解得 $n=7$ 或 $n=8$,因此可以计算出父亲年龄达到儿子年龄两倍的时间为14年或15年。
根据以上分析,我们可以用以下代码解决该问题:
#include <iostream>
using namespace std;
// 判断是否为闰年的函数
int isLeapYear(int year){
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
return 1;
}
else{
return 0;
}
}
// 计算父亲年龄达到儿子年龄两倍的时间
int calcFatherAge(){
int fatherAge = 40;
int sonAge = 6;
int n = 1;
while(fatherAge != sonAge * 2){
n++;
fatherAge++;
if(isLeapYear(2017 + n) == 1){ // 如果是闰年,二月天数为29,否则为28
sonAge += 2;
}
else{
sonAge++;
}
}
return 2017+n;
}
int main(){
int year = calcFatherAge();
cout << year << "年是父亲年龄达到儿子年龄两倍的年份" << endl;
return 0;
}