控制台打印三角形、菱形
生活随笔
收集整理的這篇文章主要介紹了
控制台打印三角形、菱形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 打印三角形
要求:
打印如下類似的三角形
??????????? *
????????? ***
??????? *****
????? *******
?
效果:
?
思路:
(1) 空格每往下一層少一個。
(2) *是奇數數列,(i – 1)* 2 + 1
?
核心代碼:
for(int?i?=?1;?i?<=?layer;?i++)?{
????for(int?j?=?1;j?<=?(layer?-?i);?j++)?{
????cout<<"?";
????}
????for(int?k?=?1;?k?<=?(i?-?1)?*?2?+?1;?k++)?{
????cout<<"*";
????}
????cout<<"\n";
}
?
?
?二、 打印菱形
要求:
打印如下類似的菱形
????????? *
??????? ***
????? *****
??????? ***
????????? *
?
效果:
思路:
(1) 空格是對稱的,中間層(例如要求中的菱形,中間層為3)的空格為0,而兩邊的空格數則為當前層數減去中間層的絕對值。
(2) *也是對稱的,中間層數減去空格數,就等于如上奇數數列的i.
?
核心代碼:
for(int?i?=?1;?i?<=?layer;?i++)?{????int?j;
????????
????for(j?=?1;j?<=?abs(i?-?mid);?j++)?{
????cout<<"?";
????}
????for(int?k?=?1;?k?<=?(mid?-?j)?*?2?+?1;?k++)?{
????cout<<"*";
????}
????cout<<"\n";
}
?
?
三、所有代碼:
?
代碼 //GeometryTest.cpp//powered?by?Alan
//2010.09.18
#include<iostream>
using?namespace?std;
//畫三角形
void?DrawTri();
//畫菱形
void?DrawDia();
int?main()?{
????int?type?=?0;
????
????cout<<"選擇您需要的圖形:\n";
????cout<<"???1.三角形\n";
????cout<<"???2.菱形\n";
????
????cin>>type;
????
????while(!(cin.good()?&&?type?==?1?||?type?==?2))?{
????????cin.clear();
????????cin.ignore(1024,'\n');
????????cout<<"輸入的圖形類型不正確重新輸入:\n";
????????cin>>type;
????}?
????
????switch(type)?{
????????case?1:
????????????DrawTri();
????????????break;
????????case?2:
????????????DrawDia();
????????????break;
????????default:
????????????cout<<"輸入的圖形類型不正確重新輸入:\n";
????????????break;
????}
????
????
????return?0;
}
void?DrawTri()?{
????//記錄層數
????int?layer?=?0;
????
????cout<<"輸入層數:\n";
????cin>>layer;
????while(!(cin.good()?&&?layer?>?1))?{
????????????cin.clear();
????????????cin.ignore(1024,'\n');
????????????cout<<"輸入的層數類型不正確或層數小于2,請重新輸入:\n";
????????????cin>>layer;
????}
????
????cout<<layer<<"層三角形:\n";
????for(int?i?=?1;?i?<=?layer;?i++)?{
????????for(int?j?=?1;j?<=?(layer?-?i);?j++)?{
????????????cout<<"?";
????????}
????????for(int?k?=?1;?k?<=?(i?-?1)?*?2?+?1;?k++)?{
????????????cout<<"*";
????????}
????????cout<<"\n";
????}
????
}
void?DrawDia()?{
????//記錄層數
????int?layer?=?0;
????//記錄中間層
????int?mid;
????
????cout<<"輸入層數:\n";
????cin>>layer;
????while(!(cin.good()?&&?layer?>?3?&&?(layer%2?!=?0)))?{
????????????cin.clear();
????????????cin.ignore(1024,'\n');
????????????cout<<"輸入的層數類型不正確或層數小于3或層數不為基數,請重新輸入:\n";
????????????cin>>layer;
????}
????
????mid?=?(layer?+?1)/2;
????
????cout<<layer<<"層菱形:\n";
????for(int?i?=?1;?i?<=?layer;?i++)?{
????????int?j;
????????
????????for(j?=?1;j?<=?abs(i?-?mid);?j++)?{
????????????cout<<"?";
????????}
????????for(int?k?=?1;?k?<=?(mid?-?j)?*?2?+?1;?k++)?{
????????????cout<<"*";
????????}
????
????????cout<<"\n";
????}
}
?
?
轉載于:https://www.cnblogs.com/icescut/archive/2010/09/22/triangle_diamon.html
總結
以上是生活随笔為你收集整理的控制台打印三角形、菱形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net 跨页面传值(一)
- 下一篇: Hello Blog!