#include<iostream>
using namespace std;
int main(void)
{
int line,i,j;
cout<<"請輸入壹個奇數:"<<endl;
cin>>line;//由於屏幕大小有限,輸入的line值不宜過大,例如100可能就不行
for(i=1;i<=(line+1)/2;i++)//輸出上半部分的(line+1)/2行
{
for(j=line;j>=i;j--)cout<<" ";
for(j=1;j<=2*i-1;j++)//通過觀察發現,下壹行比上壹行多輸出兩個星號,故j的值每增加1,輸出星號的個數多兩個
cout<<"*";
cout<<endl;
}
for(i=(line-1)/2;i>=1;i--)//輸出下半部分的(line-1)/2行
{
for(j=line;j>=i;j--)
cout<<" ";
for(j=1;j<=2*i-1;j++)
cout<<"*";
cout<<endl;
}
return 0;
}
》提高:(是輸出的圖形變得稀疏)》》:
#include<iostream>
using namespace std;
int main(void)
{
int line,i,j;
cout<<"請輸入壹個奇數:"<<endl;
cin>>line;//由於屏幕大小有限,輸入的line值不宜過大,例如100可能就不行
for(i=1;i<=(line+1)/2;i++)//輸出上半部分的(line+1)/2行
{
for(j=line;j>=i;j--)cout<<" ";//兩個空格
for(j=1;j<=2*i-1;j++)//通過觀察發現,下壹行比上壹行多輸出兩個星號,故j的值每增加1,輸出型號的個數多兩個
cout<<"* ";//壹個星號壹個空格
cout<<endl;
}
for(i=(line-1)/2;i>=1;i--)//輸出下半部分的(line-1)/2行
{
for(j=line;j>=i;j--)
cout<<" ";
for(j=1;j<=2*i-1;j++)//通過觀察發現,下壹行比上壹行多輸出兩個星號,故j的值每增加1,輸出型號的個數多兩個
cout<<"* ";
cout<<endl;
}
return 0;
}
》提高二(數字菱形)》》:
#include<iostream>
using namespace std;
int main(void)
{
int i,j,line;
cout<<"請輸入壹個奇數:"<<endl;
cin>>line;
for(i=1;i<=(line+1)/2;i++)//循環3次,輸出前3行
{
for(j=line;j>=i;j--)//通過觀察,前三行的前壹行都比它後面的壹行多輸出壹個空格,少輸出兩個數
cout<<" ";
for(j=1;j<=i;j++)
cout<<j;
for(j=1;j<i;j++)
cout<<i-j;
cout<<endl;
}//以輸出第三行為例(此時i=3),首先執行輸出空格的循環,輸出3個空格;執行“for(j=1;j<=i;j++)cout<<j;”,輸出“123”,再執行“for(j=1;j<i;j++)cout<<i-j;”,輸出“21”。
for(i=(line-1)/2;i>=1;i--)//循環3次,輸出前3行
{
for(j=line;j>=i;j--)
cout<<" ";
for(j=1;j<=i;j++)
cout<<j;
for(j=1;j<i;j++)
cout<<i-j;
cout<<endl;
}
return 0;
}
最近我回答了許多這樣的問題,妳可以去看看我的知道回答,我還在“知識掌門人”裏制作了壹條知識,專門針對輸出這種圖形的。有空看看,願對妳有所幫助。