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

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





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

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

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

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

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





    2
    编码

    include<stdio.h>

    int main() {
    int a[105];
    a[1] = 1;
    for(int i = 2; i <= 30; i++)
    a[i] = a[i-1] + 2(2i-1);
    int n, m, c = 0;
    char ch;
    scanf("%d %c", &n, &ch);
    for(int i = 1; i <= 30; i++) {
    if(a[i] == n) {
    m = i;
    break;
    }
    else if(a[i] > n) {
    m = i-1;
    c = n - a[m];
    break;
    }
    }
    for(int i = m; i >= 1; i--) {
    for(int j = m; j > i; j--)
    printf(" ");
    for(int j = 1; j <= 2i-1; j++)
    printf("%c", ch);
    printf(" ");
    }
    for(int i = 2; i <= m; i++) {
    for(int j = m; j > i; j--)
    printf(" ");
    for(int j = 1; j <= 2
    i-1; j++)
    printf("%c", ch);
    printf(" ");
    }
    printf("%d ", c);
    }
    第一步:编译预处理命令,输入主函数。
    第二步:定义整型函数变量,并赋值。
    第三步:定义字符型函数变量。
    第四步:调用scanf语句接收变量number和ch。
    第五步:输入do-while语句,在其中嵌套if语句判断number>=temp?判断数字number是否可以打印沙漏,再利用if语句判断给定的数字number是否可以打印下一个更大的沙漏,再输入break语句,如果不符合条件,则跳出循环打印沙漏。
    第六步:如果符合条件,则进入下步循环。
    第七步:如果给出的数比下个更大的沙漏图形所需的符号数还要大,则将其的行数变为下个沙漏图形的行数,再进行下次循环,输入else语句。
    第八步:输入数据递加,最后输出

  • 相关阅读:
    【原创】C# 文件操作详解(三)Directory类
    【原创】C# 文件操作详解(一)File类
    【原创】VS使用技巧——工欲善其事必先利其器
    【原创】C# 文件操作详解(四)DirectoryInfo类
    strpos用法
    调试跳转动态打印
    解决DIV超出样式长度自动换行
    PHP时间戳常用转换在(大、小月问题)
    懒人JS
    PHP 快速排序 与二维数组排序
  • 原文地址:https://www.cnblogs.com/zou1223/p/10401792.html
Copyright © 2011-2022 走看看