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

相关文章
|
25天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
77 4
|
16天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
86 14
|
23天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
22天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
22天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
52 1
|
23天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
40 2
|
23天前
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
20 1
|
29天前
|
机器学习/深度学习 监控 算法
基于反光衣和检测算法的应用探索
本文探讨了利用机器学习和计算机视觉技术进行反光衣检测的方法,涵盖图像预处理、目标检测与分类、特征提取等关键技术。通过YOLOv5等模型的训练与优化,展示了实现高效反光衣识别的完整流程,旨在提升智能检测系统的性能,应用于交通安全、工地监控等领域。
|
1月前
|
存储 算法 网络协议
OSPF的SPF算法介绍:原理、实现与应用
OSPF的SPF算法介绍:原理、实现与应用
78 3
|
23天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用
下一篇
DataWorks