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

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

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

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

程序填空题

1.给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

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

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

1 #include<stdio.h>

2 #include<Stdlib.h>

3 #define N 8

4 typedef struct list

5 { int data;

6 struct 1ist *next;

7 } SLIST;

8 void fun(SLIST *p)

9 { SLIST *t,*e;

10 t=p->next;s=p;

11 while(t->next!=NULL)

12 { s=t;

13 /**********found**********/

14 t=t->___1___;

15 }

16 /**********found**********/

17 printf(’’%d’’,___2____);

18 s->next=NULL;

19 /**********found**********/

20 free( ___3____);

21 }

22 SLIST *creatlist(int *a)

23 {SLIST *h,*p,*q;it i;

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

25 for(i=0;i<N;i++)

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

27 q->data=a[i];p->next=q;p=q;

28 }

29 p->next=0;

30 return h;

31 }

32 void outlist(SLIST *h)

33 {SLIST *p;

34 p=h->next;

35 if (p==NULL) printf(’’\nThelist is NULL!\n’’);

36 else

37 { printf(’’\nnead’’);

38 do {printf(’’->%d’’,p->data);p=p->next;} while(p!=NULL);

39 printf(’’->End\n’’);

40 }

41 }

42 main()

43 {SLIST *head;

44 int a[N]={11,12,15,18,19,22,25,29};

45 head=creatlist(a);

46 printf(’’\nOutput from head:\n’’);outlist(head);

47 printf(’’\nOutput from tail:\n’’);

48 while(head->next!=NULL) {

49 fun(head);

50 printf(’’\n\n’’);

51 printf(’’\nOutput from head again:\n’’);outlist Ihead);

52 }

53 }

(1)next

(2)t->data

(3)t

解析:fun函数的功能是输出链表尾部结点中的数据,并释放该结点,使链表缩短。由于链表是单向的,找到链表尾部结点需要利用循环从头结点开始查找,直至找到最后一个,找到之后输出尾部结点的数据,然后删除尾结点。

第一空:fun函数中的循环目的是找到尾结点“while(t->next!=NULL)”,利用结点变量s和t,s指向当前节点,t不断指向下一个结点,因此,第一空处应该是“t=t->next;”。第二空:这里是输出尾结点中的数据,已经利用循环找到了尾结点t,t的数据是t->data,因此,第二空处应该为“printf(’’%d’’,t->data),”。第三空输出尾结点数据之后删除尾结点,使用free,又因为尾结点是t,因此,第三空处应该为“flee(t);”。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。

例如,若字符串为abed,则应输出:dcba。

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

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

1 #include<stdio.h>

2 /************found************/

3 fun(char a)

4 { if(*a)

5 { fun(a+1);

6 /************found************/

7 printf(’’%c’’ *a);

8 }

9 }

10 main()

11 { char s[10]=’’abcd’’;

12 printf(’’处理前字符串=%s\n处理后字符串=’’,s);

13 fun(s);printf(’’\n’’);

14 }

(1)void fun(char*a)

(2)printf(’’%c’’,*a);

解析:本题中函数的功能是将字符串中的内容逆序。题干中给出的fun函数通过递归调用自身,实现字符串的逆序。

(1)主函数中“fun(s);”语句中的s是数组名,所以在fun函数中参数的定义应该是指针型,“fun(char a)”改为“void fun(char *a)”。

(2)printf函数的调用形式是:printfif格式字符串,输出项表),在格式字符串和输出项表之间有“,”,因此,第二个标识处应该是“printf(’’%c’’,*a);”。

程序设计题

3.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

例如,输入beijing<CR>shanghai<CR>(<CR>为回车键),函数将返回shanghai。

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

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

1 #include<stdio.h>

2 char *fun(char *s,char *t)

3 {

4 }

5 main()

6 { char a[20],b[20];

7 void NONO();

8 printf(’’Input:1

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号