Ⅰ java打印菱形不是很懂,跪求每句的意思和作用。
importjava.util.Scanner;
class菱形{
publicstaticvoidmain(Stringargs[]){
introw;
Scannerkeyin=newScanner(System.in);
System.out.print("请输入菱形的行数:");
row=keyin.nextInt(); //输入的数字整数!
for(inti=1;i<=row/2+1;i++){//上半部分三角形:不用担心输入偶数,因为折半+1了;
repeat("",row/2+1-i);//空格:注意这是递减
repeat("*",2*i-1);//星:注意这是递减
System.out.println();//打完一排换行!
}
//下半部分三角形原理同上!
for(inti=row/2;i>=1;i--){
repeat("",row/2+1-i);//递增
repeat("*",2*i-1);//递减!
System.out.println();//换行!
}
}
publicstaticvoidrepeat(Stringc,intm){
for(inti=1;i<=m;i++)
System.out.print(c);
}
/**
*
*这个程序整体思路:把菱形分成上下两个三角形在打印,因为菱形是奇数
*上半部分采用了折半+1的算法,所有你输入任何数都不怕!
*如果5,上面就是3下面就是2
*如果6上面就是4下面就是3
*空格采用的算法与打出来的星,相反方式:一个递增一个递减!
*
*
*/
}
Ⅱ C语言的,编写程序实现输入任意行数n,显示输出菱形*图案的算法分析
1)分n行输出(i赋初值为0):
2)第i行开头先输出n-i个空格(首行为第0行)
3)接着输出 2i+1个*号,然后换行
4)i = i + 1;
5)若 i < n,则转步骤2),否则算法结束。
Ⅲ C++如何打印菱形
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、上半层:

(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++)。