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

   字符数字转为整数数值(字符可以任意:比如"342A")遇到其它否数字取前数。

我所写的程序如下,自认为写得不错:

#define N 10;

int catio(const char *str) /*const 的作用是常数,所以这里的地址不会返回到实参里*/

{

  int num[N];

  int i=0;j=1,n=0;

  for(;*str++;i++)

  {

    if(*str<48 || *str>57)

    break; /*判断是否数字数值*/

    num[i]=*str-48;

  } 

  for(i-=1;i>=0;i--)

  {

    n+=num[i]*j;

    j*=10; 

  }

return n;

}

你们说是不是比较简单呢?现在看不出等看完以下的另一个程序先断定吧。如下:

long catio(char c[]);

{

  int n,d;

  char *q,*p;

  long e=1,s=0;

  for(q=p=c,n=0;*p!='\0' && *p>='0' && *p<='9';p++,n++,e*=10);

  while(n>0)

  {

  d=*q++;

  switch(d)

  {

  case 48: d=0;break; /*太长了,略*/

     :

     :

  case 57: d=9;break;

  }

  s+=d*(e/=10);

  n--;

}

return (s);

}

  现在比较来看看,不过虽然这条程序是比我那个复杂,但是也有他的思路和可取之处。像在那个for循环了,一条命令带过很方便也很简洁。其实我们可以继续改造这个程序,我们跟着老师的思路一步一步的把它进化,现在看看如下:

long catio(char c[]);

{

  int n,d;

  char *q,*p;

  long e=1,s=0;

  for(q=p=c,n=0;*p && *p>='0' && *p<='9';p++,n++,e*=10);

  while(n>0)

  {

    d=*q++-'0';

    s+=d*(e/=10);

    n--;

  }

  return (s);

}

  这样是不是更简化了,那么还可以再简化下去吗?前面的我们是可以做出来啊,当是老师说还可以更简单,我们都只好怀着期待的心情去听了。他一步一步的说出来,第一就是在s+d*(e/10)这里可以变为另一种形式,s=s*10+d,如果按照这样又可以去掉一个多余的变量了,变量e就没有了。接下来的更不可意议了,我不知道怎么说,看看程序先吧。

long catio(char *c);

{

  long s=0;

  for(;*p && *c>='0' && *c<='9';s=s*10+*c++-'0');

  return (s);

}

  大家看到了吗?原来这么长的程序可以一再简化到这个地步,这就是C语言的灵活了(我好像已经说了好几遍了,真的没有办法,不得不赞叹)。

  今天就是这么一题,可真的有意外惊喜呢!好了,现在不写了,还有十道练习题等着我去做呢,大家也要努力喔!

责任编辑: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号