首页 > 其他 > 详细

7-1 打印沙漏

时间:2019-02-19 17:17:05      阅读:169      评论:0      收藏:0      [点我收藏+]

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定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("\n");
    }
    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("\n");
    }
    printf("%d\n", c);
    }
    第一步:编译预处理命令,输入主函数。
    第二步:定义整型函数变量,并赋值。
    第三步:定义字符型函数变量。
    第四步:调用scanf语句接收变量number和ch。
    第五步:输入do-while语句,在其中嵌套if语句判断number>=temp?判断数字number是否可以打印沙漏,再利用if语句判断给定的数字number是否可以打印下一个更大的沙漏,再输入break语句,如果不符合条件,则跳出循环打印沙漏。
    第六步:如果符合条件,则进入下步循环。
    第七步:如果给出的数比下个更大的沙漏图形所需的符号数还要大,则将其的行数变为下个沙漏图形的行数,再进行下次循环,输入else语句。
    第八步:输入数据递加,最后输出

7-1 打印沙漏

原文:https://www.cnblogs.com/zou1223/p/10401792.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!