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

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

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

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

程序填空题

1.给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。

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

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

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

1 #include<stdio.h>

2 #include<stdlib.h>

3 #define N 5

4 typedef struct node{

5 int data;

6 struct node *next;

7 } NODE;

8 void fun(NODE *h)

9 { NODE *p,*q,*r;

10 /**********found**********/

11 p=h->___1___;

12 /**********found**********/

13 if(p==__2__)return;

14 q=p->next;

15 p->next=NULL;

16 while(q)

17 { r=q->next;q->next=p;

18 /**********found**********/

19 p=q;q=__3__ ;

20 }

21 h->next=p;

22 }

23 NODE *creatlist(int a[])

24 { NODE *h,*p,*q;int i;

25 h=(NODE *)malloc(sizeof(NODE));

26 h->next=NULL;

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

28 { q=(NODE *)malloc(sizeof(NODE));

29 q->data=a[i];

30 q->next=NULL;

31 if(h->next==NULL)h->next=p=q;

32 else{p->next=q;p=q;}

33 }

34 return h;

35 }

36 void outlist(NODE *h)

37 { NODE *p;

38 p=h->next;

39 if(p==NULL)printf(’’The 1ist is NULL!\n’’);

40 else

41 { printf(’’\nHead’’);

42 do

43 { printf(’’->%d”,p->data);p=p->next;}

44 while(p!=NULL);

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

46 }

47 }

48 main()

49 { NODE *head;

50 int a[N]={2,4,6,8,10};

51 head=creatlist(a);

52 printf(’’\nThe original list:\n’’);

53 outlist(head);

54 fun(head);

55 printf(’’\nThe list after inverting:\n¨);

56 outlist(head);

57 }

(1)next (2)0或NULL (3) r

解析:函数fun的功能是将带头结点的单向链表逆置。第一空:“p=h->__1__;”对结点p进行初始化,由审题分析可知,p初始化为链表的第二个结点,即p->next,故第一空处应为“next”。第二空:“if(p==__2__)return;”如果链表只有一个结点,无需逆置,即第二空处为“0”或“\0”或“NULL”。第三空:循环内完成结点的指针指向前一个结点,“r=q->next;”r已经指向q的下一个结点,“q->next=p;”将q结点指向链表的前一个结点,“p=q;”是将p结点往后移动一个结点位置,第三空处是q结点往后移动一个结点位置,即第三空处为“r”。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。

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

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

1 #include<stdio.h>

2 void fun(char *s,int num[5])

3 { int k,2=5;

4 for(k=0;k<i;k++)

5 /**********found**********/

6 num[i]=0;

7 for(;*s;s++)

8 { i=-1 ;

9 /**********found**********/

10 switch(s)

11 {case ’a’:case ’A’:{i=0;break;}

12 case’e’:case’E’:{i=1;break;}

13 case ’i’:case ’T’:{i=2;break;}

14 case ’o’:case’0’:{i=3;break;}

15 case’u’:case’U’:{i=4;break;}

16 }

17 if(>=0)

18 num[i]++;

19 }

20 }

21 main()

22 { char s1[81];int num1[5],i;

23 printf(’’\nPlease enter a string:’’);gets(s1);

24 fun(s1,num1);

25 for(i=0;i<5;i++)printf(’’%d’’,num1[i]);printf(’’\n’’);

26 }

(1)num[k]=0;(2)switch(*s)

解析:(1)第一个标识下的for循环过程是将num数组中的变量初始值设置为0,用来统计每一个元音字母出现的个数,for循环中的循环条件表达式中的变量是k,所以第二个标识下“num[i]=0;”改为“num[k]=0;”。

(2)第二个标识下的switch-case条件选择的功能应该是对s指针指向的字符串中的每一个字符进行判断,不应该是s的数组名,所以第三个标识下“switch(s)”改为“switch(*s)”。

程序设计题

3.请编写一个函数fun,它的功能是:

计算n门课程的平均分,计算结果作为函数值返回。

例如:若

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号