使用DO-WHILE循环时获得零回答

时间:2017-12-10 16:44:14

标签: c do-while

我试着在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;

}

1 个答案:

答案 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);

这符合您的想法程序将重复,直到用户键为负值或零更合适。