C++图形打印题

来源:互联网 发布:c语言入门 编辑:程序博客网 时间:2024/06/05 16:07

关键:写代码之前弄清楚这几个问题
1.有几行
2.每一行由哪几种元素组成
3.每一行的元素与行数有无关系

1. 星星题

#include <iostream>using namespace std;int main(){     for(int j=1;j<6;j++)//j控制行数    {        //每一行由空格和星星组成,空格的个数k与行数j有关系        for(int k=1;k<j;k++)//k控制每一行的空格数            cout<<"  ";          for(int i=1;i<6;i++)//I控制每一行的星星*数            cout<<"*"<<" ";          cout<<endl;    }}

这里写图片描述

2. 对称图形

#include <iostream>#include <cmath>using namespace std;int main(){     for(int j=1;j<8;j++)//j控制行数    {        int ub;        ub=5-abs(j-4);//ub为每一行星星数目的个数        for(int i=1;i<ub;i++)//I控制每一行的星星*数            cout<<"*"<<" ";          cout<<endl;    }}

这里写图片描述

对称图形的扩展:每行的星星数为奇数个

#include <iostream>#include <cmath>using namespace std;int main(){     for(int j=1;j<8;j++)//j控制行数    {        int ub;        ub=2*(5-abs(j-4))-2;//ub为每一行星星数目的个数        for(int i=1;i<ub;i++)//I控制每一行的星星*数            cout<<"*"<<" ";          cout<<endl;    }}

这里写图片描述

3. 杨辉三角形

#include <iostream>using namespace std;int main(){       //step1: 生成数组,储存每一值(这里不能采用计算一个,打印一个的方法,因为计算该行元素值的时候,要用到上一行元素的值,这就要求我们必须至少保存上一行元素的值,因此想到用2维数组将这些值全部保存起来,然后再统一输出)    //通项的前两行单独写,因为只有写出前两行,才能写出通项    int b[11][11];    b[1][1]=1;    b[2][1]=1;    b[2][2]=1;    //通项    for(int i=3;i<11;i++)    {               b[i][1]=1;        b[i][i]=1;//每一行的首元素和末元素都等于1        for(int j=2;j<i;j++)            b[i][j]=b[i-1][j-1]+b[i-1][j];//核心代码:通项:即第I行第j个元素与第i-1行第j、j-1个元素之间的关系    }    //step2:输出所有的元素    for(int m=1;m<11;m++)    {        for(int n=1;n<=m;n++)            cout<<b[m][n]<<" ";        cout<<endl;//每行结束以后换行    }}

这里写图片描述