输出三角形

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

//01.总结双重for循环的打印规律
//  1.对规律做出分析,便于后续代码编写
//  2.双重for循环内含的规律分析:
//      (1).外层循环执行一次,内存循环执行一轮
//      (2).外层循环控制行数,内层循环控制列数
//      (3).外层循环控制打印出来的换行符
void show()
{
    for (int i = 1; i <= 9; i++)
    {//01次-->外层循环-->控制行
        for (int j = 1; j <= 9; j++)
        {//10次-->内层循环-->控制列
            printf("%2d*%2d=%2d", j, i, j*i);
        }
        printf("\n");//换行
    }
}

//02.打印左下三角:(左大三角)
//  观察数字规律得出:j<=i
void leftDown()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j <= i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
        }
        printf("\n");
    }
}

void rightUp()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j >= i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
            else
            {
                printf("%8s", " ");
            }
        }
        printf("\n");
    }
}

//03.打印左小三角:
//  1.先确定左小三角属于那块儿大三角(左大三角||右边大三角)
//      j<=i
//  2.再确定左小三角本身:观察图形规律得知
//      j<=10-i
//      (1).都是等于符号,则添加等于符号,否则就不添加
//      (2).从1开始,用最大数+1,再进行减去i
//      (3).进行比较的时候,j总是在关系运算符的左边
//  3.总结规律:
//      凡是在左边,都属于是小于等于
//      凡是在右边,都属于是大于等于
//      原来是>=,那么后来就是<=
void left()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j <= i && j <= 10 - i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
        }
        printf("\n");
    }
}

void right()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j >= i && j >= 10 - i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
            else
            {
                printf("%8s", " ");
            }
        }
        printf("\n");
    }
}

void up()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j >= i && j >= 10 - i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
            else
            {
                printf("%8s");
            }
        }
        printf("\n");
    }
}

void down()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j <= i && j >= 10 - i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
            else
            {
                printf("%8s", " ");
            }
        }
        printf("\n");
    }
}

//04.打印左上三角(大三角):
void leftUp()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j <= 10 - i)
            {
                printf("%2d*%2d=%2d", j, i, j *i);
            }
        }
        printf("\n");
    }
}

void rightDown()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j >= 10 - i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
            else
            {
                printf("%8s", " ");
            }
        }
        printf("\n");
    }
}

//05.打印九九乘法表
void printf99()
{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= 9; j++)
        {
            if (j <= i)
            {
                printf("%2d*%2d=%2d", j, i, j*i);
            }
        }
        printf("\n");
    }
}

//06.对双重for循环打印三角的大统一总结:
//  1.先确定所需要打印的三角是大三角还是小三角?
//      大三角:
//          左下三角:leftDown
//          右上三角:rightUp
//          左上三角:leftUp
//          右下三角:rightDown
//      小三角:
//          左三角:left
//          右三角:right
//          上三角:up
//          下三角:down
//  2.再确定所需要打印的三角在那块儿区域?
//      大三角:
//          左下三角:leftDown
//              j<=i
//          右上三角:rightUp
//              j>=i
//          左上三角:leftUp
//              j<=10-i
//          右下三角:rightDown
//              j>=i
//      小三角:
//          左三角:left
//              左下三角与左上三角的交集
//              j<=i && j<=10-i
//          右三角:right
//              右上三角与右下三角的交集
//              j>=i && j>=10-i
//          上三角:up
//              右上三角除去右三角
//              j>=i && j <= 10 - i
//          下三角:down
//              左下三角除去左三角
//              j<=i && j >= 10 - i
//  3.关于关系运算符的准确适用:
//      要么全部使用含有等于的符号
//      要么全部使用不含等于的符号
//      母数等于最大数+1
//      左三角和右三角符号完全相同
//      上三角和下三角符号完全相反
int main(void)
{
    //show();

    //leftDown();

    //rightUp();

    //left();

    //right();

    //up();

    //down();

    //leftUp();

    //rightDown();

    system("pause");
}

//07.循环结构可以无限嵌套,但是企业开发不建议出现
int main02(void)
{
    for (;;)
    {
        for (;;)
        {
            while (1)
            {

            }
        }
    }
}

//08.将双重for循环转变成为双重while循环
//  for循环和while循环可以进行完美转换
int main03(void)
{
    int i = 1;
    while (i < 10)
    {
        int j = 1;
        while (j < 10)
        {
            if (j <= i)
            {
                printf("%d*%d=%2d\t", j, i, j*i);
            }
            j++;
        }
        printf("\n");
        i++;
    }

    system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值