niusouti.com

试题五(共 15分)阅读以下关于 C语言及 C代码的叙述,回答问题 1至问题 3,将答案填入答题纸的对应栏内。【说明】在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:【C代码 1】是李工为了在嵌入式平台上开发一段可变参数函数,在X86 平台上实现的一个参数个数可变函数实例。【C代码 2】是王工在编写软件时,自己编写的内存拷贝函数。【C代码 3】是赵工编写的一段数据处理的程序,其中 fun()的含义为从已创建的一个单向链表中查找倒数第index 个节点。他的设计思路为:首先创建两

题目

试题五(共 15分)

阅读以下关于 C语言及 C代码的叙述,回答问题 1至问题 3,将答案填入答题纸的对应栏内。

【说明】

在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:

【C代码 1】是李工为了在嵌入式平台上开发一段可变参数函数,在X86 平台上实现的一个参数个数可变函数实例。

【C代码 2】是王工在编写软件时,自己编写的内存拷贝函数。

【C代码 3】是赵工编写的一段数据处理的程序,其中 fun()的含义为从已创建的一个单向链表中查找倒数第index 个节点。他的设计思路为:首先创建两个指针 ptrl,ptr2,并且都指向链表头,然后 ptrl向前走index 步,这样ptrl和 ptr2 之间就间隔 index 个节点,然后 ptrl和ptr2 同时向前步进,当 ptrl到达最后一个节点时,ptr2 就是倒数第 index 个节点了。ReverseList()为赵工编写的对已有单向链表进行逆序重排的函数。

【C代码 1】

long sum(int i,...)

{

int *p,j;

long s = 0;

p=&i+1;

for(j=0;j<i;j++)

s+=p[j]

return s;

}

long Sum = sum(3,l,2,3);

【C代码 2】

static int pent;

……

void *MyMemcpy(void * dest, const void* src, int n )

{

char *pDest = (char *)dest;

char *pSrc = (char *)src;

for (int i=0;i<n; i++) {

*(pDest +i) = *(pSrc+i);

} return dest;

}

【C代码 3】

node *fun(node * head, int index)

{

node *ptr1,*ptr2;

int 1 = 0;

ptr1 = head;

ptr2 = head;

if( head == NULL || head->next == NULL)

return ptrl;

while(i<index)

{

(1)

if(ptrl == NULL)

return head;

i++;

}

while(ptrl->next != NULL)

{

ptrl = ptrl->next;

(2) ;

}

return (3) ;

}

node* ReverseList(node *head)

{

node *templ = NULL;

node *temp2 = NULL;

node *temp3 = NULL;

if((head->next == NULL) || (head == NULL))

{

return head;

} templ=head;

temp3= templ->next;

templ->next= NULL;

while(temp3->next!=NULL)

{

temp2 = temp3;

temp3= temp3->next;

(4) ;

templ=temp2;

}

temp3->next= templ;

retum (5)

}

【问题1】(3分)

执行【C代码 1】后,Sum的值应为多少?请用十进制表示。

【问题2】(7分)

请问【C代码2】中 static的作用是什么?const的作用是什么?王工自己编写的内存拷贝函数安全吗?

如存在缺陷,请指出缺陷在哪里。

【问题3】(5 分)

仔细阅读并分析【C代码 3】,填补其中的空(1)~(5)。


