for循环输出图形
2018-02-09 11:26
337 查看
编一程序显示如下图案:
____*
___***
__*****
_*******
*********
程序1:
#include
<iostream.h>
void main
{cout<<"____"<<"*";cout<<endl;
cout<<"___"<<"***";cout<<endl;
cout<<"__"<<"*****";cout<<endl;
cout<<"_"<<"*******";cout<<endl;
cout<<"*********";cout<<endl;
}
???
程序算法分析: 选用for循环
for ( i=1;
i<=5; i++ ) // 控制行数
{
//有了这个外壳后,中间每一行可用for语句来控制空格数和星号数。
cout<<endl; // 控制换行
}
关键问题: 如何实现控制 ?
分析图案得:
行号I 空格数K
星号数J
1 4 1 (初始行)
2 3 3
3 2 5
4 1 7
5 0 9 (结束行)
观察:空格数和星号数分别与行号存在一定的线性关系。
空格数: 设空格数为 k , 有 k <= 5-i ; i为行号
星号数: 设星号数为 j , 有 j <= 2*i –1;
程序2:
#include
<iostream.h>
void main()
{ int i, j, k ;
for ( i=1; i<=5; i++ ) // 控制行数
{
for ( k=1; k<=5-i; k++ ) cout <<" " ; // 输出空格数
for ( j=1; j<=2*i-1; j++ ) cout << "*" ;
// 输出星号数
cout<<endl;
}
}
程序3:( 通用程序,输出n 行 )
结论:1、存储结构: 用3个变量分别控制行号、输出空格数、输出星号数;
2、利用了3个变量之间的线性关系;
思考:编写一函数,函数的功能是实现通用程序输出由参数给定任意字符组成的n (参数给定)行图型。
递归法
#include <stdio.h>
using namespace std;
void count(int p, int t) {
int i;
if (p <= 0) return;
for (i = 1; i <= p; i++) cout << " ";
for (i = 1; i <= t; i++) cout << "*";
cout << endl;
count(--p, t+=2);
}
int main() {
count(5, 1);
return 0;
}
____*
___***
__*****
_*******
*********
程序1:
#include
<iostream.h>
void main
{cout<<"____"<<"*";cout<<endl;
cout<<"___"<<"***";cout<<endl;
cout<<"__"<<"*****";cout<<endl;
cout<<"_"<<"*******";cout<<endl;
cout<<"*********";cout<<endl;
}
???
程序算法分析: 选用for循环
for ( i=1;
i<=5; i++ ) // 控制行数
{
//有了这个外壳后,中间每一行可用for语句来控制空格数和星号数。
cout<<endl; // 控制换行
}
关键问题: 如何实现控制 ?
分析图案得:
行号I 空格数K
星号数J
1 4 1 (初始行)
2 3 3
3 2 5
4 1 7
5 0 9 (结束行)
观察:空格数和星号数分别与行号存在一定的线性关系。
空格数: 设空格数为 k , 有 k <= 5-i ; i为行号
星号数: 设星号数为 j , 有 j <= 2*i –1;
程序2:
#include
<iostream.h>
void main()
{ int i, j, k ;
for ( i=1; i<=5; i++ ) // 控制行数
{
for ( k=1; k<=5-i; k++ ) cout <<" " ; // 输出空格数
for ( j=1; j<=2*i-1; j++ ) cout << "*" ;
// 输出星号数
cout<<endl;
}
}
程序3:( 通用程序,输出n 行 )
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <iostream.h> void main() { int i, j, k ,n; cin >> n; for ( i=1; i<=n; i++ ) // 控制行数 { for ( k=1; k <= n - i; k++ ) cout <<" " ; // 输出空格数 for ( j=1; j <= 2*i - 1; j++ ) cout << "*" ; // 输出星号数 cout<<endl; } } |
结论:1、存储结构: 用3个变量分别控制行号、输出空格数、输出星号数;
2、利用了3个变量之间的线性关系;
思考:编写一函数,函数的功能是实现通用程序输出由参数给定任意字符组成的n (参数给定)行图型。
递归法
#include <stdio.h>
using namespace std;
void count(int p, int t) {
int i;
if (p <= 0) return;
for (i = 1; i <= p; i++) cout << " ";
for (i = 1; i <= t; i++) cout << "*";
cout << endl;
count(--p, t+=2);
}
int main() {
count(5, 1);
return 0;
}
相关文章推荐
- for循环实现各种图形输出
- 编程题:用for循环嵌套,输出下列图形:
- 使用两个for循环输出下面图形
- 用for循环打印输出数据三角形图形
- IO-08. 输出倒三角图案(for循环写的不符合,用笨笨的println,%>_<%)
- js中for定时输出循环输出某一数组
- 循环输出图形
- Javafor循环输出菱形
- JAVA用for循环输出1!,2!,3!,4!,5!以及它们的和。
- Java只用一套嵌套for循环输出菱形
- 用 while 循环编程,输出 10 到 0 递减的自然数。然后用 for 循环重写该程序
- Python3基础 list range与for循环配合输出等差数列
- c:forTokens标签循环输出
- 使用FOR循环语句在屏幕上输出一个由星号组成的直角三角形
- Java第三章习题3-4(for循环输出俄文字母表)
- 【java】for循环输出数字金字塔
- 循环输出数字图形
- 微信小程序之wx:for循环输出及require引入外部数据
- [iOS学习]for循环讲解举例1-100输出7的倍数
- 在el-table的某一行中循环输出 scope.row和v-for