打印三角形是C语言的经典例题,首先我们先看看效果图。
一、直角三角形
ok,现在从最简单的打印直角三角形开始。
通过以上效果图你会发现规律:
行数 | * 的个数 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
… | … |
n | n |
根据以上规律写出以下代码:
#include <stdio.h>
int main()
{
int i, j;
int LINE;
scanf("%d", &LINE);
for (i = 1; i <= LINE; i++)//直角三角形
{
for (j = 0; j < i; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
在代码中 i 对应的循环控制(外层循环)着行数,j 对应的循环(内层循环)控制着每一行中*的个数。
二、等边三角形
同样地,等边三角形也有规律。
行数 | 空格的个数 | * 的个数 |
---|---|---|
1 | n | 1 |
2 | n-1 | 3 |
3 | n-2 | 5 |
4 | n-3 | 7 |
… | … | … |
n | 1 | 2n+1 |
根据规律写出代码
#include <stdio.h>
int main()
{
int i, j;
int LINE;
scanf("%d", &LINE);
for (i = 0; i < LINE; i++)//等边三角形
{
for (j = 0; j < (LINE - i); j++)
{
printf(" ");
}
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
三、菱形
学会了等边三角形的打印,菱形自然也不难。菱形是由两个等腰三角形组成的。
#include <stdio.h>
int main()
{
int i, j;
int LINE;
scanf("%d", &LINE);
for (i = LINE - 2; i >= 0; i--)
{
for (j = 0; j < (LINE - i); j++)
{
printf(" ");
}
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
四、杨辉三角
规律:
- 每行最左边和最右边都是1
- 从第二行起,中间的每一个数是上一行里相邻两个数之和
- 第n行有n个数字
我们用二维数组表示杨辉三角中的数字,结合规律得到以下代码
#include <stdio.h>
#define MAX 10
int main()
{
int i, j;
int LINE;
int array[MAX][MAX] = { 0 };
scanf("%d", &LINE);
//cin >> LINE;
for (i = 0; i < LINE; i++)
{
array[i][0] = 1;
printf("%d ", array[i][0]);
//cout << array[i][0] << " ";
for (j = 1; j <= i; j++)
{
array[i][j] = array[i-1][j] + array[i-1][j - 1];
printf("%d ", array[i][j]);
//cout<<array[i][j]<<" ";
}
printf("\n");
//cout << endl;
}
return 0;
}