程序员考试考哪些东西|程序员考试补课笔记(6)
【shitiku.jxxyjl.com--计算机技术】
今天的整个课程只有这么的一道题,但是学到的东西确很多。下面给出这条题目:
字符数字转为整数数值(字符可以任意:比如"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语言的灵活了(我好像已经说了好几遍了,真的没有办法,不得不赞叹)。
今天就是这么一题,可真的有意外惊喜呢!好了,现在不写了,还有十道练习题等着我去做呢,大家也要努力喔!
相关试题
- 计算机二级vb语言程序设计考什么_二级VB语言程序设计全真标准预测试卷(1)
- [计算机软考程序员真题]计算机软考高级程序员模拟试题
- 软考网络工程师真题|软考网络工程师上午试题专练
- [程序设计(初级程序员级)]2001年度初级程序员级试题上
- 全国计算机软件水平考试考什么_全国计算机软件水平考试程序员考证例题
- 二级c语言程序设计考试大纲|二级C语言程序设计全真标准预测试卷(2)
- [2021年网络工程师考试答案]2005年网络工程师考试题目预测一
- 【软考网络工程师中级】软考网络工程师复习资料及练习题(七)
- 2021微软mcse考试条件|MCSE微软考试-NT Workstation 4.0试题(2)
- 2021年网络工程师考试答案_2005年网络工程师考试题目预测二
-
【2020年下半年网络工程师答案】2005年下半年网络工程师填空题总结详细阅读
第二章 1、 数据可定义为有意义的实体,它涉及到事物的存在形式,数据可分为______和_______两大类。 2、 信号是数据的电子或电磁编码。对应于模拟数据和数字数据,信号也可分为______和______两大类。 3、 通信过程中产生和发送信息的设备或计算机...
-
【微波网络基础试题】网络基础试题100例(附答案)详细阅读
1 “令牌环环存在冲突检测问题”的说法(B)A 正确 B 错误 2 网络中PC机与集线器相联所使用的网线接头类型为?AA RJ-45 B RJ-11 3 100BaseT中的“Base”的意义是?BA 基础传输 B 基带传输 4 下面哪种网络类型适合对网络进行集中管理?BA Peer-to-Peer...
-
[软考网络工程师真题]软考网络工程师模拟试题及答案(三)详细阅读
试题1从选择的答案中,选出应填入下面的叙述中_?_内的最确切的解答,把相应的编号写在答卷的对应栏内。在网络中使用的5类UTP作为传输介质,单段UTP的最长长度为_(1)_米,采用EIA568A布线标准时,可以达到的最高数据率是_(2)_Mbps STP与UTP的主要区别是_(3)_。一般而言,单模光...
-
【软考网络工程师中级】软考网络工程师复习资料及练习题(六)详细阅读
·多路复用技术能够提高传输系统利用率。常用的多路复用技术有_(1)_。将一条物理信道分成若干时间片,轮换的给多个信号使用,实现一条物理信道传输多个数字信号,这是_(2)_。将物理信道的总频带宽分割成若干个子信道,每个信道传输一路信号,这是_(3)_。在光纤中采用的多路复用技术是_(4)_,多路复用技...
-
[软考网络工程师模拟卷]2005软考网络工程师模拟试题及答案(二)详细阅读
数据通信中采取的纠错方式通常有两种,即丢弃重发和(1),丢弃重发方式中,当线路出错率较高时,其效率较高的控制协议时(2)。海明码的是属于(3)纠错方式中常用到的措施,这种方式一般适合于(4) 情况。在Go Back N ARQ协议中,若窗口大小用K位二进制表示,且分别WT和WR表示发送窗口大小和...
-
【软考网络工程师中级】软考网络工程师复习资料及练习题(五)详细阅读
第2章 计算机硬件基础知识复习题1单项选择题(1)中央处理器包括( )。A 运算器和控制器 B 累加器和控制器C 运算器和寄存器组 D 运算和控制系统答案:A。分析:中央处理器简称CPU,由运算器和控制器组成。(2)运算器的作用是( )。A 计算...
-
[软考网络工程师模拟卷]2005软考网络工程师模拟试题及答案(一)详细阅读
网络工程师模拟试题上(1) 若卫星信道的数据传输率为1Mbps,帧长为1000bit,利用卫星信道的两个站点从一方到另一方的传播时延为250ms。忽略确认帧长和处理时间则若帧的出错概率为0 1, 而假设应答帧不出现错误,当采用停等协议时,其协议效率是(1)。若采用连续ARQ协议,发送窗口Wt=7,接...
-
专升本模拟试题app_专升本微机原理模拟试题详细阅读
一、填空题(每空0 5分,共15分) 1 8086 CPU通过______________寄存器和______________寄存器能准确找到指令代码。 2 8086中地址 数据线分时复用,为保证总线周期内地址稳定,应配置___________,为提高总线驱动能力,应配置_____________。...
-
【软考网络工程师中级】软考网络工程师复习资料及练习题(四)详细阅读
试题一 阅读以下说明,回答问题1、问题2、问题3。[说明]随着网络应用的日益广泛,接入网络和边缘网络的需求也更加复杂多样,企业为了开展电子商务,必须实现与Internet的互联,路由器是实现这一互联网的关键设备,路由器可以位企业提供越来越多的智能化服务,包括安全性、可用性和服务质量(QoS)等。...
-
网络管理员面试试题及答案_2005年5月网络管理员试题及答案详细阅读
1.在答题卡的指定位置上正确写入你的姓名和准考证号,并用正规2B铅笔在你写入的准考证号下填涂准考证号。2.本试卷的试题中共有75个空格,需要全部解答,每个空格1分,满分75分。3.每个空格对应一个序号,有A、B、C、D四个选项,请选择一个最恰当的选项作为解答,在答题卡相应序号下填涂该选项。4.解答前...