杨辉三角形编程与随机数去重排序实践

版权申诉
0 下载量 96 浏览量 更新于2024-08-26 收藏 221KB PDF 举报
在2021年11月25日的学习总结中,主要讨论了两个编程问题,一个是输出杨辉三角形,另一个是实现YRZ学长的随机数去重和排序功能。 首先,关于输出杨辉三角形,该问题要求编写一个C语言程序来打印前n行的三角形。杨辉三角是一种经典的数学图形,每一行的数字由上一行的相邻元素相加得到。程序的关键在于初始化数组,设置对角线和第一列的值为1,然后从第三行开始使用两层嵌套循环计算其他元素。通过`printf`函数以5位宽度输出数组中的每个元素,并在每行结束时换行。要改变输出的行数,只需修改数组的大小并将变量n替换为所需的行数。 下面是关键代码片段: ```c int a[20][20]; ... for(i=2;i<10;i++) // 从第3行开始处理 { for(j=1;j<=i-1;j++) { a[i][j] = a[i-1][j-1] + a[i-1][j]; } } ``` 其次,YRZ学长需要生成一组不重复的随机数并进行排序。这个问题涉及两个步骤:生成随机数列表和去重并排序。为实现这一目标,创建了一个长度为1100的数组`a[]`用于存储随机数,初始值都设为0。输入部分包含随机数的数量N以及这组随机数。输出部分包括不重复数的数量M以及按升序排列的不重复数列表。 核心代码段如下: ```c inta[1100] = {0}; ... for(i = 0; i < N; i++) // 读取输入的随机数 { scanf("%d", &a[i]); if (a[i] > 1000 || a[i] <= 0) break; // 检查范围 } // 去重和排序 sort(a, a + N); // 使用内置排序函数或自定义排序算法 int count = unique(a, a+N); // 计算不重复元素数量 printf("%d\n", count); printf("%d ", a[0]); // 输出第一个不重复数 for(int i = 1; i < count; i++) { printf("%d ", a[i]); } printf("\n"); ``` 总结来说,这份学习总结涵盖了C语言编程基础,包括数组操作、循环结构以及排序算法的应用,有助于提升编程实践能力和理解数学规律在编程中的应用。