PTA编程总结 沙漏

7-1 打印沙漏 (20 分)

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

*****
 ***
  *
 ***
*****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2代码如下

int main()
{
int N,k,n,i,j,p,m,ge;
char op;
while(1){
scanf("%d %c",&N,&op);
if(N>0&&N<=1000)
break;
}
k=N-1;
for(i=3;k>=2i;i+=2){
k=k-2i;
}
i-=2;
n=i;
for(j=0;i>=1;i-=2,j++){
for(p=0;p<j;p++)
printf(" ");
for(p=0;p<i;p++)
printf("%c",op);
printf("\n");
}
ge=j-2;
for(m=3;m<=n;m+=2,ge--){
for(p=0;p<ge;p++)
printf(" ");
for(p=0;p<m;p++)
printf("%c",op);
printf("\n");
}
printf("%d",k);
return 0;
}
设计思路:定义完变量后先用while语句,其中用一个if语句,当n小于0或大于1000时跳出循环。接着打印上半部分,令n=i,使用for循环语句输出字符。下半部分相反。

遇到的错误:
前面的while语句不知道是插入if语句,一直编译不出来,n有错误
解决办法:
询问同学,请教方法

运行结果截图:

原文地址:https://www.cnblogs.com/hshsr/p/10414497.html

时间: 2024-10-20 15:20:42

PTA编程总结 沙漏的相关文章

pta 编程题13 File Transfer

其它pta数据结构编程题请参见:pta 这道题考察的是union-find并查集. 开始把数组中每个元素初始化为-1,代表没有父节点.为了使树更加平衡,可以让每一个连通分量的树根的负值代表这个连通分量包含的节点数,然后在union时把小的树并到大的树上. 另外在find操作时可以用递归的方式使查找路径上的所有节点的父节点都改为根节点,以实现路径压缩,在后续查找过程中会更快. 1 #include <iostream> 2 #include <vector> 3 using name

pta 编程题15 列出连通集

其它pta数据结构编程题请参见:pta 题目 题目要求分别以深度优先搜索和广度优先搜索输出图的连通集. 广度优先搜索要用到队列,先回顾一下循环队列: 1 struct QNode { 2 int* Data; /* 存储元素的数组 */ 3 int Front, Rear; /* 队列的头.尾指针 */ 4 int MaxSize; /* 队列最大容量 */ 5 }; 6 typedef struct QNode *Queue; 7 8 Queue CreateQueue( int MaxSiz

pta 编程题21 公路村村通

其它pta数据结构编程题请参见:pta 题目 这道题考察最小生成树问题,用的是Prim算法. 1 #include <iostream> 2 using namespace std; 3 4 int N, M; 5 int** G; 6 void buildGraph(); 7 void deleteGraph(); 8 int prim(); 9 int findMinDist(int dist[]); 10 11 int main() 12 { 13 cin >> N >

pta编程(1-8)

知识点:本次编程运用到的格式 #include<stdio.h> int main(void) { printf(); return 0; } 过程:1-3.没什么问题,就是注意字符的输入要正确. 4-6.格式上位置的错误,稍微调整一下就好了. 7.注意字符的输入,别输错,别输漏. 8.符号的间距不对,调整一下. 心得:编程的过程非常的严谨,所有的过程都息息相关,不能出 一点小错误,就连符号的间距也至关重要,不能粗心打少 打多,否则输出的结果不尽相同,所想要表达的结果也就 不一样了.

PTA编程总结1

题目7-1  打印沙漏 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"",要求按下列格式打印 **** *** 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔. 输出格式: 首先打印出由给

pta 编程题14 Huffman Codes

题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路: 1.构造哈夫曼树,并求出总代价COST,即各个字母的频数乘以编码长度的和. 2.对于题目给出的每一组编码,判断是否符合哈夫曼编码,即这组编码是否为前缀码,同时代价cost是否等于计算出的哈夫曼树的代价COST. 判断一组编码是否为前缀码的方法: 将这些编码逐个的添加到哈夫曼树中,对于每一个编码字符串,字符串中的每一个字符也逐个扫描,如

PTA编程总结2

1)实验代码 #include<stdio.h>#include<math.h>int n,s=0;int main(void){ int i,j,k,p=1,flag=1; int f(int q,int n); scanf("%d",&n);  for(i=0;n/p>=10;i++){  p=pow(10,i);  s++; } if(n==0)   printf("a"); if(n<10&&n&g

pta编程总结

币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S.B.Q.W.Y分别代表拾.百.仟.万.亿.于是23108元应被转换输出为"cWdQbBai"元. 输入格式: 输入在一行中给出一个不超过9位的非负整数. 输出格式: 在一行中输出转换后的结果.注意"零"的用法必须符合中文

201521123092《java程序设计》第五周学习总结

1.本周学习总结 #1.1 尝试使用思维导图总结有关多态与接口的知识点. 2.书面作业 #1.代码阅读:Child压缩包内源代码##1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 答:不能编译通过.出错在 Syatem.out.println(i). 父类parent中定义i为private,所以子类child中不能用i. 把private改成protected即可,输出结果为:1 2 2 1 1 2 1 ##1.2 另外一个