C++如何打印菱形

C++如何打印菱形,第1张

C++ 代码如下:

#include <iostream>

using namespace std; 

int main() 


int n; 

cin>>n;

cout<<"要得到的菱形的大小:"<<endl;

for(int i=1;i<=n;++i)

{

for(int j=1;j<=n-i;++j)

cout<<" ";

for(j=1;j<=i;++j)

cout<<" ";

cout<<endl;

}

for( i=n;i>=1;--i)

{

for(int j=1;j<=n-i;++j)

cout<<" ";

for(j=1;j<=i;++j)

cout<<" ";

cout<<endl;

}

return 0;

}

c++打印菱形图示例图:

1、上半层:

2、下半层:

3、运行结果:

扩展资料:

制作思路:

1、先来分析分割线上半部分的规律:

上半部分外层循环了4次,可以用一个循环来解决for(int i=0 ;i<4 ;i++)。

对比分析:

第一轮循环i=0的时候空格的打印次数是3,星星打印的次数是1

第二轮循环i=1的时候空格的打印次数是2,星星打印的次数是3。。

第三轮循环i=2的时候空格的打印次数是1,星星打印的次数是5。

第四轮循环i=3的时候空格的打印次数是0,星星打印的次数是7。

空格打印的循环次数随着外层循环次数的增加而减少,这样就很明显看出空格打印的循环和外层循环的规律:for(int j=0;j<3-i;j++)。

星星打印增加循环次数都是外层循环的次数增加次数的2倍,这样就很明显看出星星打印的循环和外层循环的规律:for(int k=0;k<1+2i;k++)。

2、再来就是分析分割线下半部分的规律:

下半部分外层循环了3次,可以用一个循环来解决for(int i=0 ;i<3 ;i++)

第一轮循环i=0的时候空格的打印次数是1,星星打印的次数是5。

第二轮循环i=1的时候空格的打印次数是2,星星打印的次数是3。

第三轮循环i=2的时候空格的打印次数是3,星星打印的次数是1。

空格打印的循环次数随着外层循环次数的增加而增加,这样就很明显看出空格打印的循环和外层循环的规律:for(int j=0;j<1+i;j++)

星星打印循环次数随外层循环的增加而减少,减少的规律是外层增加的2倍,这样就很明显看出星星打印的循环和外层循环的规律:for(int k=0;k<5-2i;k++)。

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta >#include "stdioh"
void main()
{ int i,j,k;
for(i=1;i<=4;i++) //这个for语句为答应菱形上面的4行,i从1到4做4次循环
{for(j=1;j<=4-i;j++) printf(" ");//第i行时,打印4-i个空格
for(k=1;k<=2i-1;k++) printf("");//第i行时,答应2i-1个“”
printf("\n");//每打印完第i行,就换行
} //这个为两层for循环语句嵌套,第一层表示总共打印多少行,就循环多少次
//里面的那一层循环分别执行打印空格、号,执行完后换行。
//下面的下半部分菱形同理分析。
for(i=1;i<=4;i++)
{for(j=1;j<i+1 ;j++) printf(" ");
for(k=1;k<=7-2i;k++) printf("");
printf("\n");
}
}

下面的程序是菱形打印的终结者,改变下设置,就基本可以满足所有菱形打印的题目。程序主体 for 语句只有9行,简单而强大 /#include <stdioh>#include <stdlibh>#include <stringh>// 这个小函数用来输出 repeatTimes 个字符

#includevoid main(){printf(" \n");printf(" \n");printf(" \n");printf(" \n");printf(" \n");} 这是最简单的。下面一个稍微复杂一点。#includevoid main(){int i=0,j=0,k=0;for(i=0;i{for(j=6-i;j>=0;j--){putchar(' ')

手机党输入#include"stdioh"main(){printf("   \n");printf("   \n");printf("   \n");printf("   \n");printf("    \n");}

