该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上面代码有误,本来switch语句是接收int型的,有死循环;有人建议改成接收字符,上面没改完全,现在改完全了,但是会重复输出,输出如下
*** ACME checkbook-balancing program ***
Commands: a=clear, b=credit, c=debit, d=balance, e=exit
Enter command: b
Enter amount of credit: 10000
Enter command: Commands: a=clear, b=credit, c=debit, d=balance, e=exit
Enter command: d
Current balance: $10000.00
Enter command: Commands: a=clear, b=credit, c=debit, d=balance, e=exit
Enter command: 0
Commands: a=clear, b=credit, c=debit, d=balance, e=exit
Enter command: Commands: a=clear, b=credit, c=debit, d=balance, e=exit
Enter command:
代码如下:
/* Balances a checkbook */
#include
int main(void)
{
char cmd;
float balance = 0.0f, credit, debit;
printf("*** ACME checkbook-balancing program ***\n");
printf("Commands: a=clear, b=credit, c=debit, ");
printf("d=balance, e=exit\n\n");
for (;;) {
printf("Enter command: ");
cmd = getchar();
switch (cmd) {
case 'a':
balance = 0.0f;
break;
case 'b':
printf("Enter amount of credit: ");
scanf("%f", &credit);
balance += credit;
break;
case 'c':
printf("Enter amount of debit: ");
scanf("%f", &debit);
balance -= debit;
break;
case 'd':
printf("Current balance: $%.2Lf\n",balance);
break;
case 'e':
return 0;
default:
printf("Commands: a=clear, b=credit, c=debit, ");
printf("d=balance, e=exit\n\n");
break;
}
}
}