A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Tony鱼先森 中级黑马   /  2015-4-18 22:29  /  1145 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Tony鱼先森 于 2015-4-18 23:25 编辑

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

2 个回复

正序浏览
  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. }
复制代码

点评

解决的非常好,感谢解答。  发表于 2015-4-18 23:24

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马