/下面的程序是菱形打印的终结者,
改变下设置,就基本可以满足所有菱形打印的题目。
程序主体 for 语句只有9行,简单而强大
/
#include <stdioh>
#include <stdlibh>
#include <stringh>
// 这个小函数用来输出 repeatTimes 个字符 c
void printChar(char c,int repeatTimes)
{
int i;
for(i=0;i<repeatTimes;i++)
printf("%c",c);
}
/
特别的函数,获取当前要打印的下一个菱形图案
height : 菱形的高
shapeVariantStep : 变化的步数
baseShape : 菱形的基本图案
row : 当前打印的菱形图案的行坐标。
col : 当前打印的菱形图案的列坐标。
/
char _buffer_[2]={0};
char getShape(int height,int shapeVariantStep,char baseShape[],int row,int col)
{

int first = baseShape[0],last = first +(height-1)/2shapeVariantStep;
if(shapeVariantStep==0 || strlen(baseShape)!=1)
return baseShape;
else
{
if( first>='0'&&first<='9'&&last<='9' ||
first>='a'&&first<='z'&&last<='z' ||
first>='A'&&first<='Z'&&last<='Z'
)
{
_buffer_[0] = first + ((height-2abs(row)-1)/2 - abs(col))shapeVariantStep;
_buffer_[1] = '\0';
return _buffer_;
}
else
{
return baseShape;
}
}
}
int main(int argc, char argv[])
{
// 菱形的图案
char shape[]="";
// 菱形图案间的空白图案
char space=' ';
// 每个图案之间的最小间隔(以一个字符为单位,不足用空白图案填充)
int interval=5;
// 菱形的高(要求是奇数)
int height=7;
// 菱形是否空心(只有边上的图案)。是:1,否 0
int isHollow=0;
/ 特别的参数:设定菱形的图案是变化。
只有指定 shape 为 :
"0","1",,"9",
或者 "a","b",,"z",
或者 "A","B",,"Z" 其中之一,
并且要保证从指定图形开始,后面至少还有连续的:
(height-1)/2shapevariantStep
个可选的图形,菱形的图形才会是可变的。

/
int shapeVariantStep = 0;

int i,j,k,n;
interval = interval < strlen(shape)strlen(shape):interval;
for(i=-(height-1)/2;i<=(height-1)/2;i++)
{
// 用来输出每行前的空白
printChar(space,abs(i)interval);
// 这个 for(j) 语句用来输出每行的菱形图案
for(j=-(height-2abs(i)-1)/2;j<=(height-2abs(i)-1)/2;j++)
{
// 如果是非空心,输出所有图案;否则只输出两端的图案。
if(!isHollow || (isHollow && (j==0 || j==height-2abs(i)-1)))
{
n=printf("%s",getShape(height,shapeVariantStep,shape,i,j));
// 补齐为到宽度为 interval
printChar(space,interval-n);
}
// 对于空心的菱形,在本应该输出图案的地方,输出空白。
else
{
printChar(space,interval);
}
}
// 这个 for(j) 语句用来输出每行后的空白
printChar(space,abs(i)interval);
printf("\n");
}
return 0;
}
/
运行结果:
shape[]="";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0







shape[]="";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0








shape[]="";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0







shape[]="";
space[]=" ";
interval=0;
height=7;
isHollow=0;
shapevariantStep = 0







shape[]="";
space[]=" ";
interval=5;
height=11;
isHollow=0;
shapevariantStep = 0











shape[]="";
space[]=" ";
interval=5;
height=7;
isHollow=1;
shapevariantStep = 0








shape[]="A";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
shape[]="a";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
a
a b a
a b c b a
a b c d c b a
a b c d e d c b a
a b c d e f e d c b a
a b c d e f g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g h i h g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g f e d c b a
a b c d e f e d c b a
a b c d e d c b a
a b c d c b a
a b c b a
a b a
a

shape[]="1";
space[]=" ";
interval=5;
height=9;
isHollow=0;
shapevariantStep = 2
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
1 3 5 7 5 3 1
1 3 5 3 1
1 3 1
1

/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12830226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存