我正在开发一个模拟银行的程序。当我转到第一个案例' A'而不是只打印OK或ERROR我得到这个奇怪的输出,我无法弄清楚原因。有人可以解释一下吗?
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int ballance;
int status;
char name[10];
}client;
int main()
{
client cli[10];
int n, number,i;
char c;
int money;
for(i=0;i<10;i++){
cli[i].status=0;
}
scanf("%d",&n);
fflush(stdin);
scanf("%c%d",&c,&number);
do{
switch(c){
case 'A':{
if(cli[number-1].status==0){
scanf("%s",&cli[number-1].name);
cli[number-1].status=1;
printf("OK\n");
}else{
printf("ERROR\n");
}
break;
}
case 'B':{
if(cli[number-1].status!=0){
cli[number-1].status=0;
printf("OK\n");
}else{
printf("ERROR\n");
}
break;
}
case 'C':{
if(cli[number-1].status!=0){
printf("%s %d",cli[number-1].name, cli[number-1].ballance);
}else{
printf("ERROR\n");
}
break;
}
case 'D':{
if(cli[number-1].status!=0){
scanf("%d",&money);
cli[number-1].ballance=cli[number-1].ballance+money;
printf("%s %d",cli[number-1].name, cli[number-1].ballance);
}else{
printf("ERROR\n");
}
break;
}
case 'E':{
scanf("%d",&money);
if(cli[number-1].status!=0&&money<=cli[number-1].ballance){
scanf("%d",&money);
cli[number-1].ballance=cli[number-1].ballance+money;
printf("%s %d",cli[number-1].name, cli[number-1].ballance);
}else{
printf("ERROR\n");
}
break;
}
}
n--;
}while(n>=0);
return 0;
}
答案 0 :(得分:1)
我尝试了您的计划,在n = 1
时,该计划会输出OK
和ERROR
。 while
中的陈述应更改为:
}while(n>0);
如果输入n
高于1,则应将scanf
语句移至while
循环:
scanf("%d",&n);
do{
fflush(stdin);
scanf("%c%d",&c,&number);
希望有所帮助。
还有一件事,debugger
永远是你最好的朋友,请花更多时间debug
,它会在大多数时候给你最好的答案。