题目内容 (请给出正确答案)
[主观题]

试题四(共 15分) 阅读以下说明和C函数,将解答填入答题纸的对应栏内。 【说明】 函数del_substr(S,T)

试题四(共 15分)

阅读以下说明和C函数,将解答填入答题纸的对应栏内。

【说明】

函数del_substr(S,T)的功能是从头至尾扫描字符串 S, 删除其中与字符串T相同的所有子串,其处理过程为:首先从串 S 的第一个字符开始查找子串 T,若找到,则将后面的字符向前移动将子串T覆盖掉,然后继续查找子串T,否则从串S的第二个字符开始查找,依此类推,重复该过程,直到串S的结尾为止。该函数中字符串的存储类型 SString

定义如下:

typedef struct {

char *ch; /*串空间的首地址*/

int length; /*串长*/

}SString;

【C函数】

void del_substr(SString *S, SString T)

{

int i, j;

if (S->length < 1 || T.length < 1 || S->length < T.length )

return;

i = 0; /* i为串S中字符的下标 */

for (; ; ) {

j = 0; /* j为串T中字符的下标 */

while (i < S->length && j < T.length ) { /* 在串S中查找与T相同的子串 */

if (S->ch[i]==T.ch[j] ) {

i++; j++;

}

else {

i = (1) ; j = 0; /* i值回退,为继续查找T做准备 */

}

}

if ((2) ) { /* 在S中找到与T相同的子串 */

i = (3) ; /* 计算S中子串T的起始下标 */

for(k = i+T.length; k<S->length; k++) /* 通过覆盖子串T进行删除 */

S->ch[ (4) ] = S->ch[k];

S->length = (5) ; /* 更新S的长度 */

}

else break; /* 串S中不存在子串T*/

}

}

提问人:网友lyftcs 发布时间:2022-01-06
参考答案
查看官方参考答案
如搜索结果不匹配,请 联系老师 获取答案
更多“试题四(共 15分) 阅读以下说明和C函数,将解答填入答题纸…”相关的问题
第1题
试题二(共 15分) 阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明 1】 函

试题二(共 15分)

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

【说明 1】

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

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

【C函数 1】

int Counter(int n, int w[])

{ int i = 0, k = 1;

while ((1) ) {

if (n % 2) w[i++] = k;

n = n / 2; (2) ;

}

return i;

}

【说明 2】

函数 Smove(int A[], int n)的功能是将数组中所有的奇数都放到所有偶数之前。其过程为:设置数组元素下标索引i(初值为0)和j(初值为n-1),从数组的两端开始检查元素的奇偶性。若 A[i]、A[j]都是奇数,则从前往后找出一个偶数,再与 A[j]进行交换;

若 A[i]、A[j]都是偶数,则从后往前找出一个奇数,再与A[i]进行交换;若 A[i]是偶数而A[j]是奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。

【C函数 2】

void Smove(int A[], int n)

{ int temp, i = 0, j = n-1;

if (n < 2 ) return;

while (i < j ) {

if (A[i] % 2 == 1 && A[j] % 2 == 1 ) { (3) ; }

else if (A[i] % 2 == 0 && A[j] % 2 == 0 ) { (4) ; }

else {

if ((5) ) {

temp = A[i]; A[i] = A[j]; A[j] = temp;

}

i++, j--;

}

}

}

点击查看答案
第2题
试题二(共 15分) 阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明 1】 函

试题二(共 15分)

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

【说明 1】

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

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

1

2 2

2 4

2

【C函数 1】

int Counter(int n, int w[])

{ int i = 0, k = 1;

while ((1) ) {

if (n % 2) w[i++] = k;

n = n / 2; (2) ;

}

return i;

}

【说明 2】

函数 Smove(int A[], int n)的功能是将数组中所有的奇数都放到所有偶数之前。其过程为:设置数组元素下标索引i(初值为0)和j(初值为n-1),从数组的两端开始检查元素的奇偶性。若 A[i]、A[j]都是奇数,则从前往后找出一个偶数,再与 A[j]进行交换;若 A[i]、A[j]都是偶数,则从后往前找出一个奇数,再与A[i]进行交换;若 A[i]是偶数而A[j]是奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。

【C函数 2】

void Smove(int A[], int n)

{ int temp, i = 0, j = n-1;

if (n < 2 ) return;

while (i < j ) {

if (A[i] % 2 == 1 && A[j] % 2 == 1 ) { (3) ; }

else if (A[i] % 2 == 0 && A[j] % 2 == 0 ) { (4) ; }

else {

if ((5) ) {

temp = A[i]; A[i] = A[j]; A[j] = temp;

}

i++, j--;

}

}

}

