C/C++打印图案及变换位置方法

本文介绍了C/C++中打印图案和变换位置的几种方法,包括使用二维数组和数学建模来创建图案,以及通过封装矩阵和利用gotoxy函数改变光标位置来实现图案的并排输出。数学建模被特别推荐,因为它简洁直观。文中还给出了使用gotoxy函数的例子,用于打印并排的空心矩形和空心菱形,并提供了初始化小矩阵和移动图案的函数。
摘要由CSDN通过智能技术生成

C/C++打印图案及变换位置方法

使控制台输出图案一般有两种方法,一是用二维数组固定输出,二是数学建模。
变换位置实现图案并排输出的方法也有两种,一是小图形用矩阵封装成函数,映射到大矩阵上;二是使用gotoxy函数改变光标位置,头文件为#include <windows.h>、#include <conio.h>

1. 二维数组

建立矩阵:
a.直接赋值的方式适合较复杂,难以用for循环判断位置规律的图案,比如星形。建立时可以用int型,从[0][0]开始依次赋值0或1,在main里用空格或*代替。也可以直接建char类型。
b.for循环建立注意,一行行的打印是控制相对位置,而数学建模for中要写绝对位置,因为假定了坐标轴。
例如:

void Diamond(int m)//空心菱形,设长对角线为m
{
    int n=m/2,j;//把j挪到上面来,避免重复定义
    for(int i=0;i<n;i++)//上半部分的三角,n行,0~n是相对位置,也可以是1~n+1,只要行数保证是n即可
    {
        for(j=1;j<n-i;j++)//算出由*组成的第一条边前的空格数
            cout<<" ";
        for(j=0;j<2*i+1;j++)//三角形的第二条*边
            if(j==0||j==2*i)
                cout<<"*";
            else cout<<" ";//两条边之间的空格
        cout<<endl;
    }
    for(i=0;i<n;i++)//下半部分的三角,n行
    {
        for(j=0;j<i+1;j++)
            cout<<" ";
        for(j=0;j<(n-i-1)*2-1;j++)
            if(j==0||j==(n-i-1)*2-2)
                cout<<"*";
            else cout<<" ";//两条边之间的空格
        cout<<endl;
    }
}

代码不清楚可以自己用笔走一遍。
这种方法比较麻烦,具体算出的相对位置其实是数学建模方法的二次转换,不建议。
封装可以用矩阵。
2.数学建模
超级喜欢。方法跟做数学题一样,算出直线点x和y的关系就可以,很简单。

int i, j;//勾勒上半部分
for (i = 0; i < l / 2; i++){ //l为长对角线
    for (j = 0; j <w; j++){ //w为短对角线
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值