使用三个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;
}
答案 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中不正确):
首先我不明白你使用它的原因。 第二个让我觉得你不理解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)
ramchoice=1||ramchoice=2||ramchoice=3; total=baseprice+ramchoice;
并且代码应该编译。