字符串输入处理

来源:互联网 发布:c语言100以内的素数 编辑:程序博客网 时间:2024/05/16 07:11
 //poj  2996+---+---+---+---+---+---+---+---+ | .r.|:::|.b.|:q:|.k.|:::|.n.|:r:|+---+---+---+---+---+---+---+---+|:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.|+---+---+---+---+---+---+---+---+|...|:::|.n.|:::|...|:::|...|:p:|+---+---+---+---+---+---+---+---+|:::|...|:::|...|:::|...|:::|...|+---+---+---+---+---+---+---+---+|...|:::|...|:::|.P.|:::|...|:::|+---+---+---+---+---+---+---+---+|:P:|...|:::|...|:::|...|:::|...|+---+---+---+---+---+---+---+---+|.P.|:::|.P.|:P:|...|:P:|.P.|:P:|+---+---+---+---+---+---+---+---+|:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.|+---+---+---+---+---+---+---+---+注意输入处理:#include<stdio.h>#define WHITE 1#define BLACK 0const int MAX = 10 ;char map[MAX][MAX] ;char dic[] = "KQRBNP";    //输出棋子类型的顺序void print(int mod ,char c ,int &first)   //输出棋子类c的所有棋子位置。mod:黑方还是白方{    char tmp = c ;    if(mod==BLACK)        c += 32 ;    if(mod == BLACK)    {        for(int i = 1;  i<=8 ; i++)  //对于序号大小的处理        {            for(int j = 1; j <=8  ; j++)            {                if(map[i][j]==c)                {                    if(first)                        first = 0 ;                    else                        printf(",") ;                    if(c!='P' && c!= 'p')                        printf("%c",tmp) ;                    printf("%c%d" , 'a'+j-1 ,9-i) ;                }            }        }    }    else    {        for(int i = 8;  i>=1 ; i--)        {            for(int j = 1; j <=8  ; j++)            {                if(map[i][j]==c)                {                    if(first)                        first = 0 ;                    else                        printf(",") ;                    if(c!='P' && c!= 'p')                        printf("%c",tmp) ;                    printf("%c%d" , 'a'+j-1 ,9-i) ;                }            }        }    }}void get_bord()   //读取无用的边缘字符{    scanf("+---+---+---+---+---+---+---+---+") ;    getchar() ; //消除换行符。}char get_elem()    //一格一格读取数据块,并把棋格中的内容取出。{    char a ,b, c ;    scanf("|%c%c%c" ,&a ,&b ,&c) ;    return b ;}void result(int mod)   //输出最终结果。{    if(mod==WHITE)        printf("White: ") ;    else        printf("Black: ") ;    int first = 1 ;    for(int i = 0; i<6 ; i++)    {        print(mod , dic[i] , first) ;    }    printf("\n") ;}int main(){    for(int i = 1 ; i <= 8 ; i++)    {        get_bord() ;        for(int j = 1; j <= 8 ; j++)        {            map[i][j] = get_elem() ;        }        getchar() ;        getchar() ;    }    get_bord() ;    result(WHITE) ;    result(BLACK) ;}
0 0