1,题目:打印以下图案:
要求行数从终端输入。
输出三角形:
*
**
***
****
*****
思路:行数跟个数同步,但是要实现第几行有多少个,要用到双重for循环(外层循环一次,内层循环全部),即行是外循环,*个数是内循环。
当输入行数为3时,要求外部循环三次,内部循环依次为1,2,3。第一步定义外部循环i的初值0,终止条件i<=5,自增。第二步定义内部循环j的初值,终止条件,自增,可以看到*的个数跟行数有追随关系,因此终止条件j<=i,j++。最后打印加上换行。
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 0;
scanf("%d", &a);
for (int i = 0; i <=a; i++)
{
for (int j = 1; j<=i; j++)
{
printf("*");
}
printf("\n");
}
}
2.进阶版 打印菱形
*
**
***
****
*****
*****
****
***
**
*
思路:*菱形 在1的基础上,在下面把下半部分菱形打印出来即可。但是内部循环要变成两个,“ ”+*,步骤跟1一样,最后“ ”+*=行数,用c<=a-b表示出*的终止条件。
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 0;
scanf("%d", &a);
for (int i = 0; i < a; i++)
{
for (int j = 0; j <= i; j++)
{
printf("*");
}
printf("\n");
}
int x, y; // 定义x,y,分别为空格数,*
for (int i = 0; i <= a; i++)
{
for (x = 0; x <= i; x++)
{
printf(" ");
}
for (y = 0; y <= a - i; y++)
{
printf("*");
}
printf("\n");
}
return 0;
}