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

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

一、Review



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: Personal income tax issues(个人所得税问题)



2.1 Description of the problem

7ef01343652e4db18e30cbcfd8334a41.jpg


2.2Analysis of the problem


2.2.1声明(定义)结构体

96997b6569354959a4d07a8a509a52fc.jpg


2.2.2定义结构体类型的变量:3种方法

6632f920134e485dbd9a7786795fdd04.jpg


2.2.3结构体变量的引用、结构体数组的定义与初始化

8120b74652604851af333b783c17829f.jpg


2.2.4使用typedef来定义类型

36106791876243ea9b32e4909af96615.jpg


2.3 Algorithm design


ae696294edd54692858f197051633975.jpg


2.4 Defining the framework of the process(确定程序框架)

a8516b6438984bdbba28f8bc57af69ad.jpg6d8963fc86b44fa6b1920e62a626d8f2.jpg


2.5 Full code and output


//趣味11:个人所得税问题  
#include <stdio.h>
#define TAXBASE  2000
/*定义结构体*/
typedef struct{ 
  long start; 
  long end; 
  double taxrate;
}TAXTABLE;
TAXTABLE TaxTable[]={{0,1500,0.03},{1500,4500,0.10},{4500,9000,0.20},{9000,35000,0.25},
  {35000,55000,0.30},{55000,80000,0.35},{80000,1e10,0.45}};
double CaculateTax(long profit)
{ 
  int i;  
  double tax=0.0; 
  profit-=TAXBASE;  
  for(i=0;i<sizeof(TaxTable)/sizeof(TAXTABLE); i++) 
  {   
    if(profit>TaxTable[i].start)    
    {     
      if(profit>TaxTable[i].end)      
      {       
        tax+=(TaxTable[i].end-TaxTable[i].start)*TaxTable[i].taxrate;
      }     
      else      
      {       
        tax+=(profit-TaxTable[i].start)*TaxTable[i].taxrate;
      }     
      profit-=TaxTable[i].end;      
    //  printf("start%d:%6ld end%d:%6ld  Tax:%12.2f Leave:%6ld\n",i,TaxTable[i].start,i,TaxTable[i].end,tax,(profit)>0 ? profit:0);
      printf("征税范围:%6ld~%6ld  该范围内缴税金额:%6.2f  超出该范围的金额:%6ld\n",
        TaxTable[i].start,TaxTable[i].end,tax,(profit)>0 ? profit:0);
    } 
} 
  return tax;
}
int main()
{ 
  long profit;  
  double tax; 
  printf("请输入个人收入金额:"); 
  scanf("%ld",&profit); 
  tax = CaculateTax(profit);  
  printf("您的个人所得税为: %12.2f\n",tax);
}

在Dev-C++运行上述程序后:可能会报警告如下,

2d43663c7ed94042b5d774bebb10e631.jpg

翻译一下,其意思是:

简单来讲,这个错误即:常量转换溢出。C语言中char,int,float,double,unsigned char,

unsigned int 等数值有极限范围,当它们之间(隐式)转换时,可能因数值极限而超界溢出。有的编译器会报告这—类型的错误,并不是所有编译器都会报告。


8a8af12b5c5c429eb3ac7e32439d48f1.jpg


这里应该是无伤大雅的叭!

来看几个测试:

9b2540b48475418abb468acc3d72aa94.jpg2e82670c111c47929ad5cc84e740785e.jpg5711944bc43443fb9c48f1df3c5e3cb8.jpgfcfddfcf19714ccd8b68963f97cc4395.jpg


2.6 Question expansion:使用指针指向结构体变量和结构体数组

cbcb841407f647d18160468093e855fb.jpg5615226a8ad7497f935b961b979c8490.jpg

相关文章
|
3天前
|
Java Unix Linux
1.3 C语言的应用范围
C语言自20世纪80年代以来一直是主流编程语言,适用于小型计算机、个人电脑及大型机。因其高效紧凑且易于修改和移植,广泛用于软件开发。尽管后来C++和JAVA流行起来,但C语言仍然是软件行业核心,并在嵌入式系统、科学编程和操作系统开发如Linux中扮演重要角色。即使到现在,掌握C语言仍是一项重要技能。不是必须得是计算机专家才能使用C语言,学习C语言同时也能学到很多C++的知识。
26 8
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的优化算法及其应用
本文旨在探讨深度学习中常用的优化算法,包括梯度下降、动量方法、AdaGrad、RMSProp和Adam等。通过分析每种算法的原理、优缺点及适用场景,揭示它们在训练深度神经网络过程中的关键作用。同时,结合具体实例展示这些优化算法在实际应用中的效果,为读者提供选择合适优化算法的参考依据。
|
8天前
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
14天前
|
算法 调度
贪心算法基本概念与应用场景
尽管贪心算法在许多问题中都非常有效,但它并不总是会产生最优解。因此,在应用贪心算法前,重要的是先分析问题是否适合采用贪心策略。一些问题可能需要通过动态规划或回溯等其他算法来解决,以找到确切的全局最优解。
47 1
WK
|
17天前
|
机器学习/深度学习 算法 数据挖掘
PSO算法的应用场景有哪些
粒子群优化算法(PSO)因其实现简单、高效灵活,在众多领域广泛应用。其主要场景包括:神经网络训练、工程设计、电力系统经济调度与配电网络重构、数据挖掘中的聚类与分类、控制工程中的参数整定、机器人路径规划、图像处理、生物信息学及物流配送和交通管理等。PSO能处理复杂优化问题,快速找到全局最优解或近似解,展现出强大的应用潜力。
WK
20 1
|
26天前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
|
26天前
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
|
26天前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
8天前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
1月前
|
存储 安全 C语言
C语言 二级指针应用场景
本文介绍了二级指针在 C 语言中的应用,
下一篇
无影云桌面