码迷,mamicode.com
首页 > 其他好文 > 详细

打印沙漏

时间:2019-02-20 11:20:46      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:而不是   space   std   bsp   can   程序   ace   要求   设计   

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

 

*****

 ***

  *

 ***

*****

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

 

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

 

1.代码#include<stdio.h>

 

int n;

char a;

int l; //记录最长的一行有多少个符号

int sum=1;

int rest;

int space;

int icon;

int s;

int i;

 

int main()

{

 scanf("%d %c",&n,&a);

 if(n<5){

  rest=n-1;

  printf("%c\n%d",a,rest);

  return 0;

 }

 for(l=3;sum<=n;l+=2){ //测试余数为0的情况,此处sum<=n而不是sum<n

  sum+=2*l;

 }

 l-=4;

 rest=n-sum+l*2+4; //剩余的符号数

 for(icon=l;icon>=1;icon-=2){

  space=(l-icon)/2;

  for(s=space;s>0;s--){

   printf(" ");

  }

  for(i=icon;i>0;i--){

   printf("%c",a);

  }

  printf("\n");

 }

 for(icon=3;icon<=l;icon+=2){

  space=(l-icon)/2;

  for(s=space;s>0;s--){

   printf(" ");

  }

  for(i=icon;i>0;i--){

   printf("%c",a);

  }

  printf("\n");

 }

 printf("%d",rest);

 

}

 

2运行截图

 

3.设计思路

 

打印沙漏

标签:而不是   space   std   bsp   can   程序   ace   要求   设计   

原文地址:https://www.cnblogs.com/yang13aazop/p/10405340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!