循环练习
如何在屏幕输入以下图案(两种基础方法)
功能分析
由题意知上半段和下半段对称
行数 | 星数 |
---|---|
1 | 1 |
2 | 3 |
3 | 5 |
4 | 7 |
5 | 9 |
6 | 11 |
7 | 13 |
8 | 11 |
9 | 9 |
10 | 7 |
11 | 5 |
12 | 3 |
13 | 1 |
从1~7逐渐递增 8~13逐渐递减
通过规律可以得到
令行数为i,星数为n
当递增时,满足n=i*2-1
达到最大值则与上面星数对称,满足每次减两行的趋势
在下面变量中,由j来表示变量
代码如下
函数调用法
#include<stdio.h>
#include<stdlib.h>
//创建函数
int star(int n) {
int i;
for (i = 1; i <n*2; i++) {
printf("*");
}
printf("\n\n");
return 0;
}
int main()
{
int i;
//创建变量j,在第八行开始递减时发挥作用
int j = 2;
for (i = 1; i < 14; i++) {
//前7行呈递增函数
if (i < 8) {
star(i);
}
//后呈现递减
else {
star(i - j);
j = j + 2;
}
}
system("pause");
return 0;
}
嵌套循环法
#include <stdio.h>
#include <stdlib.h>
int main()
{
for (int i = 0; i < 7; i++)
{
for (int j = 0; j< 2*i+1; j++)
{
printf("*");
}
printf("\n");
}
for (int i = 0; i <= 6; i++)
{
for (int j = 0; j < 11-2*i; j++)
{
printf("*");
}
printf("\n");
}
system("pause");
return 0;
}