鱼C论坛

 找回密码
 立即注册
查看: 8200|回复: 9

谁能帮我编个C程序:一个青年和百万富翁的故事

[复制链接]
发表于 2012-11-21 21:42:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有一个年轻人与一个百万富翁做了一个交易,他给百万富翁10万元钱,在一个月内(按30天计算),百万富翁第一天给他一分钱,第二天给他二分钱,第三天给他四分钱,····,即每天给他前一天的2倍的钱数,结果这个百万富翁几乎倾家荡产,请问,从第几天开始年轻人开始赚钱,他最后赚了多少钱
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-22 00:20:10 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {
  4.         long double youngpay=100000.00;
  5.         long double youngget=0.01;
  6.         long double youngtotalget=0.0;
  7.         long double sum=0.0;
  8.         const int day=30;       
  9.         printf("有一个年轻人与一个百万富翁做了一个交易.\n");
  10.         for (int i=1;i<day;i++)
  11.         {
  12.                 if(i==1)
  13.                         youngget=0.01;
  14.                 youngget=youngget*2.0;
  15.                 youngtotalget+=youngget-youngpay;
  16.                 if(i<=3)
  17.                 {
  18.                         printf("第%d天年轻人得到了%f分钱\n",i,youngget*100);
  19.                         if(i==3)
  20.                                 printf("而这时百万富翁已经得到了%f元\n",youngpay);
  21.                 }
  22.                 else if(youngtotalget>0)
  23.                         printf("到了第%d天的时候,年轻人这天得到了%f元\n",i,youngtotalget);

  24.         }
  25.         printf("最终,年轻人共赚了%f元钱\n",youngtotalget);
  26. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-22 08:29:24 | 显示全部楼层
本帖最后由 落夜 于 2012-11-22 09:08 编辑

这个问题看下边
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-22 09:07:12 | 显示全部楼层
  1. #include<stdio.h>
  2. void main()
  3. {
  4.         double Yget=0.01,Ygettotal=0;
  5.         char i,j=0;
  6.         for(i=1;i<31;i++)
  7.         {       
  8.                 j=j+1;        //用于防止第一次输出重复
  9.                 if(i>1)
  10.                 {
  11.                         Yget=Yget*2;
  12.                 }
  13.                 Ygettotal=Ygettotal+Yget;
  14.                 if((Ygettotal>100000)&&(i==j))
  15.                 {
  16.                         printf("第%2.d天的时候年轻人开始挣钱!\n\n",i);
  17.                         j=j-10;   //使得i!=j
  18.                 }
  19.                 if(Ygettotal<=100000)
  20.                 {
  21.                         printf("第%2.d天年轻人还没有挣钱!\n这一天百万富翁给他%10.2lf元钱!\n一共得到%10.2lf元钱!\n\n",i,Yget,Ygettotal);
  22.                 }
  23.                 if(Ygettotal>100000)
  24.                 {       
  25.                         printf("第%2.d天年轻人继续在挣钱!\n这一天百万富翁给他%10.2lf元钱!\n一共得到%10.2lf元钱!\n一共挣了%10.2lf元钱!\n\n",i,Yget,Ygettotal,Ygettotal-100000);
  26.                 }
  27.         }
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-23 10:41:56 | 显示全部楼层
小递归??
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-24 08:59:59 | 显示全部楼层
[b]#include <stdio.h>

void main()
{
        int i;
        double pay[30]; //定义一个double类型的数组。
        double sumpay = 0.00;
        double money = 100000.00; //年轻人给百万富翁的10万元。

        pay[0] = 0.01;        //给数组的第一个元素赋值。

        for(i = 1; i < 30; i++)  //给pay[30]数组各个元素赋值。
        {
                pay[i] = 2 * pay[i-1];        
        }
       
        for(i = 0; i < 30; i++)
        {
                sumpay += pay[i];  //求pay[]数组中个元素之和。

                if(sumpay > money) //当百万富翁付给年轻人的钱大于10万的时候。
                {       
                        break;
                }
        }
        printf("从第 %d 天 开始赚钱 赚了%.2lf\n", i+1, sumpay-money);

        for(i = 0; i < 30; i++)
        {
                sumpay += pay[i]; //三十天内百万富翁总共付给年轻人的钱之和‘
        }
        printf("年轻人总共赚了%0.2lf \n", sumpay-money);//打印年轻人最后赚的钱。

}

我的答案是年轻人从第24天开始赚钱, 最后赚了10805190.38 。不知道对不对
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-24 09:32:02 | 显示全部楼层
这个太简单了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-24 12:53:52 | 显示全部楼层
从新改下代码 能更清楚点, 上次粘贴的时候有的内容没沾上;
#include <stdio.h>

void main()
{
        int i;
        double pay[30]; //定义一个double类型的数组。
        double sumpay = 0.00;
        double money = 100000.00; //年轻人给百万富翁的10万元。

        pay[0] = 0.01;        //给数组的第一个元素赋值。

        for(i = 1; i < 30; i++)  //给pay[30]数组各个元素赋值。
        {
                pay[i] = 2 * pay[i-1];         
        }
        
        for(i = 0; i < 30; i++)
        {
                sumpay += pay[i];  //求pay[]数组中个元素之和。

                if(sumpay > money) //当百万富翁付给年轻人的钱大于10万的时候。
                {        
                    printf("从第 %d   天开始赚钱 赚了%.2lf\n", i+1, sumpay-money);
                }
                                else if(sumpay < money)
                                {
                                        printf("从第 %d   天开始没赚钱\n",i+1);

                                }
                                else
                                {
                                        printf("年轻人总共赚了%0.2lf \n", sumpay-money);
                                }
        }

}

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-27 19:22:37 | 显示全部楼层
  1. /*
  2.         2012年11月27日19:30:18
  3.         年轻人与百万富翁的程序
  4. */
  5. # include <stdio.h>

  6. int main (void)
  7. {
  8.         int i;
  9.         double j = 0.01; //存放富翁每天给年轻人的钱数
  10.         double sum1 = 0; //存放年轻人的钱数
  11.         int sum2 = 100000; //存放年轻人刚开始给富翁的钱数

  12.         //计算
  13.         for (i=1; i<31; ++i)
  14.         {
  15.                 sum1 = sum1 + j;                
  16.                 j = j*2;       
  17.                 if( sum1>sum2 )
  18.                 {
  19.                         printf("到了第%d天。\n", i);
  20.                         printf("这时年轻人共有%lf元钱\n\n", sum1);
  21.                        
  22.                 }//if
  23.                
  24.         }//for
  25.         sum1 = sum1 - sum2;
  26.         printf("年轻人共赚了%lf元钱\n", sum1);

  27.         return 0;
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-28 09:12:37 | 显示全部楼层
  我想下载 这个C语言的编辑器  在那下载啊
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 10:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表