1
1+3
1+12=1+3*1+3*3=1+3+9
1+3+9+9*3=1+3+9+27
1+3+9+27+27*3=1+3+9+27+81
...
#include<stdio.h>
void main()
{ int sum,i,n,m
scanf("%d",&n)
for ( i=0,sum=0,m=1i<ni+=3 ) { sum+=mm*=3}
printf("%d小时后细胞数量为%d个\n",n,sum)
}
根据题意,使用递归函数,我的代码,细胞是从第二天才开始分裂。所以N输入值小于等于1,细胞不分裂。
如果你想第一天就分裂,把代码*n<=1改成*n<=0。
#include<stdio.h>int division(int *,int)
int main()
{
int n
while(1)
{
printf("请输入N的值(0<N<20):")
scanf("%d",&n)
printf("经过N天,细胞数量(从第二天开始分裂):%d\n\n",division(&n,1))
}
return 0
}
int division(int *n,int cnt)
{
if(*n<=1)
return cnt
cnt*=2
(*n)--
return division(n,cnt)
}
# include <stdio.h>int main(void)
{
int a[20]
a[0] = 1
int i, n
while (scanf("%d", &n) != EOF)
{//按ctrl+d 退出循环. 输入n的值最大为20
for (i=1 i<n ++i)
{
a[i] = a[i-1] * 2
}
printf("第%d天细胞数量: %d\n", n, a[i - 1])
}
return 0
}
~
按道理讲 第一天一个, 第二天应该是由第一个分裂二个然后第一天的一个挂了,
第三题是分裂出来4个, 第二天的两个挂了,
以此类推, 那么第五天应该是16个, 不是你说的8个细胞,
还有你给的那个公式前面的加1如果需要的话 在这个程序的输出结果加1就可以了, 如果不需要则不需要修改