[计算机类试卷]国家二级C++机试(操作题)模拟试卷155及答案与解析.doc

上传人:rimleave225 文档编号:497216 上传时间:2018-11-28 格式:DOC 页数:6 大小:30KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(操作题)模拟试卷155及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷155及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷155及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷155及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷155及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级 C+机试(操作题)模拟试卷 155及答案与解析 一、基本操作题 1 给定程序中,函数 fun的功能是:利用指针数组对形参 ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。 ss所指字符串数组中共有 N个字符串,且串长小于 M。 请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include #include #define N 5 #def2ne M 8 void fun(char(*ss)M) char*psN, *tp; int i, j

2、, k; for(i=0; i #include #include #include #defime N 80 int fun(char*s, char*t) int n; char*p, * r; n=0; *found* *r=t; while(*s) p=s; while(*r) if(*r=*p r+; p+; else break; if(*r= 0) n+; *found* 1 ; S+; return n; void main() char aN, bN; int m; printf(“ nPlease enter string a: “); gets(a); printf(“

3、nPlease enter substring b: “); gets(b); m=fun(a, b); printf(“ nThe result is: m= d n“, m); 三、综合应用题 3 请编写函数 fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10 注意:部分源程序给出 如下。 请勿改动主函数 main和其他函数中的任何

4、内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include #define N 80 int fun(int a, int n) void main() int aN=2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10,10, i, n=20; printf(“Tne original data: n“); for(i=0; in; i+) printf(“ 3d“, ai); n=fun(a, n); printf(“ n nThe data after deleted: n“); for(i=0;

5、in; i+) printf(“ 3d“, ai); printf(“ n n“); 国家二级 C+机试(操作题)模拟试卷 155答案与解析 一、基本操作题 1 【正确答案】 (1)i (2)psj (3)tp 【试题解析】 本题是按字符串的长短进行排序。 填空 1:外循环每循环一次, k应保存当前的 i值,所以应填 i。 填空 2:使用内循环对 i+1后面的字符串长度进行比较,所以应填 psj。 填空 3:此处的作用是交换两个变量的值,所以应填 tp。 二、简单应用题 2 【正确答案】 (1)r=t; (2)r=t;或 r=&t0; 【试题解析】 从字符串 s中找出子字符串的方法是:从第一个

6、字符开始,对字符串进行遍历,若 s串的当前字符等于 t串的第一个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串 t的末尾,则跳出循环;若 s串的字符与 t串的字符不对应相同,则继续对 s串的下一个字符进行处理。 三、综合应用题 3 【正确答案】 int fun(int a, int n) int i, j=1; for(i=1; in; i+) if(aj一 1!=ai) *若该数与前一个数不相同,则要保留 * aj+=ai; return j; *返回不相同数的个数 * 【试题解析】 该程序的流程是:定义变量 i和 j,其中 j用于控制删除后剩下的数在数组中的下标, i用于搜索原数 组中的元素。 j始终是新数组中最后一个元素的下一个元素的下标,所以 if语句中的条件是 aj 1!=ai,其中 aj一 1就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,所以 ai要保留到新数组中。注意本题中 i和 j的初值都要从 1开始,该算法只能用于数组已排序的题目中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1