黑马程序员技术交流社区

标题: 打印出杨辉三角形 [打印本页]

作者: Tony鱼先森    时间: 2015-4-18 22:29
标题: 打印出杨辉三角形
本帖最后由 Tony鱼先森 于 2015-4-18 23:25 编辑

打印一个杨辉三角形,只要输出10行就好了!各位坛友有人会吗?
我被难在了,如何处理每一行结尾的那个1上,不知道怎么处理,大家给点思路意见。

作者: wslinke    时间: 2015-4-18 23:20
  1. #include <stdio.h>
  2. #define kLines 10  //行数
  3. int main(int argc, const char * argv[]) {
  4.    
  5.     //定义两个int数组,preLine存放上一行数据,currentLine存放当前行数据
  6.    
  7.     int preLine[kLines]={1},currentLine[kLines]={0};
  8.    
  9.     //row代表行号,输出10行
  10.     for (int row = 1; row <= kLines; row++) {
  11.         
  12.         //输出每行第一个数字之前的空格
  13.         for (int k = 0; k < kLines-row; k++) {
  14.             printf("  "); //如果行数多了,数字大了就可以调整这里
  15.         }
  16.         
  17.         //输出当前行的数字,第row行有row个数字
  18.         for (int j = 0; j < row; j++) {
  19.             //将第一个数字和最后一个数字设置为1
  20.             if(j == 0 || j == row-1)
  21.             {
  22.                 currentLine[j] = 1;
  23.             }
  24.             else //将除了首尾以外的第j个数字,赋值为上一行第j-1个,第j个数字的和
  25.                 currentLine[j] = preLine[j-1]+preLine[j];
  26.             //打印这个数字
  27.             printf("%-4d",currentLine[j]); //如果行数多了,数字大了就可以调整这里
  28.         }
  29.         
  30.         //输出完一行,将这行数据保存到preLine数组,以便下一行计算
  31.         for (int j = 0; j < row; j++) {
  32.             preLine[j] = currentLine[j];
  33.         }
  34.         
  35.         //每打印一行数字后换行
  36.         printf("\n");
  37.     }
  38.     return 0;
  39. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2