c语言题目-打印杨辉三角形的前十行

题目

打印出杨辉三角形的前十行
第1行: 1
第2行: 1 1
第3行: 1 2 1
第4行: 1 3 3 1
第5行: 1 4 6 4 1
第6行: 1 5 10 10 5 1
第7行: 1 6 15 20 15 6 1
第8行: 1 7 21 35 35 21 7 1
第9行: 1 8 28 56 70 56 28 8 1
第10行: 1 9 36 84 126 126 84 36 9 1

我的代码

#include<stdio.h>

int main(){
	int yangh[10][11];
	int i,j;
	for(i=0;i<10;i++){
		for(j=0;j<11;j++){
			yangh[i][j] = 0;
		}
	}
    for(i=0;i<10;i++){
			yangh[i][0] = 1;//先确保每一行的开头和末尾都是1
			yangh[i][i] = 1;
		for(j=0;j<10;j++){
			if(i>0){
				yangh[i][j+1] = yangh[i-1][j] + yangh[i-1][j+1];//发现每一行的数值除了开头和末尾就是上一行的数值两两相加
			}
		}
	}
	for(i=0;i<10;i++){
		for(j=0;j<11;j++){
			if(j<i+1){ //这里还可以直接在for循环里改,j<i之类的这种
				printf("%d\t",yangh[i][j]);
			}
		}
		printf("\n");
	}
	return 0;
}

改进代码

#include <stdio.h>
 
int main(int argc, char *argv[])
{
        int a[10][10] = {{0}};
        int i, j;
 
        for (i = 0; i < 10; i++) {
                a[i][0] = 1;
                for (j = 1; j <= i; j++)
                        a[i][j] = a[i-1][j-1] + a[i-1][j];
        }
 
        for (i = 0; i < 10; i++)  {
                for (j = 0; j <= i; j++)
                        printf("%-8d ", a[i][j]);
                putchar('\n');
        }
 
        return 0;
}

输出结果

1	
1	1	
1	2	1	
1	3	3	1	
1	4	6	4	1	
1	5	10	10	5	1	
1	6	15	20	15	6	1	
1	7	21	35	35	21	7	1	
1	8	28	56	70	56	28	8	1
1	9	36	84	126	126	84	36	9 1	

问题和解决

1、编写过程中由于没有在一开始就初始化,所以出现了很多随机数,在这中间可能是出现了垃圾值,导致我第一行一直输出两个1(实际上是一个1):
在这里插入图片描述
后面初始化并改写输出格式以后结果就正确了。

2、在for循环时,要学会更改循环结束的位置以简化循环过程,比如我这次写的代码里:

for(j=0;j<10;j++){
			if(i>0){
				yangh[i][j+1] = yangh[i-1][j] + yangh[i-1][j+1];//发现每一行的数值除了开头和末尾就是上一行的数值两两相加
			}

其实这里的j<10可以改为j<i,因为i以后的位置不需要再进行赋值。

3、在编写输出格式时可以用上类似于%-8d这种让输出结果变得美观的符号,%-8d 中的 - 表示左对齐,8 表示输出的最小宽度为 8 个字符(包括数字和可能的负号),如果数字不足 8 位,会在右侧填充空白字符使其达到宽度。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是杨辉三角形的10: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 你可以使用循环和列表来打印这个三角形。 ### 回答2: 杨辉三角形是中国古代数学家杨辉创造的,它的形状像一个等腰三角形,由数字构成,具有一些特殊性质。下面我将打印10杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 每一的数字都是通过上一的数字计算得到的。首先,每的第一个数字和最后一个数字都是1。中间的数字通过上一两个数字的和得到,例如第三的2是第二的第一个数字1和第二个数字1相加得到的。 要打印杨辉三角形,首先要定义一个二维数组来存储每一的数字。然后使用两个嵌套循环来计算并打印每一的数字。 具体的实现方法如下所示: ```python # 定义一个二维数组 yanghui = [[0] * 10 for i in range(10)] # 遍历数组,计算每一的数字并打印 for i in range(10): # 每一的第一个数字和最后一个数字都是1 yanghui[i][0] = 1 yanghui[i][i] = 1 # 计算中间的数字 for j in range(1, i): yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j] # 打印数字,使用空格将数字分隔开 for j in range(i+1): print(yanghui[i][j], end=' ') # 换 print() ``` 这样就可以打印一个10杨辉三角形了。每一的数字使用空格分隔开,方便观察。 ### 回答3: 这里是用 Python 代码实现打印10杨辉三角形: ```python def print_pascal_triangle(n): triangle = [] for i in range(n): row = [1] if i > 0: prev_row = triangle[i-1] for j in range(len(prev_row)-1): row.append(prev_row[j] + prev_row[j+1]) row.append(1) triangle.append(row) # 打印杨辉三角形 for i in range(n): spaces = " " * (n-i-1) # 添加置空格 print(spaces, end="") for j in range(i+1): print(triangle[i][j], end=" ") print() # 调用函数,打印10杨辉三角形 print_pascal_triangle(10) ``` 运上述代码,将会打印如下的杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 每一的数字之间用空格分隔,并且保持了对齐的格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值