2017上半年程序员考试真题及答案-下午卷.docVIP

  • 7
  • 0
  • 约9千字
  • 约 17页
  • 2021-08-24 发布于北京
  • 举报

2017上半年程序员考试真题及答案-下午卷.doc

2017上半年程序员考试真题及答案-下午卷 试题一(共 20 分) 阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 【说明】 设有二维整数数组(矩阵)A[1:m,1:n],其每行元素从左至右是递增的,每列元素从上到下是递增的。以下流程图旨在该矩阵中需找与给定整数 X 相等的数。如果找不到则输出“false”;只要找到一个(可能有多个)就输出“True”以及钙元素的下标 i 和 j(注意数组元素的下标从 1 开始)。 例如,在如下矩阵中查找整数 8,则输出伟:True,4,1 2 4 6 9 4 5 9 10 6 7 10 12 8 9 11 13 流程图中采用的算法如下:从矩阵的右上角元素开始,按照一定的路线逐个取元素与给定整数 X 进行比较(必要时向左走一步或向下走一步取下一个元素),直到找到相等的数或超出矩阵范围(找不到)。 【流程图】 【问题】该算法的时间复杂数是() 供选择答案:A.O(1) B.O(m+n) C.(m*n) D,O(m2+n2) (1)n (2)j-1→j (3)i+1→I (4)j (5)B 读题,可以看出元素查找的过程为从右上角开始,往右或者往下进行查找。因此,初始值i=1,j=n。 如果查找值小于右上角值,则往右移动一位再进行比较。所以,第二空填j-1→j 。 接下来是判断什么时候跳出循环。此时,终止循环的条件是:j=0,也就是其从最右端移到了最左端。 再看XA[i,j]不成立时,执行流程的右枝。此时,也就是说第一行的最大值都小于查找值,因此需往下移动一行。所以第三空填i+1→I 。 试题二(共 15 分) 阅读下列说明和 C 函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。 【说明】 函数 isLegal(char*ipaddr)的功能是判断以点分十进制数表示的 iPV4 地址是否合法。参数 ipadddr 给出表示 iPV4 地址的字符串的首地址,串中仅含数字字符和“.”。若 iPV4 地址合法则返回1,否则反馈 0.判定伟合法的条件是:每个十进制数的值位于整数区间[0,25],两个相邻的树之间用“.”分隔,共 4 个数、3 个“.”。;例如,5、 是合法的,56、1.1..1是不合法的。 【函数】 int isLegal (char*ipaddr) ﹛ int flag; int cur Val; //curVal 表示分析出的一个十进制数 int decNum=0,dotNum=0; //decNum 用于记录十进制数的个数 //dotNum 用户记录点的个数 Char*p=() for(;*p;p++) ﹛ curVal=0;flag=0 While (isdigit(*p))﹛ //判断是否伟数字字符 CurVal=()+*p-′0′; () flag=1; ﹜ if(curVal255)﹛ return 0; ﹜ if (flag)﹛ () ﹜if(*p=′.′﹛ dotNum++; ﹜ ﹜ if ()﹛ return 1; ﹜ return 0; ﹜ (1)ipaddr (2)curval*10 (3)p++ (4)decNum++ (5)decNum==4 dotNum==3 此题判断IPV4地址是否合法,主要是判断其每个十进制数的大小和总个数以及“.”个数来进行判别。 首先用isdigital函数判断是否为十进制数,是则保留值。指针移到地址的下一个字符。 每找到一个十进制数都需要和前一次找到的值进行组合,即前一次的结果要乘以10。 每找完一个完整数字和“.”都需要记录,所以要有decNum++和dotNum++。 最后,如果IP地址正确,则返回1。即:decNum=4和dotNum=3时成立。 【试题三】 阅读下列说明和 C 函数,填补 C 函数中的空缺,将解答填入答案纸的对应栏目内。 【说明】 字符串是程序中常见的一种处理对象,在字符串中进行子串的定位、插入和删除是常见的运算。 设存储字符串时不设置结束标志,而是另行说明串的长度,因此串类型定义如下: Typedef struct ﹛ Char*str //字符串存储空间的起始地址 int lehgth //字符串长 int capacity //存储空间的容量 ﹜SString; 【函数 1 说明】 函数 indexStr(S,T,pos)的功能是:在 S 所表示的字符串中,从下标 pos 开始查找 T 所表示字符串首次出现的位置。方法是:第一趟从 S 中下标为 pos、T 中下标伟 0 的字符开始,从左往右逐个对于来比较 S 和 T 的字符,直到遇到不同的字符或者到达 T 的末尾。若到达 T 的末尾,则本趟匹配的起始下标 pos 为

文档评论(0)

1亿VIP精品文档

相关文档