一个C语言编程题的修改

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:54:57
题目大概是一级苹果5.5,二级4.2,三级3.0,四级2.5,输入苹果的等级,数量以及顾客的付款数,显示出等级,数量应付款项,和找给顾客的钱数。
要用SWITCH语句实现,当等级或者顾客的付款数不合要求时,通知用户“DATA ERROR”,程序结束。

我写的如下
main()
{
int x;
float y,z,m,n;
printf("Which one do you like?");
scanf("%d",&x);
printf("How many do you want?");
scanf("%f",&y);
switch(x)
{
case 1:z=5.5*y;break;
case 2:z=4.2*y;break;
case 3:z=3.0*y;break;
case 4:z=2.5*y;break;
default:printf("Date Error");
}
printf("The total is %f:",z);
scanf("%f",&m);
switch(m)
{
case m>=z:n=m-z;break;
case m<z:printf("Date Error");
}
printf("The change is %f:",n);
}

但是TC显示说有问题
问题就出在后一个关于付钱多少的switch语句中的m>=z和m<z中的z上,
请问各位大侠,这该怎么修改啊?

谢谢了啊

第二个switch错了
应该可以这样改
switch(m>=z)
{
case 1: n = m - z ; break ;
case 0; printf("Date Error"); break;
}
其余的就一样了

第二次不应该用SWITCH,如果一定要用,可以这样改
main()
{
int x;
float y,z,m,n;
printf("Which one do you like?");
scanf("%d",&x);
printf("How many do you want?");
scanf("%f",&y);
switch(x)
{
case 1:z=5.5*y;break;
case 2:z=4.2*y;break;
case 3:z=3.0*y;break;
case 4:z=2.5*y;break;
default:printf("Date Error");
}
printf("The total is %f:",z);
scanf("%f",&m);
n=m-z;
if n<0 then n=-1;
switch(m)
{
case -1:printf("Date Error");break;
default: printf("The change is %f:",n);
}

}

实际上可以不用第二个switch。用
if(m>=z)
printf("%d",m-z);
else printf("error"