1027. 打印沙漏(20)
2016-04-30 17:00
323 查看
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
输出样例:
思路分析:我不会告诉你星号的后面没有空格啊!没有啊!啊!别问我怎么知道的。。。
代码如下:
***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
***** *** * *** *****2
思路分析:我不会告诉你星号的后面没有空格啊!没有啊!啊!别问我怎么知道的。。。
代码如下:
#include<stdio.h> #include<math.h> void display(int sn,int k,char s) { int i; for(i=0;i<k/2;i++) { printf(" "); } for(i=0;i<sn;i++) { printf("%c",s); } printf("\n"); } main() { int n,a,i,j,u; char s;//a*2-1为层数 scanf("%d %c",&n,&s); a=(int)sqrt((n+1)/2); //printf("%d\n",a); u=2*a*a-1; u=n-u; for(i=0;i<(2*a-1);i++) { if(i<a) display(2*(a-i)-1,i*2,s); else if(i>=a) { display(2*(i-a+2)-1,4*a-2*i-4,s); } } printf("%d\n",u); } /*#include<stdio.h> int main() { char c; int n,i,j,k; scanf("%d %c",&n,&c); n--; for(i=3;n>=2*i;i+=2) { n-=(2*i); } i-=2; for(j=i;j>0;j-=2) { for(k=(i-j)/2;k>0;k--) printf(" "); for(k=j;k>0;k--) printf("%c",c); printf("\n"); } for(j=3;j<=i;j+=2) { for(k=(i-j)/2;k>0;k--) printf(" "); for(k=j;k>0;k--) printf("%c",c); printf("\n"); } printf("%d\n",n); }*/
相关文章推荐
- 记录最近遇到的两个小问题
- nyoj_71 独木舟上的旅行
- redis数据类型
- 【小笨鸟看JDK1.7集合源码之四】Vector源码剖析
- 机器学习----Softmax回归
- hdu_2608_0 or 1_数论
- ListView和数据适配器SimpleAdapter例子
- hdu_2608_0 or 1_数论
- python使用zlib实现压缩与解压字符串
- CODEVS 3023 魔法禁书目录1:追捕大妈
- 正向代理与反向代理
- 《UNIX环境高级编程》(进程环境)
- error C4996: 'pcl::SAC_SAMPLE_SIZE': PCL1.8问题汇总
- Java循环练习:已知s=1×2×3×…×n,计算出s不大于5000时n的最大值
- 2.ubuntu 配置目录
- 【自考总结】 操作系统概论
- java学习-字符串2.
- 1026. 程序运行时间(15)
- 英语的五种基本句型
- poj1698二分图多重匹配