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

相关文章
|
1月前
|
C语言
C语言中条件操作符的应用
最后,条件操作符是个超级英雄,但不是每个代码问题都需要一个超级英雄来解决。一定要在适当的时候适度的使用它,那么它将成为你的编程工具箱中的一件强力工具。
233 75
|
6月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
207 1
|
5月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
409 14
|
5月前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
311 10
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
5月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
6月前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
155 6
|
6月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
6月前
|
存储 缓存 算法
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
150 2
|
6月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
132 1

热门文章

最新文章