L1-002. 打印沙漏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了L1-002. 打印沙漏相关的知识,希望对你有一定的参考价值。
L1-002. 打印沙漏
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:19 *输出样例:
***** *** * *** ***** 2
1 #include<stdio.h> 2 int main(){ 3 char x; 4 int n,N,i,j,k,d,line,count,count1,kongge; 5 while(~scanf("%d %c",&N,&x)){ 6 n=(N*0.5)+0.5; 7 d=1;line=count=count1=0; 8 while(n>count){ 9 if(count+d>n){ 10 break; 11 } 12 line++; 13 count+=d; 14 d+=2; 15 } 16 for(i=0;i<line;i++){ 17 if(i!=0){ 18 for(k=0;k<i;k++){ 19 printf(" "); 20 } 21 } 22 for(j=d-2;j>0;j--){ 23 24 printf("%c",x); 25 count1++; 26 27 } 28 d=d-2; 29 30 printf("\n"); 31 } 32 kongge=line; 33 for(i=0;i<line-1;i++){ 34 if(i!=line-2){ 35 for(k=0;k<kongge-2;k++){ 36 printf(" "); 37 } 38 kongge--; 39 } 40 for(j=d+2;j>0;j--){ 41 printf("%c",x); 42 count1++; 43 } 44 d=d+2; 45 printf("\n"); 46 } 47 printf("%d\n",N-count1); 48 } 49 50 return 0; 51 }
以上是关于L1-002. 打印沙漏的主要内容,如果未能解决你的问题,请参考以下文章