PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)
2015-04-21 18:59
375 查看
PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20) http://www.patest.cn/contests/pat-b-practise/1027
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
输出样例:
题目分析:
1. 首先要计算第一行显示几个符号可以使形状最大。
2. 输出分为三部分:没有尖儿倒三角、中间一行(只需要输出一遍,所以单独处理)、没有尖儿的正三角
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
***** *** * *** *****2
题目分析:
1. 首先要计算第一行显示几个符号可以使形状最大。
2. 输出分为三部分:没有尖儿倒三角、中间一行(只需要输出一遍,所以单独处理)、没有尖儿的正三角
#include<stdio.h> int main() { int k=0; char c='0'; scanf("%d",&k); getchar(); scanf("%c",&c); int i=0,a=0,sum=0; while(1) { a=2*i+1; if(i && sum+2*a<=k) sum+=2*a; else if( !i && sum+a<=k) sum+=a; else break; i++; } for(int j=i;j>1;j--) { for(int k=0;k<i-j;k++) printf(" "); for(int k=0;k<j*2-1;k++) printf("%c",c); printf("\n"); } if(1<=i) { for(int k=0;k<i-1;k++) printf(" "); printf("%c",c); } for(int j=2;j<=i;j++) { printf("\n"); for(int k=0;k<i-j;k++) printf(" "); for(int k=0;k<j*2-1;k++) printf("%c",c); } if(i) printf("\n"); printf("%d",k-sum); return 0; }
相关文章推荐
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20) C语言
- PAT (Basic Level) Practise (中文) 1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT BASIC LEVEL 1027. 打印沙漏(20)
- PAT Basic Level 1027. 打印沙漏(20) 有坑!---Java代码
- PAT(basic level) 1027 打印沙漏(20)
- PAT (Basic Level) Practise:1027. 打印沙漏
- PAT (Basic Level) Practise (中文) 1003.我要通过!(20)
- PAT (Basic Level) Practise (中文) 1004成绩排名(20)
- PAT (Basic Level) Practise (中文) 1043. 输出PATest(20)
- PAT (Basic Level) Practise (中文) 1073. 多选题常见计分法(20)
- PAT (Basic Level) Practise (中文) 1079. 延迟的回文数 (20)
- PAT (Basic Level) Practise (中文) 1049. 数列的片段和(20)
- PAT (Basic Level) Practise (中文)1034. 有理数四则运算(20)
- PAT (Basic Level) Practise (中文)1074. 宇宙无敌加法器(20)
- PAT (Basic Level) Practise (中文)1018. 锤子剪刀布 (20)
- PAT (Basic Level) Practise (中文)1028. 人口普查(20)C语言