【项目:输出星号图】自选下面的几个图案,编程序输出(自选两个完成,其他的想想思路即可)。
(c)“向下的等腰三角”详解
将一个图,看作为6行,完成了第一级的分解,设计的算法框架为:
i=1;While(i<=6) //需要输出6行{ 输出第i行; 换行; ++i;}
对于“输出第i 行”的任务,可以进行细化:
先输出若干空格(多少个空格?第1行0个,第2行1个,第3行2……第6行5个);再输出若干个星号(多少星号?第一行11个,第2行9个……第6行1个)
其实把空格数和星号数和表示行数的变量 i 挂起钩来,上面的“若干个”可以用 i 表示出来,简单地做些推算可以写出式子。
对于“输出第i行”的任务,可以进行细化:
先输出 i-1 个空格; 再输出 2*(6-i)+1 个星号;
于是,算法就是:
i=1;While(i<=6) //需要输出6行{ //输出第i行 先输出 i-1 个空格; 再输出 2*(6-i)+1 个星号; 换行; ++i;}
将输出若干个空格/星号等写成代码,得到了下面的代码
//参考解答一#include <iostream>using namespace std;int main( ){ int i,j; i=1; while(i<=6) //需要输出6行 { //输出第i行 for(j=1; j<=i-1; ++j) cout<<" "; for(j=1; j<=2*(6-i)+1; ++j) cout<<"*"; cout<<endl; ++i; } return 0;}
下面给出程序的另一种写法,其中引入了两个变化:(1)三角的行数可以由变量n控制;(2)最外层控制输出n行的循环改为了for循环,实际上,内层的循环用wh