题目是对p1,0<p1<=100时不打折,100<p1<=200时便宜5%,以此类推,最后求p1、p2打完折后总付款额。
#include "stdio.h"
int main()
{
float p1,p2,payment,a,b;
printf("请输入机加工制品和手工制品的价格\n");
scanf ("%f%f%",&p1,&p2);
(int)a=(p1-0.001)/100;
switch (a)
{
case 0:p1=p1;break;
case 1:p1=p1*(1-0.05);break;
case 2:p1=p1*(1-0.075);break;
default:p1=p1*(1-0.1);break;
}
(int)b=(p2-0.001)/100;
switch (b)
{
case 0:p2=p2*(1-0.05);break;
case 1:p2=p2*(1-0.075);break;
case 2:p2=p2*(1-0.1);break;
default:p2=p2*(1-0.015);break;
}
payment=p1+p2;
printf("the payment is%.2f\n",payment);
return 0;
}
(int)a=(p1-0.001)/100; 你看看是不是这个地方有问题,改一下:
a= (int)(p1-0.001)/100;
float p1,p2,payment,a,b;
请把前面的声明改成如下
float p1,p2,payment;
int a,b;
scanf后面跟着的%f%f%,你多打了一个百分号
switch(expr),expr只能是整形(或者可以转换成整形的值)或字符串。你改一下a的定义
int a;
a=(int)(p1-0.001)/100;
这样传进去的才是整形。