zjohannes 发表于 2021-8-3 00:10:01

关于《带你学C带你飞》 S1E16:拾遗 | 课后测试题

求助各位大佬
为什么我模仿答案中的写法,编译器会运算超时没有结果呢

#include <stdio.h>
       
#define MONEY 10000
       
int main()
{
                        double a_total = MONEY, b_total = MONEY;
                        int count = 0;

                        do
                        {
                                a_total += a_total * 0.1;
                                b_total += b_total * 0.05;
                                count++;
                        }while(a_total >= b_total);

                        printf("%d年之后,黑夜的总投资额超越了小甲鱼!\n", count);
                        printf("小甲鱼的总投资为:%.2f\n", a_total);
                        printf("黑夜的总投资为:%.2f\n", b_total);

                        return 0;
}

qiuyouzhi 发表于 2021-8-3 08:54:24

你看你那个循环,肯定是死循环呀

大马强 发表于 2021-8-3 09:02:49

死循环啊,小甲鱼的钱永远比黑夜的多
是不是初值和倍率写错了,因为跳出条件是黑夜比小甲鱼钱多时
可以减小黑夜的初值,和上调黑夜的倍率

hymanly 发表于 2021-8-3 09:05:24

a_total += a_total * 0.1应该会一直大于b_total += b_total * 0.05,而且差距会越来越大

zjohannes 发表于 2021-8-4 14:34:50

qiuyouzhi 发表于 2021-8-3 08:54
你看你那个循环,肯定是死循环呀

{:10_285:}可为什么把循环中的a_total += a_total * 0.1 改为a_total += MONEY * 0.1程序就能运算出来

zjohannes 发表于 2021-8-4 14:35:24

hymanly 发表于 2021-8-3 09:05
a_total += a_total * 0.1应该会一直大于b_total += b_total * 0.05,而且差距会越来越大

{:10_285:}可为什么把循环中的a_total += a_total * 0.1 改为a_total += MONEY * 0.1程序就能运算出来

zjohannes 发表于 2021-8-4 14:36:14

大马强 发表于 2021-8-3 09:02
死循环啊,小甲鱼的钱永远比黑夜的多
是不是初值和倍率写错了,因为跳出条件是黑夜比小甲鱼钱多时
可以减 ...

{:10_285:}可为什么把循环中的a_total += a_total * 0.1 改为a_total += MONEY * 0.1程序就能运算出来

hymanly 发表于 2021-8-4 14:42:04

zjohannes 发表于 2021-8-4 14:35
可为什么把循环中的a_total += a_total * 0.1 改为a_total += MONEY * 0.1程序就能运算出来

因为money是固定值,所以a_total+=MONEY*0.1的结果一直保持不变,但b_total+=b+total*0.05的值一直在变大

zjohannes 发表于 2021-8-4 14:53:52

理解了,原来是我对于题目:单利息即每年的利息均为投资额 * 利率;复合利息则是每年的本息所得作为第二年的投资额。这个条件没有理解透彻!感谢各位大哥!
页: [1]
查看完整版本: 关于《带你学C带你飞》 S1E16:拾遗 | 课后测试题