帮忙编写个C语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 17:58:54
:税收问题。假设某国家收税是分段计费,标准如下:在1万元以上部分收税20%;5000-10000元部分收税10%;1000-5000元部分收税5%;1000元以下部分免税。根据输入的金额计算应缴纳的税金。
#include<stdio.h>
void main()
{
int a,b,c;
printf("\nplease enter the income:");
scanf("%d",&a);
b=a/10000*10000;
c=(a-a/10000*10000)/1000*1000+a%1000;
if(c>=5000)
printf("THE tax is :%4.2f\n",b*0.2+c*0.1);
else
printf("THE tax is :%4.2f\n",b*0.2+c*0.05);
}
当程序输入的数子过大时,会得到负数.怎么修改.谢谢!

在C语言中int占用两个字节共16位二进制,数值范围-32768~32767
(当然如果你用VC++调试int型占用4个字节共32位二进制,数值范围从-2147483648~2147483647)
C语言中long int 型占用4个字节共32位二进制,数值范围从-2147483648~2147483647,所以你可以把数据类型改成长整型。
但是无论你用什么类型的数据,都是有一个范围的,所以最好根据你使用的数据类型对输入数合理性进行判断。
下面是的程序已经调试过了
还有你的程序调试结果是不正确,做了些改动如下:
#include<stdio.h>
main()
{
long int a,b,c,d;
while(1)
{
printf("\nplease enter the income:");
scanf("%ld",&a);
if(a<0||a>2000000000)
printf("invalid income!");
else
break;
}
if(a>10000)
{
b=a-10000;
c=5000;
d=4000;
}
else if(a>5000&&a<=10000)
{
b=0;
c=a-5000;
d=4000;
}
else if(a<=5000&&a>1000)
{
b=0;
c=0;
d=a-1000;
}
else
{
b=0;
c=0;
d=0;
}

printf("THE tax is :%4.2f&#