1、国家二级 C语言程序设计机试(程序填空题)模拟试卷 4及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:在带头结点的单向链表中,查找数据域中值为 eh的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为 ch的结点,函数返回 0值。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include #include #define N 8 typedef struet list int data; struet list*next; SLIST; SLIST*creatlist(
2、char*); void ouflist(SLIST); int fun(SLIST*h, char ch) SLIST*P; int n=0; P=h一 next; *found* while(P!=_1_) n+: if(P一 data: =ch) *found* return _2_; else P=P一 next: return 0; main() i SLIST$head: int k; char eh; chae: aN=; m, P, g, a, w; x r, d; head: creatlist(a); outhst(nead); printf(“Enter a letter
3、: ”); scanf(“ c, x=rand() 20: main () int xN=0, i; fun(x); pfinff(“The result: n”); for(i=0; iN; i+) printf(“ 4d”, xi); if(i+1) 5=0)pfinff(“ n”); pfinff(“、 n”); 国家二级 C语言程序设计机试(程序填空题)模拟试卷 4答案与解析 一、程序填空题 1 【正确答案】 (1)NULL (2)n (3)llead, ch 【试题解析】 本题考查:链表相关知识; while循环语句;函数返回值。 填空 1: while循环语句判断是否到达链 表结尾
4、,链表结尾结点指针域是 NULL。 填空 2:若找到指定字符,则通过 return语句将该结点在链表的顺序号返回给main函数。 填空 3:函数调用语句,其形式是:函数名 (实际参数表 ),因此根据函数定义语句,填入: heaqd, ch。 2 【正确答案】 (1)FILE* (2)fp (3)ch 【试题解析】 填空 1:由语句 fopen(“filel txt”, “r”)可知, fp应该是文件类型指针,因此本空应该填写 FILE*。 填空 2: feof函数只能对文件类型数据进行操作,因此本空填写 fp。 填空 3: putchar()代表输入一个字符,从 ch=fgetc(fp)可以看
5、出本题应该填写 ch。 3 【正确答案】 (1)“r” (2)fS (3)ft 【试题解析】 本题考查:打开文件操作, fopen函数用来打开一个文件,其一般形式为 “文件指针名 =fopen(文件名,使用文件方式 ); ”;文件结束检测函数 feof函数;写字符函数 fputc,功能是把一个字符写入指定的文件中,函数调用的形式为“fputc(字符量,文件指针 ); ”。其中,待写入的字符量可以是字符常量或变量,被写入的文件可以 用写、读写、追加方式打开。文件一旦使用完毕,需使用关闭文件函数 fclose将文件关闭,以避免文件的数据丢失等错误。 填空 1:本题考查对文件操作的掌握。打开一个文件
6、的调用方式是: fs=fopen(文件名,使用文件方式 ),以只读的方式打开文件,所以文件打开方式为 “r”。 填空 2: while循环语句中,循环条件通过 feof()函数来检测是否到文件结尾。 填空 3: fputc()函数用于将一个字符写到磁盘文件上,调用形式为: fputc(要输出的字符,文件指针 )。 4 【正确答案】 (1)N或 20 (2)brefitk (3)n 【试题解析】 填空 1:变量 n用于存储数组的下标,要通过 while语句对数组进行赋值,数组的容量为 20,因此循环条件应为 n20。 填空 2:通过一个 for循环判断 x是否与数组中已存的元素重复,若重复则跳出for循环结束。 填空 3:若 for循环是由 break语句结束的,则 x与数组中的元素重复,此时 i必然小于 n:若 for循环是因为循环变量 i递增到某值,而不再满足循环条件结束的,说明 x的值与数组中的元素不重复,则此时 i的值等于 n。