列印棱形演算法
Ⅰ 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++)。