为什么,我的程序打印" OK"两次或" OK"其次是" ERROR"

时间:2014-03-16 03:47:45

标签: c

我正在开发一个模拟银行的程序。当我转到第一个案例' 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;
}

1 个答案:

答案 0 :(得分:1)

我尝试了您的计划,在n = 1时,该计划会输出OKERRORwhile中的陈述应更改为:

}while(n>0);

如果输入n高于1,则应将scanf语句移至while循环:

scanf("%d",&n);
do{
fflush(stdin);
scanf("%c%d",&c,&number);

希望有所帮助。

还有一件事,debugger永远是你最好的朋友,请花更多时间debug,它会在大多数时候给你最好的答案。