C程序设计(第五版)谭浩强p138第16题,输出一个菱形图案

本文详细描述了如何通过嵌套循环在编程中实现一个7x7矩阵的上三角形和下三角形图案,通过判断坐标来输出星或空格,并给出了具体的代码实现和输出结果。
摘要由CSDN通过智能技术生成

一.思路

1. 这个图案是7 * 7矩阵组成,由一个上三角形和下三角形图案组成,可以分成两个矩阵,其中上三角在4 * 7矩阵中,下三角在3 * 7矩阵中;
2. 4 * 7矩阵中 i = [0,1,2,3],j = [0,1,2,3,4,5,6];3 * 7矩阵中,i = [0,1,2],j = [0,1,2,3,4,5,6];
3. 图案是处于矩阵的中间,以j=3时为分界,对应数字矩阵,当i=0,j=3时,"星"的坐标为(0,3),当j!=3时,其他坐标上是"空格"。由此分析,我们只要在数字矩阵中相应的坐标输出"星",相应的坐标输出"空格"。
4. 程序中用2个for内外嵌套循环分别表示一个4 * 7矩阵和一个3 * 7矩阵,其中:
    1. 4 * 7矩阵第一行中"空格"居多,我们以输出"空格"为主:
        1. 当i = 0,j的取值在 j < 3 || j > 3时输出"空格"
        2. 当i = 1,j的取值在 j < 2 || j > 4时输出"空格"
        3. 可以得到表达式j < (3 - i) || j > (3 + i)
    2. 3 * 7矩阵矩阵第一行中"星"居多,我们以输出"星"为主:
        1. 当i = 0,j的取值在 0 < j < 6时输出"星"
        2. 当i = 1,j的取值在 1 < j < 5时输出"星"
        3. 可以得到表达式 j > i && j < 6 - i

二.代码实现

#include<stdio.h>
#include<stdlib.h>
/*
    输出以下图案:
            *
           ***
          *****
         *******
          *****
           ***
            *
*/
int main()
{
    // 1.1 先输出上三角
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 7; j++)
        {
            if (j < (3 - i)|| j > (3 + i))
                printf(" ");
            else
                printf("*");
        }
        printf("\n");
    }
    // 1.2 然后下三角
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 7; j++)
        {
            if (j > i && j < 6-i)
                printf("*");        
            else printf(" ");
        }
        printf("\n");
    }
    system("pause");
    return 0;
}

三.输出结果

四.总结

        类似该问题都是在一个数字矩阵中显示,将矩阵中图案所在坐标输出,就得到我们所要的图案。

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值