用C语言设置指数增长函数X = a(1+b)^t

Setting up Exponential growth function X = a(1+b)^t in C language

我正在编写一个程序,使用指数增长函数 (X = a(1+b)^t) 跟踪一周内生成的矩形数量。一个人一天可以做60个长方形

a 代表初始人口,这是在一周的第一天已经制作矩形的人数。 b代表增长率,这是每天新做长方形的人数。 t代表时间间隔,对于这个程序来说是7天。

我很难开始解决这个问题,我需要一些指导。

我在考虑使用 math.h 和 pow,像这样(这段代码没有编译)


#include <math.h>
#include <stdio.h>
#include <stdlib.h>


int main() {

    int initial_POPULATION;
    int time_INTERVAL; 
    double growth_RATE;

    printf("How many people are making rectangles at the 
    biginning of the week?\n");
    scanf("%d", &initial_POPULATION);

    printf("How many people are making rectangles each day? 
    \n");
    scanf("%1f", &growth_RATE);

    //Exponential growth function X = a(1+b)^t
    printf("%d rectangles will be made this week!\n",
        initial_POPULATION(pow(1+growth_RATE),time_INTERVAL));

    return 0;

}

您的代码未编译可能有 4 个原因。

如果您使用的是 unix,您是否尝试过像这样编译 -lm

gcc /path/to/file.c -lm -o /path/to/outputfile

此外,字符串文字中不能有换行符。这是不允许的:

char *MyString = "Hello

World";

最重要的是,您正在尝试调用 initial_POPULATION (int),就好像它是一个函数一样:

initial_POPULATION(pow(1+growth_RATE),time_INTERVAL)

也许你的意思是:

initial_POPULATION*(pow(1+growth_RATE),time_INTERVAL)

最后,time_INTERVAL 未初始化,由@Z4-tier 提出。

有几个问题,但最明显的是您没有在任何地方设置 time_INTERVAL 的值。接下来是计算最终值的行:在 C 中,您需要使用 * 来表示乘法。 Parens 不像在常规数学中那样用作隐含的乘法运算符(无论如何,括号在最后一个 printf 中的使用方式是不正确的)。最后,确保通过使用 %lf 作为 scanf 中的格式说明符将 growth_RATE 读取为双精度数(使用 %f 将其读取为单精度 4 字节值,即使尽管它被声明为 double 也就是......好吧,两倍)。

试试这个:

    scanf("%lf", &growth_RATE);
    time_INTERVAL=7;
    printf("%f rectangles will be made this week!\n", initial_POPULATION * pow(1+growth_RATE, time_INTERVAL));

此外,如@Asadefa 所述,从字符串文字中删除换行符。