有关个税计算器的说明 添加链接描述
代码如下
#include<stdio.h>
#include<string.h>
int ynsds(){
int money;
printf("请输入钱\n");//需要计算的每月工资
scanf("%d",&money);
int i=0;
char c;
if(money>=5000){
money=money-5000;//每月工资减去免征额
}
printf("需要养房?(y/n)\n");
scanf("%s",&c);
if(c=='y'){
money=money-1000;
}
printf("需要养娃?(y/n)\n");
scanf("%s",&c);
if(c=='y'){
money=money-1000;
}
printf("需要养爸妈?\n");
scanf("%s",&c);
if(c=='y'){
money=money-2000;
}
if(money<0){
printf("不需要缴纳个税\n");
return -1;
}
return money;
}
double taxs(int money ,int i){//将计算后的每月剩下的工资和月份传入
float tax;
if(i*money<=36000){
tax=0.03;
}else if(i*money>36000&&i*money<=144000){
tax=0.1;
}else if(i*money>144000&&i*money<=300000){
tax=0.2;
}else if(i*money>300000&&i*money<=420000){
tax=0.25;
}else if(i*money>420000&&i*money<=660000){
tax=0.3;
}else if(i*money>660000&&i*money<=960000){
tax=0.35;
}else if(i*money>960000){
tax=0.45;
}
return tax;
}
int yukou(int money,int i){//将计算后的每月剩下的工资和月份传入
int shu;
if(i*money<=36000){
shu=0;
}else if(i*money>36000&&i*money<=144000){
shu=2520;
}else if(i*money>144000&&i*money<=300000){
shu=16920;
}else if(i*money>300000&&i*money<=420000){
shu=31920;
}else if(i*money>420000&&i*money<=660000){
shu=52920;
}else if(i*money>660000&&i*money<=960000){
shu=85920;
}else if(i*money>960000){
shu=181920;
}
return shu;
}
void main(){
int aaa=ynsds(),temp=0,i,mo;
int money=aaa;
printf("%d\n",money);
for(i=1;i<=12;i++){
mo=money*i*taxs(aaa,i)-yukou(aaa,i)-temp;
temp=temp+mo;
}
printf("需要缴税%d\n",temp);
}
在这个程序里面呢,需要注意以下的一行代码
double taxs(int money ,int i)
代码的返回值是tax,其是浮点型的返回值,必须要将返回值类型改为浮点类型
请注意一点,在输入单个字符时,最好使用%s,不要使用%c,因为%c是输入单个字符,在你输入单个字符后,需输入空白符,这时空白符留在内存中,当下一个scanf出现,内存直接把空白符传递给scanf,会出现不经键盘输入就进行下一个输入的情况
把scanf改为gets也是可以的,但是如果改为gets,就必须此函数体内都是gets,最好统一输入方式
代码如下
int i=0;
char c[3];
if(money>=5000){
money=money-5000;
}
printf("需要养房?(y/n)\n");
gets(c);
if(strcmp(c,"y")==0){
money=money-1000;
}
printf("需要养娃?(y/n)\n");
gets(c);
if(strcmp(c,"y")==0){
money=money-1000;
}
printf("需要养爸妈?\n");
gets(c);
if(strcmp(c,"y")==0){
money=money-2000;
}
if(money<0){
printf("不需要缴纳个税\n");
return -1;
}