在C:2 printf输出时,我想要的只是一个。

时间:2015-11-13 23:58:44

标签: c

该程序应该通过询问原始金额然后询问他们想要什么类型的交易来平衡帐户。当我想要的只是一个时,printf调用被调用两次。输出:“输入交易:输入交易:”。否则工作正常。代码:

#include <stdio.h>

int main(void)
{
    float amount, old, new;
    char letter;

    printf("Please enter your current balance: ");
    scanf("%f", &old);

    printf("Enter the kind  of transaction you would like: W - withdrawl, D - deposit, F - finished. \n");
    scanf("%c", &letter);

    while (letter != 'F'){

        if (letter == 'D'){
            printf("Amount: ");
            scanf("%f", &amount);
            new = old + amount;
            old = new;
        }

        if (letter == 'W'){
            printf("Amount: ");
            scanf("%f", &amount);
            new = old - amount;
            old = new;
        }

    printf("Enter transaction: ");
    scanf("%c", &letter);
    }

    if (letter == 'F')
        printf("Your ending balance is %f.\n", old);

    return 0;

}

非常感谢任何见解!谢谢!!

2 个答案:

答案 0 :(得分:2)

scanf(" %c", &letter);代替scanf("%c", &letter);

原始(没有空格)会将Enter解释为输入。

答案 1 :(得分:1)

您也可以通过清除stdin输入缓冲区中的输入(上一次按Enter键)来解决问题。添加此行

fflush(stdin);

scanf("%c", &letter);

但是,建议使用@artm提供的解决方案,根据平台,我的解决方案可能不起作用。