我试着在do-while循环中计算tot(总费用),但我得到的总数是0.00?为什么会这样?之后我得到一条消息:它说可变费用没有被初始化?
#include<stdio.h>
int main(void)
{
int cofno;
float tot=0.0;
float fee;
char option;
do{
printf("Enter cofno: ");
scanf("%d",&cofno);
if(cofno>0)
{
printf("Key in (h/c): ");
scanf("%c",&option);
getchar();
switch(option)
{case 'h':fee=cofno*1.80;
break;
case 'c': fee=cofno*2.50;
break;
}
tot=tot+fee;
//the program will repeat until the user key in negative value or zero
}
}while(cofno>0);
printf("\ntot=RM%.2f \n\n",tot);
return 0;
}
答案 0 :(得分:1)
scanf(" %c",&option);
这将为您解决问题。 ' '
中提供scanf
的原因是它可以使用空格字符。
之前发生的事情是您的角色输入从之前的输入获得了\n
。
要检查输入的内容\n
,请尝试输出这样的选项
printf("[%c]",option);
你会看到输出
[
]
此外,您提供的break
声明正在破坏案件情况。不是while循环。你现在有无限循环。您可以通过附加条件解决此问题。
...
tot=tot+fee;
if(option == 'c' || option =='h')
break;
...
更简单地说,您可以整体更改while
条件并使其像这样
while(cofno<=0);
这符合您的想法程序将重复,直到用户键为负值或零更合适。