12【C语言 & 趣味算法】存钱问题(四层for循环,if判断)

简介: 12【C语言 & 趣味算法】存钱问题(四层for循环,if判断)

一、Review



11【C语言&趣味算法】个人所得税问题(结构体应用)︰结构体的声明、定义结构体类型的三种方法等

10 (可回看)【C语言&趣味算法】数制转换(常见,二进制、八进制、十进制、十六进制之间任意转换)

09【C语言&趣味算法】再识:折半查找(二分查找)︰基本思想、程序流程图及完整代码、附:顺序查找

08【C语言&趣味算法】再识:冒泡排序(问题分析、算法设计与分析、程序流程图以及完整代码)

07【C语言&趣味算法】最佳存款方案(采用从后往前递推解决)

06【c语言&趣味算法】牛顿迭代法求方程根(可回看)

05【C语言&趣味算法】经典:兔子产子问题(即:Fibonacci数列)

04【C语言&趣味算法】“抓交通肇事犯"问题。算法改进:设置“标识变量”,有效减少循环次数。

03【C语言&趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

02【C语言&趣味算法】借书方案问题:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

01【C语言&趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。

二、New Problem: The problem of saving money(存钱问题)


二.New Problem: The problem of saving money(存钱问题)



2.1 Description of the problem

1d79f4a7e37e412aa92c501f70c4871d.jpg


2.2Analysis of the problem

b064835c996f45139c5b3f0b1120d025.jpg


2.3 Algorithm design and program flow chart(算法设计及程序流程图)

d1e6bf3e5e4242479cb0d5442b01a49e.jpg


2.4 Full code and output


//趣味12:存钱问题  
#include<stdio.h>
#include<math.h>
int main()
{
  int x1,x2,x3,x5,x8,y1,y2,y3,y5,y8;        /*定义变量*/
  double max=0.0,result;            /*result变量存放最后结果*/
  /*使用for循环穷举所有可能存款方案*/
  for(x8=0;x8<=2;x8++)
    for(x5=0;x5<=(20-8*x8)/5;x5++)
      for(x3=0;x3<=(20-8*x8-5*x5)/3;x3++)
        for(x2=0;x2<=(20-8*x8-5*x5-3*x3)/2;x2++)
        {
          x1=20-8*x8-5*x5-3*x3-2*x2;  /*存款期限限定条件*/
          /*判断条件*/
          result=2000.0*pow((1+0.0063*12),x1)
            *pow((1+2*0.0066*12),x2)
            *pow((1+3*0.0069*12),x3)
            *pow((1+5*0.0075*12),x5)
            *pow((1+8*0.0084*12),x8);
          /*y1,y2,y3,y5,y8用于记录获利最多的存放方式*/
          if(result>max)
          {
            max=result;     /*max变量存放当前的最大值*/
            y1=x1;
            y2=x2;
            y3=x3;
            y5=x5;
            y8=x8;
          }
        }
        /*输出结果*/
        printf("获得利息最多的存款方式为:\n");
        printf("8年期限的存了%d次\n",y8);
        printf("5年期限的存了%d次\n",y5);
        printf("3年期限的存了%d次\n",y3);
        printf("2年期限的存了%d次\n",y2);
        printf("1年期限的存了%d次\n",y1);
        printf("存款人最终的获得的本利合计:%0.2f\n",result);
}


The output:


c486fbe258c243e48f86db22464c1e2b.jpg

相关文章
|
5天前
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
22 4
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
66 5
|
16天前
|
存储 算法 数据管理
C语言算法复杂度
【10月更文挑战第20天】
C语言算法复杂度
|
2月前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
211 88
|
6天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
44 8
|
6天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
31 7
|
23天前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
34 6
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
1月前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法