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

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

1、国家二级 C语言机试(操作题)模拟试卷 659及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:在形参 s所指字符串中寻找与参数 c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若 s所指字符串为 “baacda”, c中的字符为 a,执行后 s所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果 。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构

2、 ! 试题程序: #include stdio h void fun(char*s, char c) int i, j, n; *found* for(i=0; si!=【 1】 ; i+) if(si=c) *found* n=【 2】 ; while(si+1+n!= 0) n+; for(j=i+n+1; j i; j-) sj+1=sj; *found* sj+1=【 3】 ; i=i+1; main() char s80=“baacda“, c; printf(“ nThe string: s n“, s), printf(“ nInput a character: “); scan

3、f(“ c“, &c); fun(s, c); printf(“ nThe result is: s n“, s); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modil c。在此程序中,函数 Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋 0到 m-1的值。 请改正函数 Creatlink中指定部位的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #incl

4、ude stdlib h typedef struct aa (int data; Struct aa*next; NODE; NODE*Creatlink(int n, intm) NODE*h=NULL, *p, *s; int i; *found* p=(NODE)malloc(sizeof(NODE); h=p; p- next=NULL; for(i=1; i =n; i+) s=(NODE*)malloc(Sizeof(NODE); s- data=rand() m; s- next=p- next; p- next=s; p=p- next; *found* return p;

5、outlink(NODE*h) NODE*p; p=h- next; printf(“ nnTHE LIST: n nHEAD“); while(p) printf(“- d“, p- data); p=p- next; printf(“ n“); main() NODE*head; head=Creatlink(8, 22); outlink(head); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 C。在此程序中,规定输入的字符串中只包含字母和 *号。请编写函数 fun,其功能是:使字符串的前导 *号不

6、得多于 n个,若多于 n个,则删除多余的 *号;若少于或等于 n个,则不做处理。字符串中间和尾部的 *号不删除。 例如,字符串中的内容为 “*A*BC*DEF*G*”,若 n的值为 4,删除后,字符串中的内容应当是 “*A*BC*DEF*G*”;若 n的值为 8,则字符串中的内容仍为 “*A*BC*DEF*G*”。 n的值在主函数中输入。在编写函数时,不得使用 C语言提供的字符串函数。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #include conio h vo

7、id fun(char*a, int n) void main() char s81; int n; printf(“Enter a string: n“); gets(s); printf(“Enter n: “); scanf(“ d“, &n); fun(s, n); printf(“The string aEter deleted: n“); puts(s); 国家二级 C语言机试(操作题)模拟试卷 659答案与解析 一、程序填空题 1 【正确答案】 (1) 0 (2)0 (3)c 【试题解析】 填空 1: for语句循环条件是判断是否到达字符串结尾,即当前字符是否为 0。 填空 2:

8、 while语句用以确定字符串的长度,所以变量 n赋初值为 0。 填空 3:题目要求如 果找到与参数 c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为 c。 = 二、程序修改题 2 【正确答案】 (1)p=(NODE*)malloc(sizeof(NODE); (2)returnh; 【试题解析】 (1)由变量定义可知 p为指向结点的指针。指向刚分配的结构指针,所以应改为 p=(NODE*)malloc(sizeof(NODE)。 (2)在动态分配内存的下一行语句是,使用临时结构指针变量 h保存 p指针的初始位置,最后返回不能使用 p,是因为 p的位置已经

9、发 生了变化,所以应改为returnh。 三、程序设计题 3 【正确答案】 void fun(char*a, int n) inti: 0, k=0; char*p, *t; p=t=a; *开始时, p与 t同时指向数组的首地址 * while(爿 ct=*) *用 k来统计前部星号的个数 * k+; t+; if(k n) *如果 k大于 n,则使 p的前部保留 n个星号,其后的字符依次存入数组a中 * while(*p) ai=*(p+k-n); i+; p+; ai= 0; *在字 符串最后加上结束标识 * 【试题解析】 字符串中前导 *号不能多于 n个,多余的应删除。首先需要通过while循环统计字符串前导 *号的个数,然后通过 if条件语句完成前导 *号的个数和n的比较,如果前导术号多于 n个,需要把 n个 *号和其余字符重新保留。

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

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

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