折書紙-一個快樂的小問題

給出要打印的頁數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;
}

有的人的天賦高些,衆人可知,衆人可測;而有的人的天賦卻不總是那麼輕而易舉的可以閃光,但卻可能真實存在;擁有前一種天賦是幸運的,成爲衆所周知的天才,光彩奪目;而後一種天賦卻更多的會帶來苦惱與惆悵,隱約間認爲自己有些什麼,卻不能示之於公衆,測之以命題,只有一些隱隱的不順遂心意罷了。

發佈了37 篇原創文章 · 獲贊 4 · 訪問量 3370
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章