// 输入起始架号和图书数量,得到图书结束架号
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);
}
}