C++如何打印菱形
void main()
{
int i;
int j;
int k;
for(i=0;i<=10;i++)
{
for(j=0;j<=9-i;j++)
printf(" ");
for(k=0;k<2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=10;i++)
{
for(j=0;j<=(1+i)-1;j++)
printf(" ");
//for(k=0;k<;k++)//这我应该写什么好???
printf("*");
printf("\n");
}
getchar();
}
可不可以每一行代码都给我写出意思来呀??我不懂他的算法,,for不怎么会用, 展开
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+2*i;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-2*i;k++)。
2、一行结束一定要有结束符,是以“;”表示
3、for循环里面,给的条件要有开始和结束,不然会死循环一直到内存被沾满才会停止
4、{ }一对是对称的,不能多,也不能少,不然会报错
5、要了解for循环的原理,for循环里面给定的条件的意思
6、编译不通过的话,说明源码错误,点击下方的错误会有蓝色箭头显示哪一个代码错误
7、编译,连接,运行都不保错的话,显示的菱形不对称,有两点说明:一个就是输入的不是奇数,还有就是源码中有逻辑错误,需要调试
#include "stdio.h"
void main()
{
int i,j;
for(i=1;i<=7;i=i+2)
{for(j=0;j<(7-i)/2;j++)
printf(" ");
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
for(i=5;i>=1;i=i-2)
{
for(j=0;j<(7-i)/2;j++)
printf(" ");
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
}
C++是在C语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。[ 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1; i <=n; i++)
{
for (int j = 1; j <= n - i; j++)
cout << " ";
for (int k =1;k<=2*i-1;k++)
cout << "*";
cout << endl;
}
for (int i = 1; i <= n - 1; i++)
{
for (int j = 1; j <= i; j++)
cout << " ";
for (int k=1;k<=2*(n-i)-1;k++)
cout << "*";
cout << endl;
}
return 0;
}
//n阶实心菱形,从三方面去考虑,一是菱形分为上下两部分去考虑,一部分为一个大for循环来实现,二是每一部分又分为每一行去考虑,每一次循环实现菱形的一行,三是每一行中,空格是一部分,星星是一部分,分别用for循环来实现。其中上半部分,空格既与阶数有关也与行数有关,星星只与行数有关,下半部分,空格只与行数有关,星星既与阶数有关也与行数有关
#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<=10;i++) //先打印上边的10行
{
for(j=1;j<=10-i;j++) //控制要打印的空格数量
printf(" ");
for(k=1;k<=2*i-1;k++) //控制要打印的星号数
printf("*");
printf("\n");
}
for(i=9;i>=1;i--) //先打印上边的9行
{
for(j=1;j<=10-i;j++) //控制要打印的空格数量
printf(" ");
for(k=1;k<=2*i-1;k++) //控制要打印的星号数
printf("*");
printf("\n");
}
}
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;
}