首页 > 全部 > 二级C语言 > 国家二级C语言机试(操作题)模拟试卷367

国家二级C语言机试(操作题)模拟试卷367

本单篇文档共3448字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 6827人下载
价格: 1.60 原价:¥7.00
收藏

国家二级C语言机试(操作题)模拟试卷367

程序填空题

1.给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

#include

#define N 8

typedef struct list

{ int data;

struct list *next;

} SLIST;

void fun (SLIST *h)

{SLIST *p,*q;

p=h—>next ;

if (p ! =NULL)

{ q=p一>next;

while (q ! =NULL)

{ if (p—>data==q—>data)

{ p—>next=q—>next;

/*********found**********/

free (____1____ ) ;

/*********found**********/

q=p—>____2____ ;

}

else

{p=q;

/*********found**********/

q=q—> ____3____ ;

}

}

}

}

SLIST *creatlist (int *a)

{SLIST *h,*p,*q; int i;

h=p= (SLIST *) malloc (sizeof (SLIST)) ;

{ q=(SLIST *) malloc (sizeof (SLIST)) ;

q—>data=a [i] ; p—>next=q; p=q;

}

p—>next=0 ;

return h;

}

void outlist (SLIST *h)

{SLIST *p;

p=h—>next;

if (p==NULL) printf(\\

(1) q

(2) next

(3) next

解析:函数fun的功能是删除链表中数据域值相同的结点,只保留一个。

第一空:p和q是两个SLIST结构体指针,分别指向两个相邻的结点。“if (p—>data=q—>data)”成立则应该删除其中一个结点,“p—>next=q—>next; ”p指向q的下一个结点,那么q结点就可以删除了,因此第一空处应该为“free(q); ”。

第二空:在第一空处,q指向的结点已经被删除,如果要继续循环搜索数据域值相同的结点,那么q需要重新指向p的下一个结点,因此第二空处应该为“q=p—>next; ”。

第三空:如果“if (p—>data=q—>data)”不成立,那么p和q都向结点尾移动一个结点位置,因此第三空处应该是“q=q—>next; ”。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动mam函数,不得增行和删行,也不得更改程序的结构!

#include

#define N 20

void fun(int a[],int n)

{ int i,j,t,p;

for (j = 0 ;j < n—1;j++) {

/*********found**********/

p=j

for(i=j;i<n;i++)

if (a [i] < a[p] )

/*********found**********/

p = j;

t =a[p]; a[p] = a[j]; a[j] = t;

}

}

main ( )

{

int a[N]={9,6,8,3,—1},i,m =5;

printf ( \\

(1)p=j;

(2)p=i;

解析:程序利用选择法实现数组中的n个元素从小到大的排序。

(1)第一个标识下面“p=j”,根据C语言的语法,不难发现语句结束缺少分号,因此改为“p=j;”。

(2)第二个标识下面的“p=j; ”上两句是以i作为循环和判断条件,其中语句“for(i=j;i<n;i++)”和“if(a[i]<a[p])”是将第p个元素与剩下的所有元素从第j个以后到最后一个进行循环比较,所以改为“p=i;”。

程序设计题

3.请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:

7 1 1 14 21 22 28 33 35 42 44 49

注意:部分源程序存在文件PROG1.C中。

请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#define M 100

void fun (int m. int *a , int *n)

{

}

main()

{int aa [M], n. k;

void NONO ();

fun (50, aa, &n);

for (k= 0; k<n; k++)

if((k+1) 0020==0) printf(\\

1 inti,j=0;* n=0;

2 for(i=1;i<=m;i++)

3 if (1%7==0||i%11==0)

4 { a[j]=i;

5 j++; }

6 * n=j;

解析:该题是求某范围内能被7或11整除的数。该程序的解题思路可以分解为以下几步:判断是否被7整除一判断或者是否被11整除一按要求返回计算结果。

本文档预览:3600字符,共3448字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(操作题)模拟试卷367

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号