程序员补课笔记(5)

原创 2004年08月24日 01:17:00
今天是离散学礼的最后一天了,我的成绩嘛,当然也不会高得去那里了,还很有可能第一呢(倒数啊)。都怪自己不好,不过也不能全怪。因为学校本来的电脑课程也不少了,可就是全部都在教图形方面呢,什么PS 、CW都要我们编程班的去学,真有点不爽。
  好了,也不说太多自己学校的羞事了。那么下面我们就开始来学习今天的知识吧,很多朋友都是我整天在打字,可我自己觉得打一篇这些也不是浪费很多时间,而且收益的更多(早上听完,晚上复习)。故语有云"温故知新",我觉得这句特别有道理的,因为通常我在看书里也看不到老师在课堂里向我们提出的问题。好了好了,我还是赶紧说说今天的学习吧。昨天老师布置的我们一道答,我昨天都给忙了做,而是今天突然想起才冲冲的赶着做,是这样的一道题:
给一个不多于5位的正整数,要求:1,这个数有几位2,打印每一位的数,3逆序打印,比如321 输出 123。
好在这答也不难,用了一会儿时间就做完了。
main()
{
  int n; int num;
  int i=0,a[5];
  printf("请输入不大于5位的正整数");
  scanf("%d",&num);
  do
  {
    do[i] =num % 10;
    num /=10;
    i++;
  }while(num!=0);
  n=I;
  printf("LEN%d",n);
  for(i=n-1;i>=0;i--)
    printf("%d",a[ I ]);
  for(i=0;i<n;i++)
    printf("%d",a[ I ]);
}
  做这题时我也用到了昨天老师教的画图方法作了验算,不过还是要上机求正否,这样一来可以锻练一下编写程序。我们大家都各有各的方法,有些是很长(用Switch语句呢),我也不知道他怎么想的了,不过不同人有不同思想是正确的,编程这玩意没有完全统一的答案的。那么你们想想你们有什么方法做呢,好吧,就给五分钟你们做做吧。……好了,时间到了,下面我再说说我的另一位同学做的方法吧,他是用字符数组的,也很简单方便可以实现。你们做的怎么了?如果有好的方法也可以大家交流啊,因为我写这些都是为了大家(也为了自己)。大家应该都看得明白我的程序吧,因为我的思想就是这么单纯。
老师说完了昨天的作业后就开始说今天要讲的课程了。今天的主题是循环语句,其实C语言里也只是这么几条循环语句吗?相比QB来说真的可以算是见大场面了,因为QB里单是循环语句已经有七八种之种,至于有那些我也记不太清了。那么下面讲讲C语言的好了。C语言的循环语句一共有三种,先说说比较简单的前两种吧!
While ( 条件 ) { 语句;} 和 do { 语句;}
               while ( 条件 );

  这里我想重复一下老师给我们说的一个笑话,就是有一个小女孩问妈妈拿糖的小故事。有一个很乖的小女孩总是先问妈妈可不可以吃糖,如果得么批准了就拿一粒来吃。可是有一次她就很拿着一粒吃着了,跟着才问妈妈我可不可吃糖啊,如果可以当然就是继续可以吃了,否则就不准了,不过已经有一粒在口了。这个刚好可以比喻这两个循环语句,第一个循环语句是先当条件真才可以继续下去,否则退出。而第二个呢,就是直运行里面的程序先,跟着才到条件里看是否可以再继续运行多一次。好了这两个比较简单的就看看C语言里特有的一个for循环语句,这个循环比较特别,如第五天图一
它的结构也比较特别,而且里面三个表达式是非常灵活的。这里随便给出一个程序让大家看看:
int i=0;
for(;;) if(i++>10) break;
printf("%d",i);
  这说这里i是多少呢?这里就关系到这个运算符了++递增运算符,可以有两种方式,一种是i++就像上面的那样,至于另一种就是++I,这里的答案是前者等于12,而后者就等于11。这里全是因为++递增的两个方式所至,那么我们要好好掌握一下这个,你自己试试动手上机编一下。另一个程序好让看出这个递增运算符的:
