zoukankan      html  css  js  c++  java
  • 编程总结1:打印沙漏

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





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

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

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

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

    输入样例:
    19 *
    输出样例:





    2
    解题思路:先利用求和公式得出最长一行的符号个数,然后从上而下先输出上部分,其中运用行,列下标规律得到输出空格的位置,最后

    类似地输出下半部分。
    代码:#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){
    sum+=2l;
    }
    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);
    

    }

    当时没有截图。。。

  • 相关阅读:
    day5-装饰器的正确打开方式------------->懒
    python_day5--->递归函数,二分法查找
    day4_生成器yield
    day4_迭代器
    day4_装饰器
    day4_函数嵌套和闭包以及作用域
    this作用域,改变作用域的方法
    $.ajax传数据.php
    ul标签的引用
    URL
  • 原文地址:https://www.cnblogs.com/ljr33/p/10412197.html
Copyright © 2011-2022 走看看