计算机二级C语言机试题库(6)

2018-11-19 21:11

计算机等级考试二级C语言内部教材

{ struct student s={10001,\int i;

printf(\

printf(\for (i=0; i<3; i++) printf(\printf(\t = fun(s);

printf(\

printf(\for (i=0; i<3; i++) printf(\printf(\}

解题思路:

本题是对结构体变量中的值进行修改并通过函数值返回。 第一处:必须定义结构返回类型,所以应填:struct student。 第二处:对姓名进行修改,所以应填:a.name。

第三处:分别对成绩增加1分,所以应填:a.score[i]。

第25套

人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include #define N 8 typedef struct { char num[10]; int year,month,day ; }STU;

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

___1___ fun(STU *std, char *num) STU { int i; STU a={\for (i=0; i

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

if( strcmp(___2___,num)==0 ) std[i].num /**********found**********/

return (___3___); std[i] return a; } main()

{ STU std[N]={ {\{\

26

计算机等级考试二级C语言内部教材

{\STU p; char n[10]=\p=fun(std,n); if(p.num[0]==0)

printf(\else

{ printf(\

printf(\} }

解题思路:

本题是要求从给定的人员数据中找出编号相同的记录数据。 第一处:从返回值来看,是返回一个结构型的值,所以应填:STU。 第二处:判断结构变量中的编号num是否相等,所以应填:std[i].num。 第三处:返回编号相等的记录值,所以应填:std[i]。

第26套

给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数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___); q /**********found**********/

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

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

27

计算机等级考试二级C语言内部教材

q=q->___3___; next } } } }

SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i;

h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i

{ 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(\else

{ printf(\

do { printf(\printf(\} } main( )

{ SLIST *head; int a[N]={1,2,2,3,4,4,4,5}; head=creatlist(a);

printf(\fun(head);

printf(\}

解题思路:

本题是考察考生对链表的操作,主要是解决删除链表中数据域值相同的结点。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。

函数fun中使用两个临时结构指针变量p和q对链表进行操作。首先p指向链表开始的next指针,q指向p的next指针,再利用while循环语句来判断指针q是否NULL,如果q指针是指向NULL, 那么函数结束返回。如果不是NULL,那么就要判断p和q中data值是否相同,如果值相同,则要删除该结点,然后继续判断下一结点值是相同,如果还相同,那么继续删除结点,直至不相同为止。如果两个结点的值不相同,那么p就指向q,q指向q的next指针再继续操作上述过程。

删除结点的方法是:先将p的next指针指向q的next指针,再释放q指针指向的内存,最后把q指针再指向p的next指针就可以删除一个链表中的结点了。 第一处:释放q指针所指的内存空间,应填q。

第二处:q指针指向p的next指针,重新完成链接,应填next。

第三处:两个结点的值不相同,那么q就指向q的next指针,应填next。

28

计算机等级考试二级C语言内部教材

第27套

给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。 例如,当形参n的值为10时,函数返回:9.612558。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include double fun(int n) { int i; double s, t; /**********found**********/

s=__1__; 0 /**********found**********/

for(i=1; i<=__2__; i++) n { t=2.0*i;

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

s=s+(2.0*i-1)*(2.0*i+1)/__3__; t*t }

return s; } main() { int n=-1; while(n<0)

{ printf(\printf(\}

解题思路:

第一处:根据公式可知,累加和变量s,应置0。 第二处:for循环的终止值应为形参n。

第三处:根据公式以及函数体中t变量内容,所以应填:t*t。

第28套

给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。输出结果为:4。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(char *s, int *t) { int i, n; n=0;

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

for(i=0; ___1___ !=NULL; i++) s[i] /**********found**********/

if(s[i]>='0'&&s[i]<= ___2___ ) n++; '9'

29

计算机等级考试二级C语言内部教材

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

___3___ ; *t=n } main()

{ char s[80]=\int t;

printf(\fun(s,&t);

printf(\}

解题思路:

第一处:在for循环中终止值要判断字符串是否结束符,所以应填:s[i]。 第二处:判断是否是数字,所以应填:'9'。

第三处:字符串中数字字符出现的次数n,并存放在形参t所指的变量中,所以应填:*t=n。

第29套

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。

例如: b所指变量t中的学号、姓名、和三门课的成绩依次是: 10002、\、93、85、87,修改后输出t中的数据应为:10004、\、93、 85、87。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include struct student { long sno; char name[10]; float score[3]; };

void fun( struct student *b) { int i;

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

b__1__ = 10004; ->no /**********found**********/

strcpy(b__2__, \} main()

{ struct student t={10002,\int i;

printf(\

printf(\for (i=0; i<3; i++) printf(\printf(\

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

30


计算机二级C语言机试题库(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:爆炸冲击波

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: