ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

66 菱形输出

2022-03-06 21:00:20  阅读:203  来源: 互联网

标签:输出 num 一组 int 测试数据 空格 菱形 66


问题描述 :

明明这次又碰到问题了:

给定一个正整数N,明明的爸爸让他输出一个以Z开始的菱形,以后依次为Y,X…,

比如当N等于1的时候输出图形:

Z

当N等于2的时候,输出图形:(Y前没有空格,Z、X和W前一个空格)

  Z

Y X

 W

当N等于3的时候,输出图形(Z前两个空格,Y、X前一个空格,W前没有空格......):

   Z

 Y X

W   V

 U T

   S

明明发现当N很大的时候就不是很容易了,所以找到了你,希望你编写一个程序帮助他

明明的问题可以归结为:输入一个正整数N,输出一个以Z开始的菱形,以后依次为Y,X…。

 

请尝试定义函数,该函数的功能是输出以上图形的一行。

输入说明 :

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行仅包括一个正整数n(1≤n≤7)。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明 :

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组输出一个以Z开始的菱形,具体格式参照样例输出。每组运算结果与其后一组运算结果之间有一个空行,最后一组运算结果之后没有空行。 注:通常,显示屏为标准输出设备。

输入范例 :

1
3

输出范例 :

Z

  Z
 Y X
W   V
 U T
  S

 

思想:找规律的题目,先打印出来第一行,余下的空格规律为:菱形的上半部分,就是行数不超过目标数num的时候,前面有num-i行个空格,然后打印一个字母,中间有2(i-1)-1个空格,再打印一个字母。

下半部分,中间空格的规律变为有2(2*num-i-1)-1个空格。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, i, j, k,count;
    int cur =0;
    char c[26];
    int cr = 90;
    for(i=0;i<26;i++){
        c[i] = cr;
        cr--;
    }
    while(scanf("%d", &num) != EOF)
    {
        count = 0;
        cur++;
        if (cur >= 2)
            printf("\n");

        for (i = 1; i <= num - 1; i++)
        {
            printf(" ");
        }
        printf("%c\n", c[count++]);

        for (i = 2; i <= 2 * num - 2; i++)
        {
            if (i <= num)
            {
                for (j = 1; j <= num - i; j++) 
                    printf(" ");
                printf("%c", c[count++]);       
                for (j = 1; j <= (2 * (i - 1)) - 1; j++) 
                    printf(" ");
                printf("%c\n", c[count++]); 
            }
            else
            {
                for (j = 1; j <= i - num; j++)
                    printf(" ");
                printf("%c", c[count++]); 
                for (j = 1; j <= (2 * (2 * num - i - 1)) - 1; j++)
                    printf(" ");
                printf("%c\n", c[count++]);
            }
        }

        if (num != 1)//最后一行
        {
            for (i = 1; i <= num - 1; i++)
            {
                printf(" ");
            }
            printf("%c\n", c[count++]);
        }

        return 0;
    }
}

 

标签:输出,num,一组,int,测试数据,空格,菱形,66
来源: https://www.cnblogs.com/End1ess/p/15973386.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有