CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

奇怪的逻辑

楼主huolong1312(耶稣也上网)2004-05-01 22:19:51 在 C/C++ / C语言 提问

我已经把C的语法和算法学的不错了,可是一到我自己编的时候,就什么语法算法  
  都不忘了,特别是已经想好怎么编的题一到上机就无重下手  
  还有一个简单问题,杨辉三角用C编程的规律在哪,我一直编可是总是无法突破它  
  的规律 问题点数:0、回复次数:6Top

1 楼zhouqingyuan(浪帆)回复于 2004-05-01 22:40:23 得分 0

没有什么规律,简单点就是直接用数组先把能确定的填上,然后其他的从上到下的做加法  
  填上就可以了。  
  多看看别人是怎么做的,慢慢就知道了。Top

2 楼bm1408(向va_list学习~不用VC好多年~)回复于 2004-05-01 22:49:31 得分 0

杨辉三角是(a+b)^n次方的展开式后各项的系数!  
     
   
  (a+b)^0               1  
  (a+b)^1               1     1  
   
  .......  
  规律就是:  
  各行第一个数是1  
  各行的最后一个数是1  
  从第3行起,除上面指出的第一个数和最后一个数外,其余各数是上一行同列和前一列的两个数之和!Top

3 楼bm1408(向va_list学习~不用VC好多年~)回复于 2004-05-01 22:50:11 得分 0

呵呵!  
  规律就在上面了!Top

4 楼allsword(长剑)回复于 2004-05-01 22:52:43 得分 0

要想找到感觉,  
  1,要是在心中的不是很清晰的,  
  画个流程吧,  
  其实就是有很清晰的路子画一个也不是个坏事。  
  2,要大量做有趣的练习,多想,多练,  
  很快就会有感觉。  
  Top

5 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-05-01 22:56:32 得分 0

一上机就无重下手..那就是实战太少了...多自个儿写写..Top

6 楼danky()回复于 2004-05-01 23:42:30 得分 0

给你一个代码吧,虽然是用C++写的,但相信你能看得懂的,有些代码和函数不是一定需要的,只是为了显示的美观而增加的,自己看看吧,一点都不难的:  
   
  #include   <iostream.h>  
   
  //计算一个数所占用的宽度  
  int   dataLen(int   data)  
  {  
  int   len   =   0;  
  while   (data   >   0)  
  {  
  data   /=   10;  
  len++;  
  }  
  return   len;  
  }  
   
  //控制每个输出的数的宽度  
  void   cortrolLen(int   data,   int   max)  
  {  
  int   len   =   0;  
  len   =   dataLen(max)   -   dataLen(data);  
  while   (len   !=   0)  
  {  
  cout   <<"   ";  
  len--;  
  }  
  }  
   
  //根据参数(行数)输出杨辉三角的数据  
  void   yangHuiSanJiao(int   linage)  
  {  
  int   i,   j,   k; //循环计数器  
  int   digit   =   1,   max   =   1; //保存最大的数,用于控制输出的格式  
  //生成动态二维数组  
  typedef   int*   dynamicArray;  
  int   **   p_YanHuiSanJiao   =   new   dynamicArray[linage];  
  for   (i=0;   i<linage;   i++)  
  {  
  p_YanHuiSanJiao[i]   =   new   int[i+1];  
  }  
   
  //写入杨辉三角的数据  
  for   (i=0;   i<linage;   i++)  
  for   (j=0;   j<=i;   j++)  
  if   (j==0   ||   j==i)  
  p_YanHuiSanJiao[i][j]   =   1;  
  else   p_YanHuiSanJiao[i][j]   =   p_YanHuiSanJiao[i-1][j-1]   +   p_YanHuiSanJiao[i-1][j];  
   
  //找出最大的数  
  for   (i=linage-1,j=0;   j<linage;   j++)  
  if   (p_YanHuiSanJiao[i][j]   >   max)  
  max   =   p_YanHuiSanJiao[i][j];  
  digit   =   dataLen(max);  
   
  //输出杨辉三角  
  for   (i=0;   i<linage;   i++)  
  {  
  //控制数据前面的空格输出  
  for   (j=0;   j<(linage-i)*digit-(digit-1);   j++)  
  cout   <<"   ";  
  for   (j=0;   j<=i;   j++)  
  {  
  if   (j   !=   0)  
  cortrolLen(p_YanHuiSanJiao[i][j],   max);  
  cout   <<p_YanHuiSanJiao[i][j];  
  //控制数据间的空格输出  
  for   (k=0;   k<digit;   k++)  
  cout   <<"   ";  
  }  
  cout   <<endl;  
  }  
  }  
   
  void   main()  
  {  
  int   n;  
  do  
  {  
  cout   <<"请输入一个整数,以确定要输出杨辉三角的行数,输入0为退出:";  
  cin   >>n;  
  if   (n   >   0)  
  yangHuiSanJiao(n);  
  }  
  while   (n   !=0);  
  }  
  Top

相关问题

  • 一个奇怪的逻辑错误
  • asp SQL逻辑查询问题,问题奇怪,高手进,在线等!急!
  • 奇怪,奇怪
  • 奇怪,奇怪!
  • 奇怪奇怪???
  • 奇怪!奇怪
  • 奇怪奇怪...........?????...........
  • 不合逻辑?
  • 逻辑问题
  • 逻辑问题

关键词

  • a+b
  • 个数
  • datalen
  • 规律
  • len
  • 就是
  • data

得分解答快速导航

  • 帖主:huolong1312

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo