二级c上机之填空题做题方法和技巧

上传人:第*** 文档编号:34416955 上传时间:2018-02-24 格式:DOC 页数:16 大小:217.50KB
返回 下载 相关 举报
二级c上机之填空题做题方法和技巧_第1页
第1页 / 共16页
二级c上机之填空题做题方法和技巧_第2页
第2页 / 共16页
二级c上机之填空题做题方法和技巧_第3页
第3页 / 共16页
二级c上机之填空题做题方法和技巧_第4页
第4页 / 共16页
二级c上机之填空题做题方法和技巧_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《二级c上机之填空题做题方法和技巧》由会员分享,可在线阅读,更多相关《二级c上机之填空题做题方法和技巧(16页珍藏版)》请在金锄头文库上搜索。

1、二级 C 语言上机填空题做题方法和技巧总结一、 填空题之方法1、 上机填空题占 18 分,一般有 3 个空需要填写2、 填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序,则将会出现大于符号,如果是从大到小排序则出现小于符号;3、 填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问题,因此必须牢牢掌握祝函数的基本特征;4、 填空题中有的“空”比较难,考生除了掌握必须的 C 语言知识之外,还需要很好的逻辑思路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;5、 上机题库中 100 题有部分题目是重复的或是相似的题

2、目很多,同学们要使用比对的方法尽量去理解;6、 多练习,多思考,多总结二、 填空题之结构体相关考点1、 结构体成员引用:(1) 读清楚题目要求: 要求将形参 a 所指结构体变量的数据赋值给函数中的结构体变量 b; 从例如可以看出来:结构体中的学号和姓名变为了 1002 和“LiSi” ,但是 3 门课成绩没有变化;(2) 代码分析:#include #include struct student long sno;char name10;float score3;void fun(struct student a) /*fun 函数首部,函数返回 void,有一个形参 a,a 是一个结构体类型