点击查看答案
第3题
试题四(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 某企业

试题四(共15分)

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

【说明】

某企业在公司总部和分部之间采用两台 Windows Server 2003 服务器部署企业 IPSec VPN,将总部和分部的两个子网通过Internet互联,如图 4-1所示。

试题四(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 某

【问题 1】(3分)

隧道技术是 VPN 的基本技术, 隧道是由隧道协议形成的, 常见隧道协议有 IPSec、 PPTP和L2TP,其中 (1) 和 (2) 属于第二层隧道协议, (3) 属于第三层隧道协议。

【问题 2】(3分)

IPSec 安全体系结构包括 AH、ESP 和 ISA KMP/Oakley 等协议。其中, (4) 为 IP包提供信息源验证和报文完整性验证,但不支持加密服务; (5) 提供加密服务; (6) 提供密钥管理服务。

试题四(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 某

【问题 3】(6分)

设置ServerA和ServerB之间通信的筛选器属性界面如图4-2所示,在ServerA的IPSec安全策略配置过程中,当源地址和目标地址均设置为“一个特定的 IP 子网”时,源子网IP地址应设为 (7) ,目标子网IP地址应设为 (8) 。图 4-3所示的隧道设置中的隧道终点IP地址应设为 (9) 。

【问题 4】(3分)

在ServerA的IPSec安全策略配置过程中,ServerA 和 ServerB之间通信的 IPSec筛选器“许可”属性设置为“协商安全” ,并且安全措施为“加密并保持完整性” ,如图 4-4 所示。根据上述安全策略填写图4-5 中的空格,表示完整的 IPSec数据包格式。

试题四(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 某

(10)~(12)备选答案:

A.AH 头

B.ESP头

C.旧 IP头

D.新 TCP头

E.AH 尾

F.ESP尾

G.旧 IP尾

H.新 TCP尾

点击查看答案
第4题
试题四(共15分) 阅读以下说明,回答问题 1 至问题3,将解答填入答题纸的对应栏内。 【说明】 某公司使

试题四(共15分)

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

【说明】

某公司使用 ASP 开发了商务网站,购物车是网站中一个重要的组件。

【问题 1】(6 分)

设计购物车模块的核心思想是将顾客订购的物品进行临时保存,其中利用 (1) 可以将订购信息临时存在WEB服务器内存中,利用 (2) 可以将订购信息临时存于客户端硬盘上,另外还可以将订购信息临时存在 (3) 中。

【问题 2】(4 分)

1.在ASP内置对象中,有两个对象与cookie操作有关。其中 (4) 用来写cookie内容,

(5) 用来读cookie内容。

备选答案:

A.application B.asperror C.response

D.request E.session F.server

2.在ASP内置组件中,使用(6)可以在主页上交替地变换广告,使用(7)可以读写

服务器文件。

A.Browser Capabilities B.File Access C.AD Rotator

D.Content Linking E.Database Access

【问题 3】 (5 分)

该网站购物车模块页面脚本语言是 JavaScript,用户订购信息临时存在 cookie 中,下

面是购物车页面中读取 cookie 值的函数,请完成该程序。

<script. language="javascript">

……

function readCookie(name)

{

var cookieValue = "";

var search = (8) + "=";

if(document.cookie. (9) > 0)

{

start= document.cookie.indexOf(search);

if (start != -1)

{

start += search.length;

end = document.cookie.indexOf(";",start);

if (end = = -1)

end = document.cookie.length;

cookieValue = document.cookie.substring((10) , (11) )

}

}

return (12) ;

……

</script>

点击查看答案
第5题
试题二(共15分) 阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。 【

试题二(共15分)

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

【说明1】 函数deldigit(char *s) 的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与 s 等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。

【C函数】

void deldigit(char *s)

{

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) );

}

}

点击查看答案
第6题
试题二(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】如果矩

试题二(共15分)

阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。

【说明】

如果矩阵A中的元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。

一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。

【C函数】

Int findSaddle(int a[][N],int M),

{ /*a表示M行N列矩阵,N是宏定义符号常量量*/

int row,column,i,k;

int minElem;

int count=0;/*count用于记录矩阵中马鞍点的个数*/

for(row = 0;row< (1) ;row++) {

/*minElem用于表示第row行的最小元素值,其初值设为该行第0列的元素值*/

(2) ;

for(column = 1;column< (3) ;column++)

if(minElem> a[row][column]) {

minElem = a[row][column];

}

for(k=0;k<N;k++)

if(a[row][k]==minElem){

/术对第row行的每个最小元素,判断其是否为所在列的最大元素*/

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

if((4) >minElem) break;

if(i>=(5) ){

printf("(%d,%d):%d\n",row,k,minElem);/*输出马鞍点*/

count++;

}/*if*/

}/*if*/

}/*for*/

return count,

}/*findSaddle*/

点击查看答案
第7题
试题三(共15分)阅读以下说明和C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。【说明1】下面

试题三(共15分)

阅读以下说明和C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。

【说明1】

下面的函数countChar(char *text)统计字符串text中不同的英文字母数和每个英文字

母出现的次数(英文字母不区分大小写)。

【C代码1】

Int countchar(char*text)

{

int i,sum=O; /*sum保存不同的英文字母数*/

char *ptr;

int c[26]={0}; /*数组c保存每个英文字母出现的次数*/

/*c[0]记录字母A或a的次数,c[1]记录字母B或b的次数,依此类推*/

ptr=(1); /* ptr初始时指向字符串的首字符*/

while (*ptr) {

if (isupper (*ptr) )

c[*ptr一’A’]++;

else &39;

if (islower (*ptr) )

c[*ptr一’a’]++;

(2); /*指向下一个与字符*/

}

for (i=0. i<26; i++ )

If(3)sum++;

return sum;

}

【说明2]

将下面C代码2中的空缺补全后运行,使其产生以下输出。

f2: f2:f2:2

f3: f3:1

【C代码2]

include <stdio . h>

int fl (int (*f) (int)) .

int f2 (int) ;

int f3 (int) ;

int main ()

{

Printf(“%d\n”,f1(4))

Printf(“%d\n”,f1(5))

return 0;

}

int fl(int (*f) (int) }

{

int n=O;

/*通过函数指针实现函数调用,以返回值作为循环条件*/

While(6) n++

return n;

}

int f2 (int n)

{

printf ("f2: ") ;

return n*n-4;

}

int f3 (int n)

{

printf ("f3: ") ;

return n-1

}

点击查看答案
第8题
试题五(共 15分) 阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】

试题五(共 15分)

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

【说明】

已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、umberOfElement()以及removeLastElement()。四个方法的含义分别为:

void addElement(Object): 在列表尾部添加一个对象;

Object lastElement(): 返回列表尾部对象;

int numberOfElement(): 返回列表中对象个数;

void removeLastElement(): 删除列表尾部的对象。

现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式实现。

【C++代码 1】

class Stack :public LinkedList{

public:

void push(Object o){ addElement(o); }; //压栈

Object peek(){ return (1) ; }; //获取栈顶元素

bool isEmpty(){ //判断栈是否为空

return numberOfElement() == 0;

};

Object pop(){ //弹栈

Object o = lastElement();

(2) ;

return o;

};

};

【C++代码 2】

class Stack {

private:

(3) ;

public:

void push(Object o){ //压栈

list.addElement(o);

};

Object peek(){ //获取栈顶元素

return list. (4) ;

};

bool isEmpty(){ //判断栈是否为空

return list.numberOfElement() == 0;

};

Object pop(){//弹栈

Object o = list.lastElement();

list.removeLastElement();

return o;

};

};

【问题】

若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)

