请问如何用数组解决杨辉三角形有关的问题(定义、计算)
比如以下实例:
首先,提示用户:“您想计算杨辉三角形的行数(1~20):”,并将用户输入的数值存放到变量n中。
然后,判断用户输入数据是否正确,如果不正确则输出错误信息并终止程序运行。
最后,计算并输出指定行数的杨辉三角形,每个数值输出域宽为6,左对齐。
#include <stdio.h>
int main() {
int n, i, j;
int arr[20][20] = {0};
printf("您想计算杨辉三角形的行数(1~20):");
scanf("%d", &n);
if (n < 1 || n > 20) {
printf("错误:行数范围应在1~20之间!");
return 0;
}
// 初始化第一列为1
for (i = 0; i < n; i++) {
arr[i][0] = 1;
}
// 计算其他行和列
for (i = 1; i < n; i++) {
for (j = 1; j <= i; j++) {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
// 输出杨辉三角形
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
printf("%-6d", arr[i][j]);
}
printf("\n");
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:文字:
流程图:
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c;
float area;
double s;
printf("请输入三角形的三条边长 :");
scanf_s("%d,%d,%d", &a, &b, &c);
s = (a + b + c) / 2.0;
if (a + b <= c || b + c <= a || a + c <= b)
printf("不构成三角形\n");
else
{
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形的面积是: % f\n", area);
}
return 0;
}
执行结果: