if-else总价格代码将无法编译

时间:2015-01-31 21:13:11

标签: c if-statement

使用三个ram选项中的一个来制作总价格的c代码有什么问题。来自ramchoices = 1or2or3 / 这是我知道我的问题所在,但不知道如何修复它。编译器需要一对一的关系。我如何打破这一点,仍然表明ramchoice取决于我选择的内容,这些选择会影响价格。 /

int main(void) {
/*declare variables*/
float baseprice;
float total;
float ramchoice;
baseprice=1029.48;

/*ramchoice can be 1 or 2 or 3*/

ramchoice=1||ramchoice=2||ramchoice=3;
total=baseprice+ramchoice;

/*initiate variable*/

scanf("%f",&ramchoice);
if("%f" (ramchoice==1))
{
    total=baseprice+179.99;
}
else if("%f" ramchoice==2)
{
    total=baseprice+94.99;
}
else if("%f" ramchoice==3)
{
    total=baseprice+69.99;
}

printf("total is %f",total);

return 0;
}

3 个答案:

答案 0 :(得分:2)

有几行不同于我以前见过的任何C代码 你是在完全掌握自己的语法和意义吗? 您是否阅读过关于C的任何说明/教程?

ramchoice=1||ramchoice=2||ramchoice=3;

无论你认为这一行是什么,它都会将变量ramchoice设置为值1,然后停止。


if("%f" (ramchoice==1))

if不会使用"%f"之类的字符串。 if需要一个布尔表达式 您接近使用ramchoice==1的布尔值,但开头的"%f"非常错误。

<小时/> 说真的,你不能用一种语言来制定规则并祈祷它有效。

这是我的重写,几乎解决了你的问题:

int main(void)
{
    /*declare variables*/
    float baseprice = 1029.48;
    float total;
    int   ramchoice;

    printf("Please enter a ram selection: 1, 2, or 3\n");
    scanf("%d",&ramchoice);
    switch(ramchoice)
    {
        case 1:   total=baseprice+179.99; break;
        case 2:   total=baseprice+94.99;  break;
        case 3:   total=baseprice+69.99;  break;
        default:  printf("That was not a valid choice\n");
    }

    printf("total is %f",total);
    return 0;
}

答案 1 :(得分:0)

你的代码中的某些东西没有任何意义(在C中不正确):

  • ramchoice = 1 || ramchoice = 2 || ramchoice = 3;总= baseprice + ramchoice;
  • &#34;%F&#34; (ramchoice == 1)

首先我不明白你使用它的原因。 第二个让我觉得你不理解scanf是如何工作的。

此外,您将ramchoice声明为浮动,但您将其与另一个值(1,2或3)进行比较。由于浮点值的表示,这可能不起作用。我的意思是,如果你有浮动x = 1;然后执行x == 1,它可能返回false。要解决此问题,您只需将其更改为int(在这种情况下,在其他情况下,您可以使用错误边距)。 这是您的代码的修复:

int main(void) {
/*declare variables*/
float baseprice;
float total;
int ramchoice; 
baseprice=1029.48;

/*initiate variable*/

scanf("%i",&ramchoice);
if(ramchoice==1)
{
    total=baseprice+179.99;
}
else if(ramchoice==2)
{
    total=baseprice+94.99;
}
else if(ramchoice==3)
{
    total=baseprice+69.99;
}

printf("total is %f",total);

return 0;
}

答案 2 :(得分:0)

  1. 摆脱if语句中的“%f”
  2. 评论这两行:
  3. ramchoice=1||ramchoice=2||ramchoice=3;
    total=baseprice+ramchoice;
    

    并且代码应该编译。