试题二(共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*/
第1题:
阅读下面的说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。
[说明]
阅读以下说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。
windows Server 2003是一个多任务多用户的操作系统,能够以集中或分布的方式实现各种应用服务器角色,是目前应用比较广的操作系统之一。
Windows内置许多应用服务功能,将下表中(1)~(5)处空缺的服务器名称填写在答题纸对应的解答栏内。

(1)
第2题:
试题一(共15分)
阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。
【 说明】
某校园网拓扑结构如图 1-1 所示,其中网络中心与图书馆相距约 700 米。要求干线带宽为千兆,百兆到桌面。

【问题1】(6 分 )
为图1-1中(1)~(3)空缺处选择合适设备。
(1)~(3)备选答案:
A. 路由器
B. 接入交换机
C. 三层核心交换机
D. 远程访问服务器
第3题:
阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。
[说明]
如图10-4所示是电子商务系统平台结构示意图。

请把空缺的地方填写完整。
第4题:
阅读以下说明和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程序控制结构的应用

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

这样数组中的奇数全部排在偶数之前
第5题:
阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 函数 f(double eps) 的功能是:利用公式
计算并返回 π 的近似值。
【说明 2】 函数fun(char *str)的功能是:自左至右顺序取出非空字符串 str中的数字字符,形成一个十进制整数(最多 8 位)。例如,若 str中的字符串为 "iyt?67kp f3g8d5.j4ia2e3p12", 则函数返回值为 67385423。
第6题:
●试题二
阅读下列函数说明和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");
}
}
第7题:
试题三(共 15 分)
阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

第8题:
第9题:
第10题:


第11题:

第12题:
第13题:
试题一(共15分)
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。
【说明】
某网吧拓扑结构如图 1-1 所示,可提供影视、游戏竞技、视频聊天等多种服务,采用VLAN 划分来区分不同的服务。

问题 1】(2分)
网吧要求实现千兆接入,可采用的方式为 (1) 。
(1)备选答案:
A. FTTx
B. ADSL
C. PSTN拨号
第14题:
阅读以下说明和关系表,回答问题1~4,将解答对应的解答栏内。
[说明]
关系变量R{A,B,C,D,E,F}满足如下的函数依赖
AD→E,AEB→D,B→CF,DE→B,DC→E,EC→FA,EF→DB,E→A
求此模型的最小函数依赖集。
第15题:
阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。
[说明]
电子商务系统的外部社会环境如图10-5所示。

请把空缺的地方填写完整。
第16题:
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
下图是一个完整的供应链结构图,如图7-1所示。

图7-2是管进与电子商务的整全图。

请把图7-1空缺的部分补充完整。
第17题:
阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的
对应栏内。
【说明】
很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克
牌,洗牌后再按顺序打印每张牌的点数和花色。
【Java代码】


第18题:
试题二 ( 共15 分)
阅读以下问题说明、C 程序和函数,将解答填入答题纸的对应栏内。
【 问题1 】
分析下面的C 程序,指出错误代码(或运行异常代码)所在的行号。
【C程序】

【 问题2】
函数inputArr(int a[], int n)的功能是输入一组整数(输入0或输入的整数个数达到n时结束)存入数组 a,并返回实际输入的整数个数。函数 inputArr 可以成功编译。但测试函数调用inputArr后,发现运行结果不正确。
请指出错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行,使之符合上述设计意图。
【C 函数】

第19题:
阅读以下两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【说明1】
函数main()的功能旨在对输入的一个正整数n,计算12+22+32+…+n2,但是对该函数进行测试后没有得到期望的结果。
【c函数】

1.输入5测试上述main函数时,显示结果如下所示。
input an integer:5
result:-582598909
2.将行号为7的代码修改为:prinff(”n=%d\nresuh:%d\n”,n,sum);并再次
输入5测试main函数,显示结果如下所示。
input an interger:5
n=2293632
result:-582598909
阅读以上两个说明、c函数和问题,将解答写入答题纸的对应栏内。
【问题1】
请给出上述main函数中需要修改的代码行号,并给出修改后的整行代码。

【说明2】
函数test_f2{}编译时系统报告有错,修改后得到函数12_B{}。对函数12_B{}
进行编译时顺利通过,在某些C系统中执行时却由于发生异常而不能正确结束。
【c函数2】

【问题2】(1)请指出函数test_f2中不能通过编译的表达式;(2)请指出可能导致函数f2_B运行异常的表达式。
以上的答案仅供参考并没有先后顺序。另外对sum进行初始化的“sum=O;”也可以加在第3行第4行以及第5行的适当的位置。
问题(2):(1)str++ (2) str:‘a’
以上的答案仅供参考,并没有先后顺序。另外对sum进行初始化的“sum=O;”也可以加在第3行,第4行以及第5行的适当的位置。
问题(2):(1)str++ (2) str:‘a’ 解析:问题(1)解析:程序中的错误可以分为语法错误和语义错误,其中语义错误又可以分为静态语义错误和动态语义错误。语法错误和静态语义错误可以在编译的时候发现,而动态的语义错误只有在程序运行的结果中才能表现出来。C函数1中的main函数通过编译但是运行结果不对,虽然输出的是sum的值,但是在for循环中sum的值的得到与k以及n的值是相关的,因此我们需要从n、k、sum的定义和初始化查起。首先来看k,在定义的时候没有被初始化,但是在for循环进行使用的时候被初始化为1,后面通过k++进行改变的,这一部分是正确的。接下来看n,n在定义的时候也没有被初始化,n的值是通过scanf(“%d”,n)取得的,由第二次测试的显示结果可以看出,n的值并不是我们的输入值5,很显然n的值设定不对,回头仔细检查scanf函数的调用才发现n的前面缺少取地址运算符“&”,作为一名程序员都应该知道scanf中的变量使用的是地址,所以正确的写法为“scanI。(“%d”,&m);”;再来看sum,sum的值主要是通过for循环中的语句“sum+=k*k”来改变的。“sum+=k*k”实际上等同于“sum=sum+k*k”,可是我们知道sum在定义的时候并没有初始化,那么在我们第一次进入for循环的时候sum的值是不确定的,在这种情况下执行语句“sum+=k*k”得到的值自然也就无法预料了,所以我们需要在sum使用之前对其进行初始化“sum=0”。另外,在程序中还有一处就是第5行,可以看到在句末有一个分号,这样就等于for循环语句的循环体为空,“sum+=k * k”语句并没有被包含到for循环语句中,只是在循环结束后执行一次,最后输出地结果sum是等于n * n,不符合题目要求的结果(12+22+32+……+n2),正确的做法就是删除第5行末位的分号。问题(2)的解析:函数test~12()编译时系统报错,检查函数能够发现“char str[ ]=“test string”;”定义了字符数组str,并进行了初始化,因此str就是数组名,也是数组在内存中的首地址,*str则表示的是str[O],通过“* str=‘a’”改变str[O]的值是对的,但是“str++”就不对了,在c语言中str是数组名是地址常量,是不能修改的,所以系统在编译的时候会报告错误。如果我们将str定义为一个char类型的指针的话,则可以通过str++来修改str的值,使它指向不同字符对象,但是在函数f2_B()中定义“char *str=‘test string’;”的时候,直接对指针str用常量进行了初始化,使得str为一个指针常量,这样即使我们可以通过str++取得字符串中的任何一个字符,但是却不能够通过“*str=‘a’”修改*str的值,所以在运行的时候就会发生异常不能够正常结束。
第20题:

第21题:

第22题:
第23题:


第24题: