C语言细胞分裂问题

Python032

C语言细胞分裂问题,第1张

每次分裂得到的细胞数:前次细胞数+3的(分裂次数)次方,而3的n次方可以用累乘得到

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就可以了, 如果不需要则不需要修改