标题:[建议]程序员考试补课笔记
只看楼主
风中情子
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2005-1-11
 问题点数:0 回复次数:0 
[建议]程序员考试补课笔记
今天是离散学礼的最后一天了,我的成绩嘛,当然也不会高得去那里了,还很有可能第一呢(倒数啊)。都怪自己不好,不过也不能全怪。因为学校本来的电脑课程也不少了,可就是全部都在教图形方面呢,什么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]); 让大家自己看明白了。
搜索更多相关主题的帖子: 程序员考试 笔记 
2005-02-23 08:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-12460-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023941 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved