c/c++语言开发共享『嗨威说』数据结构入门:打印沙漏 – 思路解剖

《数据结构》这门课程的安排,就要开始各种算法和数构的烧脑学习了,从最简单的应用题型入手吧。 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到 …


《数据结构》这门课程的安排,就要开始各种算法和数构的烧脑学习了,从最简单的应用题型入手吧。

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

*****  ***   *  *** ***** 2

贴上自己的ac代码~~
『嗨威说』数据结构入门:打印沙漏 - 思路解剖
 1 #include<iostream>  2 #include<stdio.h>  3 using namespace std;  4 int cnumber,max,i,temp;  5 char symbol;  6 int main()  7 {  8     scanf("%d %c",&cnumber,&symbol);  9     for(i = 1;;i++) 10     { 11         temp = 2*i*i+4*i; 12         if(temp > cnumber-1) break; 13         max = temp; 14     } 15     for(temp = i-1;temp>=0;temp--)  16     { 17         for(int count = 0;count != (i-1)-temp;count++) if(temp != 0) printf(" "); 18         for(int count = 0;count<(2*temp+1);count++) 19         { 20             if(temp == 0) break; 21             printf("%c",symbol); 22         } 23         if(temp != 0) printf("n"); 24     } 25     for(temp = 0;temp<=i-1;temp++)  26     { 27         for(int count = 0;count != (i-1)-temp;count++) printf(" "); 28         for(int count = 0;count<(2*temp+1);count++) printf("%c",symbol); 29         printf("n"); 30     } 31     printf("%d",cnumber-max-1); 32     return 0; 33  } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/605131.html

(0)
上一篇 2021年5月13日
下一篇 2021年5月13日

精彩推荐