niusouti.com

试题三 (共15 分 )阅读以下说明和C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】基于管理的需要,每本正式出版的图书都有一个 ISBN 号。例如,某图书的 ISBN号为“978-7-5606-2348-1”。ISBN 号由 13 位数字组成:前三位数字代表该出版物是图书(前缀号),中间的 9个数字分为三组,分别表示组号、出版者号和书名号,最后一个数字是校验码。其中,前缀号由国际EAN提供,已经采用的前缀号为978和979;组号用以区别出版者国家、地区或者语言区,其长度可为1~5位;出

题目

试题三 (共15 分 )

阅读以下说明和C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】

基于管理的需要,每本正式出版的图书都有一个 ISBN 号。例如,某图书的 ISBN号为“978-7-5606-2348-1”。

ISBN 号由 13 位数字组成:前三位数字代表该出版物是图书(前缀号),中间的 9个数字分为三组,分别表示组号、出版者号和书名号,最后一个数字是校验码。其中,前缀号由国际EAN提供,已经采用的前缀号为978和979;组号用以区别出版者国家、地区或者语言区,其长度可为1~5位;出版者号为各出版者的代码,其长度与出版者的计划出书量直接相关;书名号代表该出版者该出版物的特定版次;校验码采用模10加权的算法计算得出。

校验码的计算方法如下:

第一步:前 12 位数字中的奇数位数字用 1 相乘,偶数位数字用 3 相乘(位编号从左到右依次为13到2);

第二步:将各乘积相加,求出总和S;

第三步:将总和S 除以10,得出余数R;

第四步:将10减去余数R后即为校验码V。若相减后的数值为10,则校验码为0。

例如,对于ISBN 号“978-7-5606-2348-1”,其校验码为1,计算过程为:

S=9×1+7×3+8×1+7×3+5×1+6×3+0×1+6×3+2×1+3×3+4×1+8×3=139

R = 139 mod 10 = 9

V = 10 – 9 = 1

函数check(char code[])用来检查保存在code中的一个ISBN号的校验码是否正确,若正确则返回 true,否则返回 false。例如,ISBN 号“978-7-5606-2348-1”在 code 中的存储布局如表3-1所示(书号的各组成部分之间用“-”分隔):

在函数check(char code[])中,先将13位ISBN号放在整型数组元素tarr[0]~tarr[12]中(如表3-2 所示,对应 ISBN 号的位13~位 1),由 tarr[0]~tarr[11]计算出校验码放入变量V,再进行判断。

【 C 函数 】

bool check(char code[])

{

int i, k = 0;

int S = 0, temp = 0;

int V;

int tarr[13] = {0};

if (strlen(code) < 17) return false;

for( i=0; i<17; i++ ) /* 将13位ISBN 号存入tarr */

if ( code[i]!= '-' )

tarr[ (1) ] = code[i] - '0' ;

for( i=0; (2) ; i++ ) {

if ( i%2 )

S += (3) ;

else

S += (4) ;

}

V = ( (5) == 0 )? 0 : 10 - S %10;

if ( tarr[12] == V)

return true;

return false;

}


