编辑代码

// 输入起始架号和图书数量,得到图书结束架号

#include <stdio.h>

int change_Bj(char m, int j);

int main()
{
    // p 排号,取值1~26,一排2000
    // m 面号,取值1,0,一面1000
    // j 架号,取值1~5,一架200
    int start_p, end_p;
    int start_m, end_m;
    int start_j, start_j2, end_j;
    int book_num, book_margin;
    char startM, endM;

    // 输入起始架及图书数量
    printf("请依次输入起始排号、面号、架号(空格隔开,如:1 a 1):");
    scanf("%d %s %d", &start_p, &startM, &start_j);
    printf("请输入图书册数:");
    scanf("%d", &book_num);
    // // 定义起始架及图书数量
    // start_p=20, startM='A',start_j=1;
    // book_num=14000;


    if((startM == 'A') || (startM == 'a')){
        start_m = 1;
        startM = 'A';
    }
    else{
        start_m =0;
        startM = 'B';
    }
    
    // printf("断点测试1");

    start_j2 = start_j;
    start_j = change_Bj(startM, start_j);

    end_j = (start_j + (int)(book_num/200))%5; //架参数:200, 5
    if(end_j == 0){
        end_j = 5;
    }

    // printf("断点测试2:%d", end_j);

    end_m = (start_m + (int)((book_num+(start_j-1)*200)/1000))%2;
    if(end_m == 0){
        endM = 'B';
    }
    else{
        endM = 'A';
    }  

    // printf("断点测试3:%d", end_m);

    if(start_m == 0){
        end_p = (start_p + (int)((book_num+(start_j-1)*200+1000)/2000))%26;
    }
    else{
        end_p = (start_p + (int)((book_num+(start_j-1)*200)/2000))%26;
    }
    if(end_p == 0){
        end_p = 26;
    }

    // printf("断点测试4:%d", end_p);

    end_j = change_Bj(endM, end_j);
    book_margin = 200-book_num%200;

    printf("\n图书数量为:%d", book_num);
    printf("\n架号分配为:%d排%c面%d架-%d排%c面%d架", start_p, startM, start_j2, end_p, endM, end_j);
    printf("\n尾架剩余图书量为:%d", book_margin);


    return 0;

}

int change_Bj(char m, int j)
{
    if(m == 'B')
    {
        j = 6-j;
    }
    return(j);
}


}