网站导航:首页 -> 软件水平考试 -> 软件水平考试指导 -> 程序员考试补课笔记-第五天

程序员考试补课笔记-第五天

今天是离散学礼的最后一天了,我的成绩嘛,当然也不会高得去那里了,还很有可能第一呢(倒数啊)。都怪自己不好,不过也不能全怪。因为学校本来的电脑课程也不少了,可就是全部都在教图形方面呢,什么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了,好了,那么++递增和- -递减都是同一性质的。不过要注意的是这两个递增递减运算符都是要变量才行的,不可以和常量运算。