论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> 复习资料 >> IT正文
程序员考试补课笔记-第四天
 作者:佚名     2007-3-15 14:58:30        来源:不详  浏览次数:

    真的不知道为什么,我所有WORD的日期都变了,可是是WORD的宏病毒吧。但是为什么感染上的呢?这下可真奇怪了,我没有用过宏啊。算了,现在没有时间去理会它了,我要抓紧时间写完这篇补习日记。
今天的课程里终于到了重点了,就是算法,因为才刚开始,先从容易的排序算法开始说,抄了一道题目让我们做,如下:

  已有一个已排序的数组,今输入一个数,要求按原来的排序规律将它插入数组中。
看到了这个题目我觉得自己比较有把握,很快的就写了出来,可是谁知道我的程序有一个至命的地方,刚给老师看的时候还得意洋洋,可是看完指出我的错来时真的不好受,既然都错了,就把我所做的那个答案写下来吧,也好让大家比较比较。
#define n 8
main()
{
  int a[n];
  int i,j,t,s;
  for(i=1;i<=7;i++)
    a[i-1]=i*10;
  for ( i=0;i < 7;i--)
    if ( a[ i ] < a[ i+1 ] )
    { s=a[ i ] ; a[ i ] = a[ i+1] ; a[ i+1] = s; }
    for(i=0;i<7;i++)
      printf("%d,a[ i ]);
}
  看上去真的对的,没有错误,可能如果不细心都走眼的了。老师就是有这种本领可以看出来,让我慢慢道来我的错误吧,其实就是错在那一个最后没有赋值的元素,因为没有初始传值,随机生成的数可能很大,也可能很少,不过如果刚好小于插入的数话,那么就不再是正确的排序了。好了,说了我的错让我们看一个正确的程序吧

#define N 8
main()
{
  int a[N]={20,30,40,50,60,70,80};
  int n,i;
  for(i=N-1;i>=0;i--)
  {
    if(n<a[i]) a[i+1]=a[i];
    else break;
  }
  a[i+1]=n;
}
  这里就是一个比较好的排序算法了,在讲这些排序的时候老师画了一个图,如第四天图一这个图可以方便的表示出当时的排序情况,排起序来更清晰了。不过更重要的一点就是不排让人只单独看源程序那样头晕,根本不知道这是怎么一回事。因为我也是,自己编这个程序的时候跟着看完,看得模模糊糊的,所以我推荐大家也学一学这种方法。
  说到排序,我们又教我们一种新的排序方法,就是冒泡排序法了。记得以前我学QB里也学过,不过今天听着老师说,自己动着手画图来看,真的变得清晰多了。说冒泡排序法其实也可以叫左下沉排序法,因为是按程序的两个循环来决定,如果是按从底到顶当然就是冒泡啦,相反从顶到底就是下沉了。显下两个程序:
int n=6,i,j;
for ( i=n-1; i > 0; i--)
  for(j=0; j < i; j++)
    if(a[j]>a[j+1] { 交换 };
以上的是冒泡法
int n=6,i,j;
for ( i=0; i < n; i++)
  for(j=n-1; j > i; j--)
    if(a[j]<a[j-1] { 交换 };
这就是下沉了。
  我们今天基本上全都在练习这个排序了,快到放学了,可是老师还是把握好时间,真的一点都不浪费啊,而且还拖了半个钟头堂。唉~!有时候我觉得他人好,好时候真的不好。可是怎么说呢,他至终都是我们的老师。那么他拖了我们半个钟就是为了说完C语言里条件语句,不过说真的还是学到了一些东西。
  C语言里条件语句也有好几种形式,用条件运算符 ? : ,基本的if语句,还有就是switch语句,至于最灵活都是答件运算符 ? : , 而且还是C语言里唯一的三目运算符了。为什么这么灵活,因为他的参数是表达式,C语言最灵活也就是表达式了,那么它能不灵活吗!这里给出一个源程序:
int a=5,b=10,c=8;
if(a>b)
if(a>c)printf("a";
else if(b>c)printf("b";
else printf("c";
  这么一条源程序是否让你看得不舒服呢,这就是C语言的另一个特点啊,你知道这条程序的答案吗?不过其实也不难,程序也很短嘛,就让我说出答案好了,答案不就是输出b嘛,道理很简单一看就出了,谁?谁?谁在这里搞乱,答案会是输出b 吗,笨!所以写你功夫还不到家嘛,下面让整理一下程序
int a=5,b=10,c=8;
if(a>b)
if(a>c)
  printf("a";
else
  if(b>c)printf("b";
else printf("c";
  这样看清楚了吗?答案就是什么都没有,因为一开始第一个if语句就不成立了,那里有答案出呢!这里也看出一个情况,所以我们要陪养好代码的格式,如果有良好的编码风格就有好的程序。还有我今日又明白了一样,想看看下面的if语句:
if if
else else if
if else if
else else if
if
else

  我原还以为这两个是不同的呢,在QB里的印象是两个不if语句呢。可是今天就给我弄明白了,大家也应该知道吧,可能就是我笨了。
  在C语言里swtich也和别的高级语言不同,你们有发现吗?现在看看第四天图二吧在这个图里清楚的说明了这个语句与其的不同之处,而且条件是用常量的,所以老师说给我们听他自己也不怎么喜欢用这个swtich语句。如果用懂了这个条件运算符? : 还真的挺方便的,这个也是可以无限嵌套的,这里不多说了,让自己慢慢体会研究。

责任编辑:lss
  相关新闻
程序员考试:数据结构笔记
2006年上半年《程序员》试题分析
2005年下半年程序员考试试题结构分析
为什么要学习Java,成为Java程序员
思科证书到期了怎么办—再认证程序介绍
经典的C程序案例
程序员考试补课笔记-第九天
2006程序员第一章系统基础知识[讲义]
2006年软考程序员数据结构复习笔记
程序员考试补课笔记-第六天
为什么要学习Java,成为Java程序员
C++程序设计从零开始之何谓
信息系统管理工程师、信息系统运行管理员考试说明
由“电脑盲”成为高级程序员的语文教师
程序员考试补课笔记-第一天
程序员考试补课笔记-第三天
程序员考试补课笔记-第二天
程序员考试补课笔记-第七天
程序员考试补课笔记-第六天
程序员考试补课笔记-第八天
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号