计算机二级C语言机试112_第1页
计算机二级C语言机试112_第2页
计算机二级C语言机试112_第3页
计算机二级C语言机试112_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 模拟 计算机二级C 语言机试112一、填空题第 1 题:程序填空题给定程序中,函数fun 的功能是:将形参std 所指结构体数组中年龄最大者的数据作为函数值返回,并在main 函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分原程序给出如下。请勿改动主函数main 和其他函数中的任何内容,仅在行线上填入所编写的若干表达式或语句。 试题源程序#include <stdio.h > typedef struct char name10 ; int age ;STD;STD fun(STD std , int n) STD max; int i

2、 ;/*found*/ max= (1) ;for(i=1 ; i <n; i+) /*found*/ if(max.aged (2) )max=mtdi ;return max ;main()STD std5="aaa" , 17, "bbb" ,STD max;16, "ccc" , 18,"ddd" ,17, "ee" , 15;max=fun(std , 5);printf("nThe result : n") ;/*found*/ printf("n

3、Name : %s, Age: %dn", (3) , max.age); 1 *std 2 stdi.age 3 详细解答:本题是从结构体中找出年龄最大的记录。填空1:给存放最大者 max赋初值,所以应填:*std 。 填空 2:当前最大者的年龄和结构中所有的年龄进行比较,所以应填:stdi.age 。 填空3:输出最大者的姓名和年龄,所以应填:。二、改错题第 2 题:程序修改题下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun() 的功能是:将单向链表结点( 不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。和

4、值通过函数值返回 main()函数。例如,若n=5,则应输出8.391667。请改正程序中的错误,使它能得到正确结果。注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题源程序#include <stdio.h > #include <stdlib.h > typedef struct aaint data ;struct aa*next )NODE;int fun(NODE *h)int sum=0 ;NODE*;p /*found*/ p=h;while(p- > next)if(p- >data%2=0)sum+=P-> d

5、ata ;/*found*/ p=h- > next ;return sum ;NODE *creatlink(int n)NODE*,h *p, *s, *q;int i , x;h=p=(NODE*)malloc(sizeof(NODE) ;for(i=1 ; i <=n; i+)S=(NODE*)malloc(sizeof(NODE) ;s- >data=rand()%16 ;s- >next=p- >next ;p- >next=s ;p=p- > next ;p- >next=NULL;return h ;outlink(NODE*h

6、, FILE*pf)NODE*;pp=h- > next ;fprintf(pf , "nnTHE LIST : nn HEAD") ;while(p)fprintf(pf , "- >%d", p- > data) ; p=p->next;fprintf(pf , "n") ;outresult(int s , FILE*pf)fprintf(pf , "nThe sum of even numbers : %dn", s) ;main()NODE*hea;d int even ;head

7、=creatlink(12) ;head- >data=9000;outlink(head , stdout) ;even=fun(head) ;printf("nThe result : n") ; outresult(even , stdout) ; 参考答案:(1)错误:while(p- >next) 正确:while(p!=NULL)或 while(p) (2)错误: p=h- > next ; 正确:p=p- > next ;详细解答:错误1:循环时要注意循环中止的条件是 p!=NULL(最后一个结点为空,就像 字符串的最后一个字符为结尾标

8、志符0 ' 一梯,while(p- > next)使循环提前结 束,所以应改为while(p!=NULL) 或 while(p) 。 错误2:当累加完后,应该把指针p指向链表的下一个结点,即P=P->next ,而不是把头指针h的下一个结点赋给p,因为这样会造成死循环。所以 p=h->next,应该改为p=p->next。三、编程题第 3 题:程序设计题请编写函数fun() ,它的功能是:将带头结点单向链表按data 域由大小排序( 排序时不考虑头结点) ,主函数用随机函数为各结点data 域赋值,头结点data 域赋值为0。注意:部分原程序给出如下。请勿改动主

9、函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 试题源程序#include < stdio.h >#include < conio.h >struct aaint data ;struct aa*next ;void fun(struct aa*p) main()int i , n, m=100;struct aa*h=NULL , *s=NULL,*p=NULL;clrscr() ;S=(struct aa*)malloc(sizeof(struct aa) ;h=s; h->data=0; h->next=NULL

10、;printf("Please input n:");scanf("%d" , n) ;for(i=1 ; i <=n; i+) p=(struct aa*)malloc(sizeof(struct aa);p- >data=rand()%m; p- >next=NULL; printf("%d” , p->data);s- >next=p ; s=s- >next ; fun(h) ;printf("n") ;for(h=h- >next ; h!=NULL; h=h->nnext) printf("%d” , h->data);void fun(struct aa*p) int temp; struct aa*1st ; for(p=p- >next ; P->next!=NULL; p=p- > next) for(1st=p- >next ; 1st!=NULL; 1st=1st- > next) if(1st- >data >p->data)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论