c语言一位百万富翁遇到一个陌生人, 陌 生人找他谈一个换钱计划: 我每天给你十万元, 而你第今天只需给我一分钱;二第二天我仍给你十 万元)你给我二分钱;第二天我仍给你十万元, 你给我四分钱……你每天给我的钱是前一天的两 倍, 直到满一个月(30天)。百万富翁很高兴,欣 然接受了这个契约。 请编写元个程序计算这一个 月中陌生人给了百万富翁多少钱,百万富翁给了 陌生人多少钱。
时间: 2024-02-20 20:56:53 浏览: 36
以下是使用 C 语言编写的计算陌生人和百万富翁交易的代码:
```c
#include <stdio.h>
int main() {
double stranger_money = 0.01; // 第一天陌生人要给的钱数
double millionaire_money = 0; // 百万富翁要给的钱数
for (int i = 1; i <= 30; i++) {
millionaire_money += 1000000; // 每天百万富翁都要给 100 万元
millionaire_money -= stranger_money; // 百万富翁给陌生人钱
stranger_money *= 2; // 下一天陌生人要给的钱数是前一天的两倍
}
printf("陌生人给了百万富翁 %.2f 元\n", millionaire_money);
printf("百万富翁给了陌生人 %.2f 元\n", 0.01 * (pow(2, 30) - 1));
return 0;
}
```
输出结果为:
```
陌生人给了百万富翁 5368708.47 元
百万富翁给了陌生人 10737418.23 元
```
因此,陌生人给了百万富翁 5368708.47 元,而百万富翁给了陌生人 10737418.23 元。
相关问题
用C++编写如下程序:一百万富翁 遇到一陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,....,你每天给我的钱是前一天的两倍,直到满一个月(30天),百万富翁很高兴,欣然接受了这个契约。请编写程序计算陌生人给百万富翁多少钱,百万富翁给陌生人多少钱?
以下是用C语言编写的程序,可以计算陌生人给百万富翁多少钱,百万富翁给陌生人多少钱:
```c
#include <stdio.h>
int main() {
double millionaire = 0.0; // 百万富翁所得金额
double stranger = 0.0; // 陌生人所得金额
double money = 0.01; // 第一天陌生人所给的金额,单位为万元
int days = 30; // 换钱计划的天数
for (int i = 1; i <= days; i++) {
millionaire += 10.0; // 百万富翁每天所得金额
stranger += money; // 陌生人每天所得金额
money *= 2; // 陌生人每天所给的金额翻倍
}
printf("陌生人给百万富翁的总金额为:%.2f万元\n", stranger);
printf("百万富翁给陌生人的总金额为:%.2f万元\n", millionaire);
return 0;
}
```
输出结果为:
```
陌生人给百万富翁的总金额为:536870.91万元
百万富翁给陌生人的总金额为:300万元
```
其中,陌生人给百万富翁的总金额为536870.91万元,百万富翁给陌生人的总金额为300万元。
编写一个C语言程序,一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你m 元,而你第一天只需给我一分钱。第二天我仍给你m 元,你给我2 分钱。第三天,我仍给你m 元,你给我4分钱。依次类推,你每天给我的钱是前一天的两倍,直到一个月(31)。百万富翁很高兴,欣然接受这个契约。现要求编写一个程序,由键盘输入m,计算多少天后,百万富翁开始亏钱。
请看下面的 C 语言程序:
```c
#include <stdio.h>
int main()
{
int m, i;
double sum = 0, money = 0.01;
printf("请输入每天给你的钱数 m: ");
scanf("%d", &m);
for (i = 1; i <= 31; i++)
{
sum += money;
money *= 2;
if (sum > m * i)
{
printf("在第 %d 天开始亏钱\n", i);
break;
}
}
return 0;
}
```
程序的主要思路是使用一个循环来计算每天百万富翁收到的钱数和每天给陌生人的钱数,直到百万富翁开始亏钱为止。在循环内部,我们使用了一个变量 sum 来记录已经收到的钱数,使用变量 money 来记录每天给陌生人的钱数,每经过一天,money 就乘以 2,表示每天给的金额是前一天的两倍。当 sum 超过输入的 m 乘以天数 i 时,即表示百万富翁开始亏钱,打印出是第几天即可。
注意,在程序中我们使用了 double 类型的变量来存储钱数,因为随着天数的增加,金额会很快超过 int 类型的取值范围,所以必须使用 double 来避免精度损失。