全国计算机等级考试二级C语言操作题15+2016年.doc

上传人:scccc 文档编号:13248453 上传时间:2021-12-20 格式:DOC 页数:2 大小:24.50KB
返回 下载 相关 举报
全国计算机等级考试二级C语言操作题15+2016年.doc_第1页
第1页 / 共2页
全国计算机等级考试二级C语言操作题15+2016年.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《全国计算机等级考试二级C语言操作题15+2016年.doc》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言操作题15+2016年.doc(2页珍藏版)》请在三一文库上搜索。

1、全国计算机等级考试二级 C语言操作题15 2016年( 总分: 30.00 ,做题时间: 90 分钟 )1. 程序通过定义学生结构体变量 ,存储了学生的学号、 姓名和 3 门课的成绩。 所有学生数据均以二进制方式 输出到 student.dat 文件中。函数 fun 的功能是从指定文件中找出指定学号的学生数据, 读入此学生数据, 对该生的分数进行修改, 使每门课的分数加 3 分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。 请在程序的下划线处填入正确的内容并把下划 线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK

2、1.C中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define N 5 typedef struct student long sno; char name10; float score3; STU; void fun(char *filename, long sno) FILE *fp; STU n; int i;fp = fopen(filename,"rb+"); /*found*/ while (!feof(_1_) fread(&n,sizeof(STU), 1, fp); /*found*/ if (n.sno_2_sn

3、o) break; if (!feof(fp) for (i=0; i(分数: 10.00 ) 正确答案: ()解析:解题思路: 本题是考察如何从指定文件中找出指定学号的学生数据,并进行适当的修改,修改后重 新写回到文件中该学生的数据上,即用该学生的新数据覆盖原数据。第一处:判断读文件是否结束,所以应填: fp。 第二处: 从读出的数据中判断是否是指定的学号, 其中学号是由形参 sno 来传递的, 所以应填: =。 第三处:从已打开文件 fp 中重新定位当前读出的结构位置,所以应填: fp 。2. 给定程序MODI1.C中函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排

4、序。 插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插 入后前三个字符依然有序;再把第四个字符插入到前三个字符中,。待排序的字符串已在主函数中赋予。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改 程序的结构。 给定源程序: #include #include #define N 80 void insert(char *aa) int i,j,n; char ch; /*found*/n=strlen aa ; for( i=1; i /*found*/c=aai;j=i-1; while (j

5、>=0) && ( ch aaj+1=aaj; j-; aaj+1=ch; main( ) char aN="QWERTYUIOPASDFGHJKLMNBVCXinZt" i ; printf ("The original string : %s/n", a); insert(a) ; printf("The string after sorting : %s/n/n",a ); (分数: 10.00 ) 正确答案: ()解析:解题思路:第一处:函数应该使用圆括号,所以应改为:n=strlen(aa);。第二处:

6、变量c没有定义,但后面使用的是 ch 变量,所以应改为: ch=aai; 。3. N 名学生的成绩已在主函数中放入一个带头节点的链表结构中 ,h 指向链表的头节点。请编写函数 fun, 它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序在文件 PROG1.C文件中。请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #include #include #define N 8 struct slist double s; struct slist *next; ; typedef struct slist STREC; d

7、ouble fun( STREC *h ) STREC * creat( double *s) STREC *h,*p,*q; int i=0;h=p=(STREC*)malloc(sizeof(STREC);p->s=0; while(i q=(STREC*)malloc(sizeof(STREC); q->s=si; i+; p->next=q; p=q; p->next=0; return h; outlist( STREC *h) STREC *p; p=h->next;printf("head"); do printf("-

8、>%2.0f",p->s);p=p->next; while(p!=0); printf("/n/n"); main() double sN=85,76,69,85,91,72,64,87, max; STREC *h; h=creat( s ); outlist(h); max=fun( h ); printf("max=%6.1f/n",max); NONO(); (分数: 10.00 ) 正确答案: (double fun( STREC*h ) double max=h->s; STREC*p; p=h->n

9、ext; while(p) if(p->s>max ) max=p->s; p=p->next; return max; STREC * creat( double *s) STREC *h,*p,*q; int i=0;h=p=(STREC*)malloc(sizeof(STREC);p->s=0; while(i q=(STREC*)malloc(sizeof(STREC); q->s=si; i+; p->next=q; p=q; p->next=0; return h; outlist( STREC *h) STREC *p; p=h-&

10、gt;next;printf("head"); do printf("->%2.0f",p->s);p=p->next; while(p!=0); printf("/n/n"); ) 解析:解题思路: 本题是考察如何从链表中求出学生的最高分。 我们给出的程序是利用 while 循环语句 以及临时结构指针 p 变量来求出最高分。 1. 将链表中的第 1 个值赋给变量 max。 2. 将链表指针 p 的初 始位置指向h的next指针(h->next )。3.判断p指针是否结束,如果结束,则返回 max否则做下一 步。4.判断max是否小于p->s,如果小于,贝U max取p->s,否则不替换。5.取p->next赋值给p (取 下一结点位置给p),转3继续。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1