給出要打印的頁數n;打印時1張紙分4頁,一摞紙從中間訂成書後的頁碼要正確;頁數n不能填滿書的話,多餘的頁數要填NA。
解決(代碼不考慮輸入過濾、溢出等問題):
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char* argv[]){
int n;
char* arn;
if(argc==2){
n=strtol(argv[1],NULL,0);
printf("%d\n",n);
}else
scanf("%d",&n);
int pages=0;
int noreminder=0;
if(n<1)
return;
if(n%4){
noreminder=0;
pages=n/4+1;
}
int reminder=n%4;
switch(reminder){
case 0:
noreminder=1;
pages=n/4;
printf("sheet 1 front %d, 1\n",n);
printf("sheet 1 back 2, %d\n",n-1);
if(n>4){
printf("sheet 2 front %d, 3\n",n-2);
printf("sheet 2 back 4, %d\n",n-3);
}
break;
case 3:
printf("sheet 1 front NA, 1\n");
printf("sheet 1 back 2, %d\n",n);
if(n>4){
printf("sheet 2 front %d, 3\n",n-1);
printf("sheet 2 back 4, %d\n",n-2);
}
break;
case 2:
printf("sheet 1 front NA, 1\n");
printf("sheet 1 back 2, NA\n");
if(n>4){
printf("sheet 2 front %d, 3\n",n);
printf("sheet 2 back 4, %d\n",n-1);
}
break;
case 1:
if(n<4){
printf("sheet 1 front NA, 1\n");
printf("sheet 1 back NA, NA\n");
}else{
printf("sheet 1 front NA, 1\n");
printf("sheet 1 back 2, NA\n");
printf("sheet 2 front NA, 3\n");
printf("sheet 2 back 4, %d\n",n);
}
break;
defaule:
printf("bug\n");
return;
break;
}
int b_end_n=n/4*4-noreminder*4;
int f_end_n=5;
int i,j;
for(i=3,j=0;i<pages+1;i++){
for(j=0;j<2;j++){
if(j==0){
printf("sheet %d front %d, %d\n", i, b_end_n, f_end_n);
}else{
printf("sheet %d back %d, %d\n", i, f_end_n, b_end_n);
}
f_end_n++;
b_end_n--;
}
}
return;
}