点击查看答案
第9题
试题二(共15分)阅读以下说明、C程序代码和问题1至问题3,将解答写在答题纸的对应栏内。【说明1】设在

试题二(共15分)

阅读以下说明、C程序代码和问题1至问题3,将解答写在答题纸的对应栏内。

【说明1】

设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof(x)用于计算为x分配的字节数。

【C代码】

#include <stdio.h>

#include <string.h>

int main()

{ int arr[5]={10,20,30};

char mystr[]="JustAtest\n";

char *ptr= mystr;

printf("%d%d%d\n", sizeof(int),sizeof(unsigned int),sizeof(arr));

printf("%d%d\n",sizeof(char),sizeof(mystr));

printf("%d%d%d\n",sizeof(ptr),sizeof(*ptr),strlen(ptr));

return 0;

}

【问题1】(8分)

请写出以上C代码的运行结果。

【说明2】

const是C语言的一个关键字,可以用来定义“只读”型变量。

【问题2】(4分)

(1)请定义一个“只读”型的整型常量size,并将其值初始化为10;

(2)请定义一个指向整型变量a的指针ptr,使得ptr的值不能修改,而ptr所指向的目标变量的值可以修改(即可以通过ptr间接修改整型变量a的值)。

注:无需给出整型变量a的定义。

【问题3】(3分)

某C程序文件中定义的函数f如下所示,请简要说明其中static的作用,以及形参表“const int arr[]”中const的作用。

static int f(const int arr[])

{

/*函数体内的语句省略*/

}

点击查看答案
账号:
你好,尊敬的用户
复制账号
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
简答题
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
简答题
点击打开微信