这个程序有什么问题吗?运行结果始终为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;
}
展开
 我来答
百度网友805bbf2
推荐于2016-03-18 · 超过25用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:31.2万
展开全部
(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在内存上的数值,有可能是其他程序被分配在此处时遗留的数值
更多追问追答
追问
应该怎么改?
追答
不知道你要做什么呀
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式