相似考题
参考答案和解析
正确答案:
试题五(共15分)
【问题1】(3分) Sum=6
【问题2】(7分)
1) static的作用:是将变量修饰成静态变量,静态变量的存储地址在整个程序的运行执行期间均保留,不会被别的变量占据。
2) const的作用:是用于冻结一个变量,使其值在程序中不能被进一步改变。
3)不安全,有缺陷。
4)应对形参的有效性进行检查,应判形参dest、src指针是否为空,形参n是否大于0,还应保证dest所指向的内存空间不越界。
【问题3】(共5分)
(1) ptrl=ptrl->next
(2) ptr2=ptr2->next
(3) ptr2
(4) temp2->next= templ
(5) temp3
更多“试题五(共 15分) 阅读以下关于 C语言及 C代码的叙述,回答问题 1至问题 3,将答案填入答题纸的对 ”相关问题
  • 第1题:

    试题四(共15分)

    阅读以下说明,回答问题l至问题3,将解答填入答题纸的对应栏内。

    【说明】

    赵新锐是一名大学生,他申请了学校的大学生创新创业项目,计划建立一个网上商

    店,他制定的工作计划如表4-1所示。

    【问题2](5分)

    项目在第14天时进行了检查,工作代码为G、I、H的检查情况见表4-3。请计算工

    作代码为G、I、H任务的进度状况并填空。

    【问题3](5分)

    在答题纸对应位置完成项目里程碑甘特图(注:答题纸上的时间为每方格一天)。


    正确答案:
    本题考查项目管理及计划控制的内容。
    【问题1】
    本问题考查总时差和自由时差的概念、计算方法。
    工作持续时间是指一项工作从开始到完成的时间。工作的最早开始时间(ES)是指在
    其所有紧前工作全部完成后,本工作有可能开始的最早时刻。工作的最早完成时间(EF)
    是指在其所有紧前工作全部完成后,本工作有可能完成的最早时刻。工作的最早完成时
    间等于本工作的最早开始时间与其持续时间之和。
    工作的最迟完成时间(LS)是指在不影响整个任务按期完成的前提下,本工作必须完
    成的最迟时刻。工作的最迟开始时间(LF)是指在不影响整个任务按期完成的前提下,本
    工作必须开始的最迟时刻。工作的最迟开始时间等于本工作的最迟完成时间与其持续时
    间之差。
    工作的总时差(TF)是指在不影响总工期的前提下,本工作可以利用的机动时间。工
    作的自由时差(FF)是指在不影响其紧后工作最早开始时间的前提下,本工作可以利用的
    机动时间。对于同一项工作而言,自由时差不会超过总时差。当工作的总时差为零时,
    其自由时差必然为零。
    【问题2】
    本问题考查工作进程记录表的概念和计算过程。
    项目进度计划的编制时,一般分为项目描述、项目分解、工作描述、工作责任分配
    表制定、工作先后关系确定、工作时间估计、绘制网络图和进度安排。
    所谓项目描述就是用表格的形式列出项目目标、项目范围、项目如何执行,项目完
    成计划等内容。项目描述是对项目的总体要求作一个概要性的说明,其依据是项目的立
    项规划书、已经通过的初步设计方案和批准后的可行性报告,主要内容有项目名称、项
    目目标,交付物、交付物完成准则、工作描述、工作规范、所需资源估计、重大里程
    碑等。
    【问题3]
    本问题考查项目里程碑甘特图的概念和计算过程。
    甘特图可用来安排项目中各项工作的进度,同时还能和各项资源在不同阶段的需求
    数量结合,有利于对项目管理过程进行有效的控制,当项目中某些工作进度安排有机动
    时间时,可以利用机动时间安排工作的实施进度,使项目对资源的集中需求尽可能分散,
    得到合理利用。

  • 第2题:

    阅读以下C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。【C代码1】


    【问题2】写出【代码2】的运行时的输出结果。


    答案:
    解析:
    (1)输入-1331的结果是:Palindromic number.a=-1331 b=1331 输入795的结果是:a=795 b=597(2) Passed,point=4 Passed,point=1 Passed,point=1Passed,point=1 Failed

  • 第3题:

    阅读以下说明,回答问题1至问题2,将解答填入答题纸对应的解答栏内。
    【说明】
    某留言系统采用ASP+Access开发,其后台管理登录页面如图4-1所示。

    【问题1】(9分)
    以下是该后台管理登录页面login.asp的部分代码,请仔细阅读该段代码,根据图4-1 将(1)~(9)的空缺代码补齐。



    【问题2】(6分)
    1.在登录页面 login.asp 中通过<!--#include file=“bbb.asp”-->导入了bbb.asp的代码,以下是bbb.asp的部分代码,请仔细阅读该段代码,将空缺代码补齐。



    答案:
    解析:


  • 第4题:

    试题三(共 15 分)

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


    正确答案:

  • 第5题:

    阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【C代码1】 float adjustSalary(int service_year,int age,float salary) { if( service_year <=5 ) { if( age > 30 ) salary *= 1.2; } else salary *= 2.0; return salary;} 【C代码2】 void foo(int coin) { switch (coin) { case 1: printf("Cent\n"); case 5: printf("Nicke1\n");break; case 10: printf("Dime\n"); case 25: printf("Quarter\n"); }} 【C代码3】 int getSum(int n){ int t, i = 0, sum = 0; while ( i < n ) { scanf("%d", &t); if( t<0 ) continue; sum += t; i++; } return sum;} 问题:3.1 【问题1】(3分)对于【C代码1】,写出下面的函数调用后x1、x2和x3的值。x1 = adjustSalary(1,25,9000.0);x2 = adjustSalary(8,32,7000.0);x3 = adjustSalary(5,41,5000.0); 问题:3.2 【问题2】(6分)(1)写出函数调用为foo(1)的输出结果;(2)写出函数调用为foo(5)的输出结果;(3)写出函数调用为foo(10)的输出结果;(4)写出函数调用为foo(25)的输出结果。 问题:3.3 【问题3】(6分)(1)简要说明【C代码3】中的函数getSum()的功能;(2)程序员小王将函数getSum改写后得到下面的函数getSum_v2(即用for语句来描述循环)。请问,getSum_v2的功能是否与【C代码3】的getSum完全相同,若不同,请说明原因。int get Sum_v2(int n){int t,i=0,sum=0;for(i=0;1 scanf("%d",&t);if(t<0)continue;sum+=t;}return sum;}


    答案:
    解析:
    【参考答案】(1)x1=9000.000000(2)x2=14000.000000(3)x3=6000.000000【参考答案】(1)foo(1):Cent Nickel(2)foo(5):Nickel(3)foo(10):Dime Quarter(4)foo(25):Quarter
    【参考答案】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,getSum()是求n个不小于0的整数之和,计算和的数目总数是n个,而getSum_v2是总共输入了n个数,这n个数种有大于等于0,也有小于0的数,最终只把大于等于0的数进行求和,因此最终计算的和的个数有可能是小于n的。
    【解析】

    【解析】 对于x1,service_year=1,age=25,salary=9000.0,首先判断service_year<=5,因此再判断age<30,不进行任何运算,salary仍为9000.0,由于salary为float类型数据,因此输出为9000.000000。 对于x2,service_year=8,age=32,salary=7000.0,首先判断service_year>5,因此直接进行else中的运算,salary=7000.0*2.0=14000.0,由于salary为float类型数据,因此输出为14000.000000。 对于x3,service_year=5,age=41,salary=5000.0,首先判断service_year<=5,因此再判断age>30,进行运算salary=5000.0*1.2=6000.0,由于salary为float类型数据,因此输出为6000.000000。【解析】foo(1):coin=1,执行printf(“Cent\n”),输出Cent并回车,继续执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(5):coin=5,执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(10):coin=10,执行printf(“Dime\n”),输出Dime并回车,继续执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。Foo(25):coin=25,执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。【解析】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,原因:在getSum中,当t<0时,继续运行scanf函数获得t,而不会运行i++运算,i的值不会改变,最终会获得n个不小于0的整数并求和;而在getSum_v2中,当t<0时,首先进行i++,再继续scanf函数,因此当输入的数出现负值时,会导致最终运算的值可能少于n个。

  • 第6题:

    阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。
    【说明】
    某企业网络拓扑如图1-1所示,A~E是网络设备的编号。










    答案:
    解析:
    【问题1】参考答案:1.B,2.A,3.C 4.D【问题2】5.ethernet 1 6、59.74.221.254【问题3】7) C.deny 8、A 9.F【问题4】10)192.168.4.1
    11)192.168.100.0 12)设置接口的类型是trunk
    【解析】
    【问题1】试题分析:这是一道简单的概念题,考察我们对企业园区网络的基本拓扑结构的了解。通常的企业为了确保内部网络的安全,会设置防火墙,防火墙有3个区域,外网,内网和DMZ区。DMZ通常用于存放各种服务器。因此首先可以选出B这个位置是防火墙,A用于连接Internet,是路由器。DMZ区内部有多台服务器,需要使用交换机连接。【问题3】试题分析:这是网络工程师考试第一次考华为的设备配置,而我们考前准备的都是ios的命令。那这道题是不是很难呢,其实这道题非常简单,只要我们有IOS的命令经验,这道题完全可以自己凭经验做出来,题目出题也是以选择题的形式,因此更加容易,对于没有用过华为设备的考生来说,也是非常简单的。
    【问题4】试题分析:这道题同样是基本的配置,掌握基本命令即可。