3、,形参 a 和类型必须和实参 s 的类型一致*/ struct student b; int i;/*found*/b = _1_; /*题目要求将形参 a 的值赋值给结构体变量 b,因此填:a*/b.sno = 10002; /*将 10002 赋值给 b.no,因此结构体变量 b 的学号变为了 10002*/*found*/strcpy(_2_, LiSi); /*姓名要变为”LiSi”,则要引用 b 中的 name 成员,因此填入 b.name*/printf(nThe data after modified :n);/*讲解是一句带过不用多讲*/printf(nNo: %ld Name

4、: %snScores: ,b.sno, b.name); /*讲解是一句带过不用多讲*/*found*/for (i=0; i#include struct student long sno;char name10;float score3;void fun( struct student *b) int i;/*found*/b_1_ = 10004; /*题目中 t 的学号变化为了 10004,因此填写:b-sno,不能填写b.sno,因为 b 是一个指针*/*found*/strcpy(b_2_, LiJie); /*t 的姓名变为了”LiJie”,因此填写:b-name*/main(

5、) struct student t=10002,ZhangQi, 93, 85, 87;int i;printf(nnThe original data :n);printf(nNo: %ld Name: %snScores: ,t.sno, t.name);for (i=0; i#include struct student long sno;char name10;float score3;/*found*/_1_ fun(struct student *a) /*根据函数调用 t = fun(可知函数返回类型和 t 的类型相同,struct student s=10001,ZhangS

6、an, 95, 80, 88, *t;可知 t 的类型为 struct student * */ int i;a-sno = 10002;strcpy(a-name, LiSi);/*found*/for (i=0; iscorei,不能为 a.scorei或是 a.score*/*found*/return _3_ ; /*题目要求返回 a 的地址,a 本身就是一个指针,因此填入 a 即可*/main() struct student s=10001,ZhangSan, 95, 80, 88, *t;int i;printf(nnThe original data :n);printf(nN

7、o: %ld Name: %snScores: ,s.sno, s.name);for (i=0; isno, t-name);for (i=0; iscorei);printf(n);3、 结构体和排序: (1) 排序的格式:红色部分为考试中的重点,必须记住从小到大排序:for(i=0;iaj) t=ai;ai=aj;aj =t;从大到小排序:for(i=0;i 0)按照姓名字典顺序从小到大排序,因此:strcmp(ai.name,aj.name),此处需要特别注意 t = ai; ai = aj; aj = t; main() struct student s4=10001,ZhangSa

8、n, 95, 80, 88,10002,LiSi, 85, 70, 78,10003,CaoKai, 75, 60, 88, 10004,FangFang, 90, 82, 87;int i, j;printf(nnThe original data :nn);for (j=0; jnext, (1) 带头结点链表的表现形式:带头结点的链表,头结点 head 不存放任何的数据,从头结点的下一个结点开始存放数据,因此考试中如果出现 p = _1_ ;则填入 p=h-nexthead a b cA B C NULL(2) 链表数据排序对数组元素从小到大排序:for(i=0;iaj) t=ai;ai

9、=aj;aj =t;对链表元素进行从小到大排序:while (p) /*相当于数组排序中的 for(i=0;inext;/*相当于 j=i+1*/while (q) /*相当于 for(;jdata q-data) /*相当于 if(aiaj)*/ t = p-data; p-data = q-data; q-data = t; /*如果 aiaj成立,则交换数据元素,让数据变成从小到大排序*/q = q-next;/*相当于 q+*/p = p-next;/*相当于 p+*/(3)15 题:#include #include #define N 6typedef struct node in

10、t data;struct node *next; NODE;void fun(NODE *h) NODE *p, *q; int t;/*found*/ p = _1_ ;链表为带头结点,因此填写:p=h-nextwhile (p) /*found*/q = _2_ ;比较两个链表中元素的大小,因此 q=p-next,这样 q 指向了 p 的下一位while (q) /*found*/if (p-data _3_ q-data)从小到大排序,因此使用大于符号,填写: t = p-data; p-data = q-data; q-data = t; q = q-next;p = p-next;

11、main() NODE *head;int aN= 0, 10, 4, 2, 8, 6 ;head=creatlist(a);printf(nThe original list:n);outlist(head);fun(head);printf(nThe list after sorting :n);outlist(head);2、 不带头结点的链表:p=h(1) 不带头结点链表的表示形式:a b cA B C NULL不带头结点的链表没有头结点,链表的第一个结点存储的就是数据,因此考试中如果出现 p = _1_ ;则填入 p=h(2)void fun(NODE *h) NODE *p, *q

12、; int t;p = h;不带头结点的链表while (p) /*found*/q = _1_ ;q 指向 p 的下一位,因此填入:q=p-next/*found*/while (_2_)判断 q 有没有到末尾,因此填入 p 或是 p!=NULL if (p-data q-data) t = p-data; p-data = q-data; q-data = t; q = q-next;/*found*/p = _3_ ; while (p)为循环条件,要构成循环 p 就得自加或是自减,从循环体中得知没有进行 p+之类的操作,因此此处填入:p=p-next 或是 p+main() NODE

13、*head;int aN= 0, 10, 4, 2, 8, 6 ;head=creatlist(a);printf(nThe original list:n);outlist(head);fun(head);3、 链表的返回值: /*found*/_1_ fun(NODE *h)根据函数调用 head=fun(head);和 NODE *head; 知道函数的返回值为 NODE * NODE *p, *q, *r;p = h;if (p = NULL)如果 p 数据位空,则表示 p 中没有任何的数据,因此就无需再进行逆置,故 return NULL;return NULL;q = p-next

14、;p-next = NULL;/*found*/while (_2_)此空判断 q 有没有为空,讲解时候不容易理解,考生记住即可,填入:while(q)或是while(q!=NULL) r = q-next;q-next = p;p = q;/*found*/q = _3_ ;填入:q=r;次空理解起来较难,因此考生必须认真记忆,老师无需多讲return p;main() NODE *head;int aN=2,4,6,8,10;head=creatlist(a);printf(nThe original list:n);outlist(head); head=fun(head);printf(nThe list after inverting :n);outlist(hea

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号