相似考题
更多“ 试题三 (共15 分 )阅读以下说明和C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】基于管理的需要,每本正式出版的图书都有一个 ISBN 号。例如,某图书的 ISBN号为“978-7-5606”相关问题
  • 第1题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

    【函数2.1说明】

    递归函数sum(int a[], int n)的返回值是数组a[]的前n个元素之和。

    【函数2.1】

    int sum (int a[],int n)

    {

    if(n>0) return (1);

    else (2);

    }

    【函数2.2说明】

    有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。

    【函数2.2】

    int compare (int a, int b, int c )

    { int temp, max;

    (3) a:b;

    (4) temp:c;

    }

    【函数2.3说明】

    递归函数dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回 1,否则返回0。

    【函数2.3】

    int dec( int a[], int n )

    {

    if(n<=1) return 1;

    if(a[0]<a[1]) return 0;

    return (5);

    }


    正确答案:(1)a[n-1]+sum(an-1)或者a[0]+sum(a+1n-1); (2)return 0; (3)temp=(a>b)? (4)max=(temp>c)? (5)dec(a+1n-1);
    (1)a[n-1]+sum(a,n-1)或者a[0]+sum(a+1,n-1); (2)return 0; (3)temp=(a>b)? (4)max=(temp>c)? (5)dec(a+1,n-1); 解析:本题考查C语言函数和一些基本运算。
    下面我们分别来分析这几个函数。在函数2.1中,题目要求用此递归函数求数组前 n个元素之和。递归函数的特点是在函数体中不停地调用函数本身,只是将其函数的参数范围改变。题目中要求我们求数组前n个元素之和,我们可以这样理解,即前n个元素之和等于第n个元素加上前n-1个元素之和,现在的问题转化成如何求前n-1个元素之和。同样的道理,可以将求前n-1个元素之和转化成求前n-2个元素之和,直到这个数小于0。从函数2.1的代码中可以知道,在计算以前,首先判断n与0的关系,如果n小于0,说明数组中无元素,因此,返回0值;如果n大于等于0,说明数组中有元素,应该返回的结果是第n个元素加上前n-1个元素之和,而前n-1个元素之和是调用函数本身来计算的。因此,第(1)空和第(2)空的答案分别是a[n-1)+sum(a,n-1),return()。
    在函数2.2中,题目要求我们在三个数中取最大数,在数学中,我们从三个数中取最大数时,一般是首先拿其中两个数比较,取较大的数再与第三个数比较,再取其较大的数,这个数就是三个数中的最大数。从函数2.2的代码中知道,三个数a、b、c,两个整型变量temp与max。根据求三个数中最大数的数学过程和函数中已给出的代码可知,第(3)空处语句应该为temp=(a>b)?a:b,求得a、b中较大数并存放在变量temp中。第(4)空处语句为max=(temp>c)?temp:c。
    在函数2.3中,题目要求判断数组a[]的前n个元素是否是不递增的。不递增返回1,否则返回0。要判断前n个元素是否是不递增的,需要判断前n-1个元素是否是不递增的,以及第n个元素与第n-1个元素的关系。此处与函数2.1一样,用的都是递归函数,只是出口不同,在函数2.1中,只要数组中没有元素了,递归结束,这里只要第n个元素大于第n-1个元素,则返回0,递归结束。又由if(a[0]a[1])语句可知,在每次调用函数时,都将其数组中的第一个元素与第二个元素比较来作为递归的出口,如果结果为假,就说明数组的前面两项的关系是不递增的,在下次调用中不用再考虑第一项。因此第(5)空应该是dec(a+1,n-1)。

  • 第2题:

    阅读以下说明和C函数将应填入(n)处的字句写在答题纸的对应栏内

    【说明1】

    函数Counter(intn,intw[])的功能是计算整数n的二进制表示形式中的1个数同时用数组w记录该二进制数中1所在位置的权。

    例如十进制数22的二进制表示为10110.对于该二进制数,1的个数为3,在w[0]中存入2(即21)、w[1]中存入4(即22)w[2]存入16(即24)

    【C函数1】


    答案:

    解析:

    本题考查C程序控制结构的应用

    计算结束。

    从上例可知二进制数的各位是从低到高依次计算出来的。

    这样数组中的奇数全部排在偶数之前

  • 第3题:

    阅读以下说明和C函数,将应填入(n)处对应栏内。

    [说明]

    基于管理的需要,每本正式出版的图书都有一个ISBN号。例如,某图书的ISBN号为“978-7-5606-2348-1”。

    ISBN号由13位数字组成:前三位数字代表该出版物是图书(前缀号),中间的9个数字分为三组,分别表示组号、出版者号和书名号,最后一个数字是校验码。其中,前缀号由国际EAN提供,已经采用的前缀号为978和979;组号用以区别出版者国家、地区或者语言区,其长度可为1~5位;出版者号为各出版者的代码,其长度与出版者的计划出书量直接相关;书名号代表该出版者该出版物的特定版次;校验码采用模10加权的算法计算得出。

    校验码的计算方法如下:

    第一步:前12位数字中的奇数位数字用l相乘,偶数位数字用3相乘(位编号从左到右依次为13到2)。

    第二步:将各乘积相加,求出总和S。

    第三步:将总和S除以10,得出余数R。

    第四步:将10减去余数R后即为校验码V。若相减后的数值为10,则校验码为0。

    例如,对于ISBN号“978-7-5606-2348-1”,其校验码为1,计算过程为:

    S=9×1+7×3+8×1+7×3+5×1+6×3+0×1+6×3+2×1+3×3+4×1+8×3=139

    R=139mod 10=9

    V=10-9=1

    函数check(char code[])用来检查保存在code中的一个ISBN号的校验码是否正确,

    若正确则返回true,否则返回false。例如,ISBN号“978-7-5606-2348-1”在code中的

    存储布局如表3-1所示(书号的各组成部分之间用“-”分隔):

    表3-1 数组code的内容示例

    在函数check(char code[])中,先将13位ISBN号放在整型数组元素tarr[0]~tarr[12]中(如表3-2所示,对应ISBN号的位13~位1),由tarr[0]~tarr[11]计算出校验码放入变量V,再进行判断。

    表3-2 数组tarr的内容示例

    [C函数]

    boo1 cheCk(char code[])

    {

    int i,k=0;

    intS=0,temp=0;

    int V;

    int tarr[13]={0};

    if (Strlen(code) <17} return falSe;

    for(i=0; i<17; i++) /*将13位ISBN号存入tarr*/

    if(code[i]!='-')

    tarr (1)____ =code[i]-'0';

    for(i=0; (2)_____ ; i++ ); {

    if (i%2)

    S+= (3)______ ;

    else

    S+= (4)______ ;

    }

    v=( (5)______ ==C)?0:10-s%10;

    if(tart[12]==v)

    return true ;

    return false;

    }


    正确答案:k++或temp++ i12或ik-1(空(1)处填k++)或itemp-l(空(1)处填temp++)或等价形式 tarr[i]*3或*(tarr+i)*3或等价形式 tarr[i]或*(tarr+i)或等价形式 S%10或等价形式
    k++,或temp++ i12,或ik-1(空(1)处填k++),或itemp-l(空(1)处填temp++),或等价形式 tarr[i]*3,或*(tarr+i)*3,或等价形式 tarr[i],或*(tarr+i),或等价形式 S%10,或等价形式 解析:本题考查C程序设计基本技术。
    根据题目中的描述,在函数check(char code[])中要先将保存在code中的编码存入tarr,同时根据题例中的tarr内容示例表可知,ISBN号前12位数字中的奇数位数字会存入tarr的偶数下标,偶数位数字存入tarr的奇数下标。将13位ISBN号存入tarr的代码如下所示:
    for(i=0;i17;i++)
    if(code[i]!='-')
    tarr[(1)] = code[i]- 'O';
    显然,空(1)处tarr下标索引值不能使用i,需要另一个整型变量,题目中提供了k和temp,因此在此处用k++或temp++都可以。
    空(2)~(4)处所在代码实现校验码的计算方法中的第一步和第二步,由于共需计算12位,因此空(2)处填入“i12”。算法中规定,ISBN号前12位数字中的奇数位数字用1相乘,偶数位数字用3相乘,且将各乘积相加求出总和s。由于在数组tarr中,ISBN号的奇数位数字对应tarr的偶数下标、偶数位数字对应tarr的奇数下标。因此,空(3)处应填入“tarr[i]+3”,空(4)处应填入“tarr[i]”。
    校验码计算方法的第三步和第四步是:将总和S除以10,得出余数R;将10减去余数R后即为校验码V。若相减后的数值为10,则校验码为0。由空(5)处的代码,V的值要么为0,要么为10-S%10。显然,校验码为0说明余数R为0,即s%10等于0,
    因此空(5)处应填入“S%10”。

  • 第4题:

    阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都

    有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌

    灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。command模式

    的类图如图6-1所示。

    【Java代码】

    }


    正确答案:
    本题考查命令(Command)模式的基本概念和应用。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。在软件系统中,行为请求者与行为实现者之间通常呈现一种紧耦合的关系。但在某些场合,比如要对行为进行记录撤销重做事务等处理,这种无法抵御变化的紧耦合是不合适的。这种情况下,使用command模式将行为请求者与行为实现者进行解耦。题目中给出了Lommamt模式的类图,其中:Command类为所有命令声明了一个接口。调用命令对象的execute()方法,就可以让接收者进行相关的动作。ConcreteCommand类定义了动作和接收者之间的绑定关系。调用者只要调用execute()就可以发出请求,然后由ConcreteCommand调用接收者的一个或多个动作。Invoker持有一个命令对象,并在某个时间点调用命令对象的execute()方法,将请求付诸实行。Receiver知道如何进行必要的工作,实现这个请求。任何类都可以当接收者。了解了Command模式的内涵之后,下面来看程序。由于Command类的主要作用是为所有的ConcreteCommand定义统一的接口,在Java中通常采用接口(interface)来实现,所以(1)处对应的代码为interfaceCommand。类LightOnCommand、LightOffCommand对应的就是模式中的ConcreteCommand。ConcreteCommand中execute()方法的代码在类图中已经给出,现在需要确定receiver是谁。类Light充当的是Receiver.其中定义了两种action:on和off.所以(2)、(3)对应代码分别为light.on()和light.off()。类RemoteControl对应的是模式中的Invoker,在该类中设置需要控制的命令对象。(4)处对应的代码为onCammands[slot],设置“开灯”命令对象:(5)处对应的代码为offCommands[slot],设置‘关灯”命令对象。类RemoteControl中的方法onButtonWasPushed和ofiButtonWasPushed,分别完成对开灯、关灯命令对象的execute方法的调用。所以(6)、(7)处分别对应代码onCommands[slot].execute()、offCommands[slot].execute()。试题六参考答案(1)interfaceCommand(2)light.on()(3)light.off()(4)onCommands[slot](5)offi:ommands[slot](6)onCommands[slot].execute()(7)ofiCommands[slot].execute()

  • 第5题:

    ●试题一

    阅读下列说明和流程图,将应填入(n)的字句写在答题纸的对应栏内。

    【说明】

    下列流程图(如图4所示)用泰勒(Taylor)展开式

    sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x 2n+1/(2n+1)!+…

    【流程图】

    图4

    计算并打印sinx的近似值。其中用ε(>0)表示误差要求。


    正确答案:
    ●试题一【答案】(1)x*x(2)x->t(3)|t|∶ε(4)s+2->s(5)(-1)*t*x2/(s*(s-1))【解析】该题的关键是搞清楚几个变量的含义。很显然变量t是用来保存多项式各项的值,变量s和变量x2的作用是什么呢?从流程图的功能上看,需要计算1!、3!、5!,……,又从变量s的初值置为1可知,变量s主要用来计算这此数的阶乘的,但没有其他变量用于整数自增,这样就以判断s用来存储奇数的,即s值依次为1、3、5,……。但x2的功能还不明确,现在可以不用管它。(2)空的作用是给t赋初值,即给它多项式的第一项,因此应填写"x->t"。(3)空处需填写循环条件,显然当t的绝对值小于ε(>0)就表示已经达到误差要求,因此(3)空应填入"|t|∶ε"。由变量s的功能可知,(4)空应当实现变量s的增加,因此(4)空应填入"s+2->s"。(5)空应当是求多项式下一项的值,根据多项式连续两项的关系可知,当前一项为t时,后一项的值为(-1)*t*x*x/(s*(s-1))。但这样的话,每次循环都需要计算一次x*x,计算效率受到影响,联想到变量x2还没用,这时就可以判断x2就是用来存储x*x的值,使得每次循环者少进行一次乘法运算。因此(1)空处应填入"x*x",(5)空处应填入"(-1)*t*x2/(s*(s-1))"。

  • 第6题:

    图2-1是基于软交换的网络分层模型。请将选项应填入(n)处的字句写在答题纸对应的解答栏内。


    正确答案:
    (1)业务/应用层
    (2)控制层
    (3)接入层
    (4)媒体网关

  • 第7题:

    下图是基于软交换的网络分层模型简图,请根据简图将应填入(n)处的字句写在答题 纸的对应栏内。(图中(6)是(4)与媒体网关交互时可以使用的控制协议)


    正确答案:
    (1)网络控制层(或控制层、呼叫控制层)
    (2)核心传送(传输)层(或传送(传输)层)
    (3)边缘接入层(或接入层)
    (4)Softswitch(或软交换)
    (5)SG(或信令网关)
    (6)MGCP(或H.248、或Megaco、或媒体网关控制协议)(写多个也对)

  • 第8题:

    图6-1是下一代网络的体系结构简图,请根据此简图将应填入(n)处的字句写在答题纸的对应栏内。


    正确答案:
    (1)业务平面
    (2)控制平面
    (3)传输平面
    (4)接入平面
    (5)SIP-TBICC
    (6)SIGTRAN
    (7)MGCP/H.248
    (8)H.323
    (9)SIP

  • 第9题:

    阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。

    【C++代码】 #include using namespace std; class invoice{ public: (1){ cout<<"This is the content of the invoice!"<

    答案:
    解析:
    (1) virtual void printInvoice() (2) ticket->printInvoice() (3) Decorator::printInvoice() (4) Decorator::printInvoice() (5) &a
    【解析】

    试题分析
    1.Invoice类下,义虛函数,按类图,函数名是printInvoice
    2.前面定义对象名是ticket,那么在ticket不为空的时候调用函数printInvoice
    3.这部分填写发票的抬头,看类图应该实现函数printInvoice ,Decorator装饰模式使用该方法
    4.这部分是发票的脚注,看类图应该实现函数printlnvoice,Decorator装饰模式使用该方法
    5.FootDecorator a(NULL) ;脚步的装饰参数是a,调用a参数,

  • 第10题:

    阅读下列说明,补充(1)-(9),将解答填入答题纸的对应栏内。


    答案:
    解析:

  • 第11题:

    阅读下列说明和 Java 代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上 留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy) 设 计模式来实现该需求,所设计的类图如图 5-1 所示。




    答案:
    解析:
    1.void stop()2.BrakeBehavior3.wheel.stop()4.wheel=behavior5.brake()

  • 第12题:

    阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。
    【说明】
    某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种
    类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。






    答案:
    解析:

  • 第13题:

    阅读下面的说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。

    [说明]

    阅读以下说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。

    windows Server 2003是一个多任务多用户的操作系统,能够以集中或分布的方式实现各种应用服务器角色,是目前应用比较广的操作系统之一。

    Windows内置许多应用服务功能,将下表中(1)~(5)处空缺的服务器名称填写在答题纸对应的解答栏内。

    (1)


    正确答案:域名(DNS)服务器
    域名(DNS)服务器

  • 第14题:

    阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

    [说明]

    下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。

    [流程图]


    正确答案:(1)MAX←0 (2)←L+1 (3)MAX←L (4)≠ (5)L←0
    (1)MAX←0 (2)←L+1 (3)MAX←L (4)≠ (5)L←0 解析:本题用到的三个变量及其作用分别为:A,存放输入的一个字符;MAX,存放当前为止最长单词的长度;L,存放当前单同的长度。
    (1)使用变量MAX应先赋予初值,由上下文知其初值为0;
    (2)读取当前单词时,每读人一个字母,单词长度值L应增1;
    (3)当前单词长度L比MAX时,应更新MAX的值;
    (4)若当前字符不是句点,应当继续读取字符;
    (5)读取下一个单词前,应当重置L的值。

  • 第15题:

    阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都

    有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌

    灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式

    的类图如图5-1所示。

    【c++代码】

    }


    正确答案:
    本题考查命令(Command)模式的基本概念和应用。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。在软件系统中,行为请求者与行为实现者之间通常呈现一种紧耦合的关系。但在某些场合,比如要对行为进行记录撤销重做事务等处理,这种无法抵御变化的紧耦合是不合适的。这种情况下,使用Command模式将行为请求者与行为实现者进行解耦。题目中给出了Command模式的类图,其中:Command类为所有命令声明了一个接口。调用命令对象的execute()方法,就可以让接收者进行相关的动作。ConcreteCommand类定义了动作和接收者之间的绑定关系。调用者只要调用execute()就可以发出请求,然后由ConcreteCommand调用接收者的一个或多个动作。Invoker持有一个命令对象,并在某个时间点调用命令对象的execute()方法,将请求付诸实行。Receiver知道如何进行必要的工作,实现这个请求。任何类都可以当接收者。了解了Command模式的内涵之后,下面来看程序。由于Command类的主要作用是为所有的ConcreteCommand定义统一的接口,在c++中通常采用抽象类来实现。C++的抽象类是至少具有一个纯虚拟函数的类。本题中的接口就是execute()方法,所以(1)处要求填写的是纯虚拟函数cxecute的定义方式,即vifrualvoidexecute()=0。类LightOnCammand、LightOfiCommand对应的就是模式中的ConcreteCommand;ConcreteCommand中execute()方法的代码在类图中已经给出,现在需要确定recelver是谁。类Light充当的是Receiver,其中定义了两种action:on和off.所以(2)、(3)对应代码分别为light->on()、light->off()。类RemoteControl对应的是模式中的Invoker,在该类中设置需要控制的命令对象。(4)处对应的代码为onCommands[slot],设置“开灯”命令对象;(5)处对应的代码为affcommands[slot].设置‘关灯”命令对象。类RemoteControl中的方法onButtanWasPushed和offlButtonWasPushed,分别完成对开灯、关灯命令对象的execute方法的调用,所以(6)、(7)处分别对应代码onCommands[slot]->execute()、offCommands[slot]->execute()。试题五参考答案(1)virtualvoidexecute()=0(2)light->on()(3)light->off()(4)onCommands[slot](5)offCommands[slot](6)onCommands[slot]->execute()(7)offCommands[slot]->execute()

  • 第16题:

    ●试题二

    阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    该程序运行后,输出下面的数字金字塔

    【程序】

    include<stdio.h>

    main ()

    {char max,next;

    int i;

    for(max=′1′;max<=′9′;max++)

    {for(i=1;i<=20- (1) ;++i)

    printf(" ");

    for(next= (2) ;next<= (3) ;next++)

    printf("%c",next);

    for(next= (4) ;next>= (5) ;next--)

    printf("%c",next);

    printf("\n");

    }

    }


    正确答案:
    ●试题二【答案】(1)(max-′0′)(2)′1′(3)max(4)max-1(5)′1′【解析】该程序共有9行输出,即循环控制变量max的值是从1~9。每行输出分3部分,先用循环for语句输出左边空白,(1)空填"(max-′0′)";再用循环输出从1到max-′0′的显示数字,即(2)空和(3)空分别填1和max;最后输出从max-′1′~1的显示数字,即(4)空和(5)空分别填和max-1和′1′。

  • 第17题:

    试题三(共 15 分)

    阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。


    正确答案:

  • 第18题:

    (a)智能网概念模型中分布功能平面模型如下图所示,请根据此图将应填入(n)处的 字句写在答题纸的对应栏内。


    正确答案:
    (1)SMF(或业务管理功能)
    (2)SCEF(或业务生成功能)
    (3)SDF(或业务数据功能)
    (4)SCF(或业务控制功能)
    (5)SSF(或业务交换功能)
    (6)CCF(或呼叫控制功能)

  • 第19题:

    ()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]下面程序是一个带参数的主函数,其功能是显示在命令行中输入的文本文件内容。[C语言函数]#include"stdio.h"main(argc,argv) int argc; char *argv[]; { (1) ; if((fp=fopen(argv[1],”r’’))== (2) ) { printf(”file not open!\n”);exit(0);} while( (3) ) putchar( (4) ); (5); }


    正确答案:()
    (1)FILE *fp; (2)NULL  (3)!feof(fp)  (4)fgetc(fp)   (5)fclose(fp)
    从程序功能来看,程序中需要用到文件型指针变量中,而主函数体没有定义,所以(1)应该填写的是“FILE *fp;”。接下来的语句是标准的打开只读文本文件的语句,显示的是文件没打开,说明文件名不存在,也就是为“NULL”。接着的while循环语句中有两处空白。前一个空白是控制循环的条件,从程序功能来看,要将文本文件中的所有字符显示出来,这儿当然只能填写“不是文件尾则继续循环”,具体说,需要填写的是“!feof(fp)”。(4)出现在循环体中的语句中,该循环体的功能是从fp指向的文本文件中读取单个字符并显示在屏幕上,此处使用的是putchar函数,该函数的功能是将形参对应的字符显示在屏幕上,所以该处的空白就是要显示的字符,这个字符必须是从文本文件中读取的单个字符,完成这项工作的可以利用fgetc()函数,所以(4)填写的是“fgetc(fp)”。最后一句应当是关闭文件,所以(5)应填fclose(fp)。

  • 第20题:

    下图是基于软交换的网络分层模型简图,其中(1)、(2) 为网络层次,(3)、(4)、(5)为软交换系统中的设备。请根据简图将应填入( )处的字句 写在答题纸对应的解答栏内,括号内数字相同处代表同一字句,( n )相同者只计2分)

    基于软件交换的网络分层模型简图


    正确答案:
    (1)应用层(或服务层)
    (2)网络控制层(或控制层、呼叫控制层)
    (3)软交换设备(或软交换机)
    (4)SG(或信令网关)
    (5)MG(4TG、中继媒体网关、中继网关、媒体网关)

  • 第21题:

    阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。
    阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。
    【说明1】
    函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。
    【C函数】

    char *t = (char *)malloc( (1) ); /*申请串空间*/ int i, k = 0; if (!t) return; for(i = 0; i < strlen(s); i++)if ( !(*(s+i)>=’0’ && *(s+i)<=’9’) ) { t[k++] = (2) ;} (3) = ’\0’; /*设置串结束标志*/ strcpy(s,t);free(t);}

    【说明2】
    函数reverse(char *s, int len)的功能是用递归方式逆置长度为len的字符串s。例如,若串s的内容为"abcd",则逆置后其内容变为"dcba"。
    【C函数】

    void reverse(char *s, int len){ char ch; if ( (4) ) { ch = *s; *s = *(s+len-1); *(s+len-1) = ch; reverse( (5) ); }}


    答案:
    解析:
    (1)strlen(s)+1
    (2)*(s+i),或s[i]或其等价表示
    (3)*(t+k)或t[k] 或其等价表示
    (4)len>1 或len>=1 或其等价表示
    (5)s+1 len-2
    【解析】

    根据说明1,在函数deldigit(char*s)中需先申请一个与s等长的临时字符串空间并令t指向它,因此空(1)处应填入"strlen(s)+1",其中,加1的原因是函数strlen计算s所指向字符串的长度时,没有包含串结束标志字符"\0"。当然,申请比"strlen(s)+1"更大的存储区也可以,只是没有必要。
    由于需要将非数字字符按原来的顺序存入t所指向的存储区,所以空(2)处填入"s[i]",或其等价表示形式。
    最后在设置t所指向字符串的结束标志,即令t[k]='\0'.在这里,空(3)处的t[k]写为t[k++]也可以,而写为t[k+1]或t[++k]则不符合整个代码的处理逻辑。
    函数reverse(char*s,int len)的功能是用递归方式逆置长度为len的字符串s,其中以下代码实现了将s所指字符与串中最后一个字符交换的处理。
    Ch=*s; *s=*(s+len-1); *(s+len-1)=ch;

  • 第22题:

    阅读下列说明和C++代码,回答问题,将解答填入答题纸的对应栏内。
    【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic)、银卡(Silver)和金卡 (Gold) 三个等级。非会员 (NonMember) 可以申请成为普卡会员。会员的等级根据其一年内累积 的里程数进行调整。描述会员等级调整的状态图如图 5-1 所示。现采用状态 (State) 模式实现上述场景,得到如图 5-2 所示的类图。




    【问题1】(15分)阅读上述说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。


    答案:
    解析:
    注意:原版的题目应该是Cbasic、CSilve。(1) virtual double travel(int miles,FrequentFlyer* context)=0(2)context->setState(context->Cbasic)(3)context->setState(context->CSilve)(4)context->setState(context->Cbasic)(5)context->setState(context->CSilve)

  • 第23题:

    阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 某文件管理系统中定义了类OfficeDoc和DocExplorer,当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态,现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。



    答案:
    解析:
    1: void update()2: Observer3: obs.update()4: Subject5: Attach(this)