这个程序有什么问题吗?运行结果始终为1
#include<stdio.h>intmain(){intI,a,M;printf("profitis:");scanf("%d",&I);if(I<=1000000)...
#include<stdio.h>
int main()
{
int I,a,M;
printf("profit is:");
scanf("%d",&I);
if(I<=1000000)
a=I/100000;
else
a=10;
switch(a)
{
case'0':M=0.1*I;break;
case'1':M=10000+(I-10000)*0.075;break;
case'2':
case'3':M=10000+7500+(I-200000)*0.05;break;
case'4':
case'5':M=10000+7500+10000+(I-400000)*0.03;break;
case'6':
case'7':
case'8':
case'9':M=10000+7500+10000+6000+(I-600000)*0.015;break;
case'10':M=10000+7500+10000+6000+60000+(I-1000000)*0.01;break;
}
printf("income is:%d",M);
return 0;
} 展开
int main()
{
int I,a,M;
printf("profit is:");
scanf("%d",&I);
if(I<=1000000)
a=I/100000;
else
a=10;
switch(a)
{
case'0':M=0.1*I;break;
case'1':M=10000+(I-10000)*0.075;break;
case'2':
case'3':M=10000+7500+(I-200000)*0.05;break;
case'4':
case'5':M=10000+7500+10000+(I-400000)*0.03;break;
case'6':
case'7':
case'8':
case'9':M=10000+7500+10000+6000+(I-600000)*0.015;break;
case'10':M=10000+7500+10000+6000+60000+(I-1000000)*0.01;break;
}
printf("income is:%d",M);
return 0;
} 展开
1个回答
展开全部
(1)I为int型,取值范围-32767到32768;
(2)“scanf("%d",&I)”,执行后,I取值范围同上;
(3)因而“if(I<=1000000)”的判断一定为真,一定会执行“a=I/100000;”因为a同样为int,故a的值一定为0;
(4)switch-case语句中各向分别为30、31、32……(对应0、1、2、3……的ASCII码),因而一定没有与a值相等的项,故不会对M赋值;
(5)因而,M在定义时没有初始化,程序中也未对M赋值,故将M输出时,显示值是随机的,也就是M在内存上的数值,有可能是其他程序被分配在此处时遗留的数值
(2)“scanf("%d",&I)”,执行后,I取值范围同上;
(3)因而“if(I<=1000000)”的判断一定为真,一定会执行“a=I/100000;”因为a同样为int,故a的值一定为0;
(4)switch-case语句中各向分别为30、31、32……(对应0、1、2、3……的ASCII码),因而一定没有与a值相等的项,故不会对M赋值;
(5)因而,M在定义时没有初始化,程序中也未对M赋值,故将M输出时,显示值是随机的,也就是M在内存上的数值,有可能是其他程序被分配在此处时遗留的数值
更多追问追答
追问
应该怎么改?
追答
不知道你要做什么呀
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询