int i=0;
if (i++) printf("a"); /* 如果这里为真的就输出a */
else printf("b"); /*否则就是输出b */
  自己试试看,是不是很明显可以知道这个递增符的原理呢,这里说一下吧,其实i++这个呢就是先那i比较后才运算++的,所以很自然就是0那么结果当然就是输出b了,则那个++i就是先把i加1才比较,那么真就输出a了,好了,那么++递增和- -递减都是同一性质的。不过要注意的是这两个递增递减运算符都是要变量才行的,不可以和常量运算。
  好了,说完了循环语句当然就是要懂得去运用在编程里了啊!所以老师马上出了一道题让我们想想,不过相信有些人都是研究过的了,就是"魔方阵",可是老师说虽然这个魔方阵虽然有直接的算法可以运算出来,但是要让我们思考用循环做这题,利用计算机的能力来完成,但看到要排列这么多的数,循环也更不要说要很多了,所以我根本没法想下去了(开始头晕起来)。最后还是没有一个能做出,只好听老师说了,不过老师也没有完全说完,只是给了我们一个结构,如第五天图二让我们自己有兴趣就去完成它吧,我对数学这东西最没有FEEL的了。
  好了,接着继续第二题,也是一个排列组合的问题,你们手头上应该都有老潭的《C程序语言第二版》了,那么请大家翻翻书到第121页,6.15题,这题就是排列组合的题目了。这其实也是有一个规律可以找到的,不过不是我们找到的而是老师给我们说,今天这堂课真的有太多的难题了,至少对于我来说。下面我也没有什么好插嘴的了,只好示出老师的方法吧,如第五天图三
程序也在下。
char xyz[]=['X','Y',"Z'};
int I,j,k;

for(i=0;i<3;i++)
  for(j=0;j<3;j++)
    if(j==i0 continue;
    for(k=0;k<3;k++)
      if(k==I || k==j) continue;
      printf("A-%c/n",xyz[i]);
      prihtf("B-%c/n",xyz[j]);
      prihtf("C-%c/n",xyz[k]);

让大家自己看明白了。好了,今天我的头也特别的晕,肩膀也特别的酸。不过我还是要努力的!

 

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1525

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1498

给程序员推荐一些提高工作效率的工具

http://www.itjhwd.com/gcxytjyg/ 给程序员推荐一些提高工作效率的工具 一些高效的软件可以给我带来高效的工作效率。下面一些工具推荐给大家。欢迎补充 一、Xshe...
  • zdy0_2004
  • zdy0_2004
  • 2014年10月28日 22:08
  • 1175

程序员考试补课笔记 C资源

  • 2009年09月07日 14:00
  • 47KB
  • 下载

程序员考试补课笔记(doc格式)

  • 2008年11月02日 18:01
  • 175KB
  • 下载

程序员考试补课笔记

  • 2008年03月23日 21:48
  • 40KB
  • 下载

超强的C语言补课笔记

  • 2008年09月13日 22:51
  • 233KB
  • 下载

程序员考试补课笔记,程序员考试补课笔记

  • 2009年10月26日 17:13
  • 47KB
  • 下载

黑马程序员---学习笔记5:二维数组

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 二维数组: 可以看作是一个特殊的一维数组,这个一维数组的每一个元素又是一个一维数组 定义:...
  • daima_java
  • daima_java
  • 2015年08月19日 19:50
  • 201

java特种兵读书笔记(3-5)——java程序员的OS之OOM

HeapSize OOM public static void main(String[] args) { List list = Lists.newArrayList(); while...
  • xxcupid
  • xxcupid
  • 2016年01月13日 16:19
  • 341
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序员补课笔记(5)
举报原因:
原因补充:

(最多只允许输入30个字)