·一、實驗目的
實驗目的:練習陣列和函式的綜合應用
·二、實驗原理
依法納稅是每個公民應盡的義務,2011年9月1日起調整后,個人所得稅起征點調至3500元, 個人所得稅計算器的需求相對比較簡單:輸入一個員工的工資,根據個人所得稅稅率表(下圖所示),計算出該員工應繳的個人所得稅,

圖1 2011年個人所得稅率表
方法提示:
(1)第一種方法:按照定義直接計算
比如在微軟作業的軟體工程師張愛虎的工資是每月20000元,20000-3500=16500,屬于第4個級別;他需要交的稅款(16500-9000)*0.25+(9000-4500)*0.2 +(4500-1500)*0.1+(1500-0)*0.03=3120元,
若工資低于3500,則所交稅款為0元,可預定義好個人所得稅的稅率級別及級數中的金額值與稅率:
#define N 7
float rank[N][2]={{0,0.03},{1500,0.1},{4500,0.2},{9000,0.25},{35000,0.3},{55000,0.35},{80000,0.45}};
(2)第二種方法:采用速算扣除法
速算扣除數是指為解決超額累進稅率分級計算稅額的復雜技術問題,而預先計算出的一個資料,超額累進稅率的計稅特點,是把全部應稅金額分成若干等級部分,每個等級部分分別按相應的稅率計征,稅額計算比較復雜,簡便的計算方法是先將全部應稅金額按其適用 的最高稅率計稅,然后再減去速算扣除數,其余額就為按超額累進稅率計算的稅額,速算扣除數是按全額累進稅率計算的稅額和按超額累進稅率計算的稅額相減后的一個引數, 個人所得稅是采用速算扣除數法計算超額累進稅率的所得稅時的計稅公式是:
應納稅額=應納稅所得額×適用稅率-速算扣除數
速算扣除數的計算公式是:2在
本級速算扣除額=上一級最高應納稅所得額×(本級稅率-上一級稅率)+上一級速算扣除數

圖2 速算扣除法表
① 用上述公式計算:
1500×(10%-3%)+0=105
② 用直接計演算法計算
全額累進稅率的應納稅額=2000×10%=200
超額累進稅率的應納稅額=(1500×3%)+(500×10%)=95
速算扣除數=200-95=105
·三、主要資料結構和演算法
1、演算法分析

·四、實驗結果及分析
1、測驗結果截圖
(1)第一組測驗資料及結果截圖

(2)第二組測驗資料及結果截圖
(3)第三組測驗資料及結果截圖

·五、心得體會
不用if ,else解決問題,利用陣列存盤資料,算出每個階段的稅金,弄清每個陣列所對應的稅金.
通過回圈計算前幾階段的總稅金及本階段的稅金并輸出,
六、源檔案
#include <stdio.h> #define N 7 float qiushui(float a); int main() { float salary,x,y; printf("輸入工資:") ; scanf("%f",&salary); //輸入工資 x=salary-3500; //需要交稅的錢數為x if(salary<=3500) //若錢數不超過3500,則不需要交稅 printf("工資:%.0f 納稅工資:0 稅金:0",salary) ; //輸出工資,納稅工資,稅金 else { y=qiushui(x); printf("工資:%.0f 納稅工資:%.0f 稅金:%.0f",salary,x,y) ; //輸出工資,納稅工資,稅金 } return 0; } /*********************************************** float qiushui(float a) 功能:用于計算個人所得稅 變數:i,j用于回圈變數 回傳值 float型別 意義:個人所得稅的值 ***********************************************/ float qiushui(float a) { int i,j,k; float m,sum=0; float rank[N][2]={{0,0.03},{1500,0.1},{4500,0.2},{9000,0.25},{35000,0.3},{55000,0.35},{80000,0.45}};//預定義好個人所得稅的稅率級別及級數中的金額值與稅率 float r[N]; //用于存放每個級別應交稅的值 for(i=0;i<6;i++) //為rank1[N]賦值 { r[i]=(rank[i+1][0]-rank[i][0])*rank[i][1]; } r[6]=(a-80000)*0.45; for(i=0;i<7;i++) //計算個人所得稅應該在哪一階級 { if(a>rank[i][0]) continue; else k=(i-1);break; } for(j=0;j<k;j++) //a所占有稅率階級應交的總數 { sum=sum+r[j]; } m=sum+(a-rank[k][0]) *rank[k][1]; //應交個人所得稅總數 return m; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285692.html
標籤:其他
上一篇:檢驗“哥德巴赫”猜想
下一篇:輸出鞍點
