switch语句关于打折的问题

#include <stdio.h>
void main ()
{ int x;
double y,z;
scanf("%d",&x);
x=x/100;
switch(x)
{ case 0 :
case 1 :
case 2 :y=0;break;
case 4 :y=.1;break;
case 5 :
case 3 :
case 6 :
case 7 :
case 8 :
case 9 :y=.2;break;
default:y=.3;}
z=x*(1-y)*100;
printf("折扣率:%.1f\n实付款:%.1f\n",1-y,z);
}
这个程序有一个问题:在计算Z的值是,X用的是取整后的结果。这样就错了,要怎么破。。。。

计算z的时候使用取整后的x不对那么就重新算一个不取整的x就好,有什么困难的?

#include <stdio.h>
void main ()
{ int x;
double y,z,x1;                         //1
scanf("%d",&x);
x1=((double)x)/100;               //2
x=x/100;
switch(x)
{ case 0 :
case 1 :
case 2 :y=0;break;
case 4 :y=.1;break;
case 5 :
case 3 :
case 6 :
case 7 :
case 8 :
case 9 :y=.2;break;
default:y=.3;}
z=x1*(1-y)*100;                        //3
printf("折扣率:%.1f\n实付款:%.1f\n",1-y,z);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-11
定义x为double类型啊...swicth(parseInt(x)) swicth时转int判断呗追问

初学,x1=((double)x)/100; 这个转换老师还没讲

追答

x1就是double类型的...和x是一个...只不过x是int...没有浮点..所以你要弄个double的.

相似回答