zoukankan      html  css  js  c++  java
  • 打印沙漏

    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定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 %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(" ");

     }

     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(" ");

     }

     printf("%d",rest);

    }

    2运行截图  无,之前没保存

    3.设计思路  这到题目很难,不会,

  • 相关阅读:
    开源项目中标准文件命名和实践
    linux远程拷贝命令-scp
    Linux访问Windows共享目录的方法——smbclient
    ADB Fix error : insufficient permissions for device
    APT典型应用示例
    我的参考书籍列表
    GCC Reference
    GNU make简介
    Windows下搭建Android NDK开发环境及命令行编译
    Git命令行基本操作
  • 原文地址:https://www.cnblogs.com/yang13aazop/p/10405340.html
Copyright © 2011-2022 走看看