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

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

1、国家二级 C语言机试(操作题)模拟试卷 582及答案与解析 一、程序填空题 1 人员的记录由编号和出生年、月、日组成, N名人员的数据已在主函数中存入结构体数组 std中,且编号唯一。函数 fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include string h #define N 8 typedef struct char num1

2、0; int year, month, day; STU; *found* 【 1】 fun(STU*std, char*num) int i; STU a=“, 9999, 99, 99; for(i=0; i N; i+) *found* if(strcmp(【 2】 , num)=0) *found* return(【 3】 ); return a; main() STU stdN=“111111“, 1984, 2, 15, “222222“, 1983, 9, 21,“333333“, 1984, 9, 1, “444444“, 1983, 7, 15, “555555”, 1984

3、, 9, 28, “666666“, 1983, 11, 15), “777777“, 1983, 6, 22), “888888“, 1984, 8, 19; STU p; char n10=“666666“; p=fun(stct, n); if(p rlLlm0_=0) printf(“ nNot found! n“); else print: f(“ nSucceed! n“); printf(“ s d一 d一 d n“, p num, p year, p month, p day); 二、程序修改题 2 下列给定程序中,函数 fun的功能是:从 s所指字符串中,找出 t所指字符串的

4、个数作为函数值返回。例如,当 s所指字符串中的内容为 “abcdabfab”, t所指字符串的内容为 “ab”,则函数返回整数 3。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include conio h #include stdio h #include string h int fun(char*s, char*t) int n; char*p, *r; n=0; while(*s) p=s; r=t; while(* r) *found* if(*r=*p)r+;

5、 p+ else break; *found* if(r= 0) n+; s+; return n; void main() char s100, t100; int m; system(“CLS“); printf (“ nPlease enter string s: “); Scanf(“ s“, s); prJ_ntf(“ nPlease enter substring t: “); Scanf(“ s“, t); m=fun(s, t); printf(“ nTlae result is: m = d n“, m); 三、程序设计题 3 请编写函数 fun,该函数的功能是:将 s所指字

6、符串中 ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在 t所指的数组中。 例如,若 s所指字符串中的内容为 “ABCDEFGl2345”,其中字符 B的 ASCII码值为偶数,字符 2的 ASCII码值为偶数,都应当删除,其他依此类推。最后 t所指的数组中的内容应是 “ACEGl35”。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程 序: #include stdlib h #include stdio h #include string h #include conio h void fun

7、(char*s, char t) void main() char s100, t100; system(“CLS“); printf(“ nPlease enter string s: “); Scanf(“ s“, s); fun(s, t); print: f(“ nThe result: is: s n“, t); 国家二级 C语言机试(操作题)模拟试卷 582答案与解析 一、程序填空题 1 【正确答案】 (1)STU (2)stdi.num (3)stdi 【试题解析】 本题考查: if条件表达式;比较字符串函数 strcmp;指针变量的使用;函数定义及函数返回值。 strcmp函数

8、用来比较两个字符数组的大小,其格式为: strcmp(字符数组 1,字符数组 2)。若字符数组 1字符数组 2,函数值大于 0(正数);若字符数组 1=字符数组 2,函数值等于 0;若字符数组 1字 符数组 2,函数值小于 0(负数)。 填空 1:根据函数 fun的返回值类型可知,函数类型标识符应该是结构体类型的,所以填入 STU。 填空 2:根据题目说明,找出指定编号人员,并将其数据返回。通过 strcmp函数比较编号,若相同则函数值为 0,所以填入 stdi num。 填空 3:由题目可知,假如编号对应,则返回其编号对应数据,所以填入数据stdi。 二、程序修改题 2 【正确答案】 (1)

9、if(*r=*p) r+; p+; (2)if(*r= 0) 【试题解析】 本题考查: if语句, 考生需要根据题意确定 if语句的判断条件;字符串结束标识,所有的字符串都要以 0结尾,上机考试常考知识点,考生一定要牢记;复合赋值运算,常用于循环控制和变量的累加、累乘。 从字符串 s中找出子串 t的方法是:从第 1个字符开始,对字符串进行遍历,若 s串的当前字符等于 t串的第 1个字符,两个字符串的指针自动加 1,继续比较下一个字符;若比较至字符串 t的结尾,则跳出循环;若 s串的字符与 t串的字符不对应相同,则继续对 s串的下一个字符进行处理。 三、程序设计题 3 【正确答案】 void f

10、un(char*s, char t) int i=0; for(; *s!= 0; s+) *找出 ASCII值为奇数的字符依次存入数组 t中 * if(*s 2=1) ti+=*s; ti= 0; *在字符串的末尾加上串结束符 * 【试题解析】 本题要求将 s所指字符串中 ASCII码值为偶数的字符删除,因此本题要求采用一个 for循环来找出 ASCII码值为奇数的字符依次存入数组 t中,并使用 if条件句来判断 s所指字符串中 ASCII码值是否为奇数。用 0加在字符串的末尾来表示字符串的结束 。 要删除 ASCII码值为偶数的字符,也就是要留下 ASCII码值为奇数的字符。由于最终是要求出剩余字符 (即 ASCII码值为奇数 )形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,并找出 ASCII码值为奇数的字符并将其依次存入数组 t中。此外,还要注意数组 t的下标变化和下标的初值 (初值必须为 0,即 i-0),ti+的作用是先使用 ti,然后再使 i自增 1。

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

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

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