题意:订书,有前面和后面区别的订书。
算法:无,注意,不同情况的不同的讨论。
代码:
include <stdio.h>
int main()
{
int i;
int n;
int x,y;
while(scanf("%d",&n),n)
{
printf("Printing order for %d pages:/n",n);
if(n<=3)
{
switch(n)
{
case 1:
printf("Sheet 1, front: Blank, 1/n");
break;
case 2:
printf("Sheet 1, front: Blank, 1/n");
printf("Sheet 1, back : 2, Blank/n");
break;
case 3:
printf("Sheet 1, front: Blank, 1/n");
printf("Sheet 1, back : 2, 3/n");
break;
}
continue;
}
switch(n%4)
{
case 0:
x=0;
y=n+1;
for(i=1;i<=n/4;i++)
{
printf("Sheet %d, front: %d, %d/n",i,--y,++x);
printf("Sheet %d, back : %d, %d/n",i,++x,--y);
}
break;
case 1:
printf("Sheet 1, front: Blank, 1/n");
printf("Sheet 1, back : 2, Blank/n");
printf("Sheet 2, front: Blank, 3/n");
printf("Sheet 2, back : 4, %d/n",n);
y=n;
x=4;
for(i=3;i<=n/4+1;i++)
{
printf("Sheet %d, front: %d, %d/n",i,--y,++x);
printf("Sheet %d, back : %d, %d/n",i,++x,--y);
}
break;
case 2:
printf("Sheet 1, front: Blank, 1/n");
printf("Sheet 1, back : 2, Blank/n");
y=n+1;
x=2;
for(i=2;i<=n/4+1;i++)
{
printf("Sheet %d, front: %d, %d/n",i,--y,++x);
printf("Sheet %d, back : %d, %d/n",i,++x,--y);
}
break;
case 3:
printf("Sheet 1, front: Blank, 1/n");
printf("Sheet 1, back : 2, %d/n",n);
y=n;
x=2;
for(i=2;i<=n/4+1;i++)
{
printf("Sheet %d, front: %d, %d/n",i,--y,++x);
printf("Sheet %d, back : %d, %d/n",i,++x,--y);
}
break;
}
}
return 0;
}
ps:代码可以更简化的。