上IT写作的时候无聊啊,无聊就要找东西做,一本书,一个作业本能干什么? 以前一直不知道怎么画三角形菱形这样的,都是复制别人的来用,压根儿想自己写一个. 现在写了个三角形,一看就知道效率不高的了,N个for... /** *画正三角形程序 */ #include<iostream> using namespace std; int main() { int rows; cout<<"请输入三角形的高的行数:"<<endl; cin>>rows; //输入三角形的高的行数 int s=10; int MaxStart=rows*2-1; //计算出这么高的三角型的最底层的星星数. for(int i=0;i<rows;i++) //画行. { s = 1; //控制空格的数量,当s=0后,不再输出空格. for(int j=0;j<MaxStart;j++) //画列 { if(j==((MaxStart+1)/2-i)) //第一行开始的星星是在第(MaxStart+1)/2的位置,下一行比上一行前一位,所以-i; { for(int k=0;k<((2*i)+1);k++) //计算该行的星星的个数; { cout<<"*"; s = 0; } } if(s == 1) //当s=0后,不再输出空格. cout<<" "; } cout<<endl; } system("pause"); return 0; } ---------------------- /** *画倒三角星星 */ #include<iostream> using namespace std; void main() { int rows=0; cout<<"请输入行数:"<<endl; cin>>rows; int Max=rows*2+1; //最大的星星数 bool trun=1; //用来处理画完星后不再画空格 for(int i=0;i<rows;i++) //画行 { for(int j=0;j<Max;j++) //画列 { if(j==i) //行是第几行,就缩进几列 { for(int k=(Max-2*(i+1));k>0;k--) //画每行的星星数 { cout<<"*"; } trun=0; //使画完星星后不再画空格 } if(trun==1) //未画星星前画空格 { cout<<" "; } } trun=1; cout<<endl; } system("pause"); } -------------------------------------------------------------------------- /** **画空心三角形,现在是凌晨亮点四十三分. *我做它实在做得太辛苦了....哎. *copyright Chevi.C 2009.03.07 */ #include<iostream> using namespace std; int main() { int rows; cin>>rows; int Max=rows*2+1; //一行中最多的星星数 for(int i=0;i<rows;i++) //画行 { int count=0; //计数器,用来如果星星超过两个就不再填充空格,而换行 for(int j=0;j<Max;j++) //画列 { if(j==(Max/2-i)||j==(Max/2+i)) //如果j到达该画的位置,位置除了第一行和最后一行每行只有两颗. { if(j==(Max/2-rows+1)) //如果到了最后一行 { for(int k=0;k<(Max-2);k++) //画出最后一行的星星,Max-2我也不知道为什么减二,可是减二是对的 cout<<"*"; break; }else { cout<<"*"; count++; //计数器加,防止画多余的空格 } }else if(count<2) { cout<<" "; } } cout<<endl; } system("pause"); return 0; }