1、光华教育上机填空题技巧总结一、 填空题之方法1. 上机填空题占 30 分,一般有 3 个空需要填写,每个空为 10 分;2. 填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序,则将会出现大于符号,如果是从大到小排序则出现小于符号;3. 填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问题,因此必须牢牢掌握祝函数的基本特征;4. 填空题中有的“空”比较难,考生除了掌握必须的 C 语言知识之外,还需要很好的逻辑思路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;5. 上机题库中 100 题有部分题目是重复的或是相
2、似的题目很多,同学们要使用比对的方法尽量去理解;6. 多练习,多思考,多总结二、 填空题与结构体相关1. 结构体成员引用:上机题库 P18 第 9 题(和 92 题一致) ,P27 第 23 题(和 51 题一样)读清楚题目要求:(1) 要求将形参 a 所指结构体变量的数据赋值给函数中的结构体变量 b(2) 从例如可以看出来:结构体中的学号和姓名变为了 1002 和“LiSi” ,但是 3 门课成绩没有变化光华教育23 题:(1) 从例如中可以看出:变化的是结构体中的学号和姓名#include #include struct student long sno;char name10;float
3、 score3;void fun(struct student a) struct student b; int i;/*found*/b = _1_;题目要求将形参 a 的值赋值给结构体变量 b,因此填:ab.sno = 10002;学号变为了 10002/*found*/strcpy(_2_, “LiSi“);姓名要变为”LiSi”,则要引用 b 中的 name 成员printf(“nThe data after modified :n“);/*讲解是一句带过不用多讲*/printf(“nNo: %ld Name: %snScores: “,b.sno, b.name); /*讲解是一句带
4、过不用多讲*/*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-namemain() struct student t=10002,“ZhangQi“, 93, 85,
5、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,“ZhangSan“, 95, 80, 88, *t;可知 t 的类型为 struct stu
6、dent * 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(“nNo: %ld Name: %snScores: “,s.sno, s.name);
7、for (i=0; isno, t-name);for (i=0; iscorei);printf(“n“);3. 结构体和排序:上机题库 P14第 2题重点注意:(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,“ZhangSan“, 95, 80, 88,100
8、02,“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,上机题库 P21第 15题考点分析:(1)带头结点链表的表现形式:head a b cA B C NULL带头结点的链表,头结点 head不存放任何的数据,从头结点的下一个结点开始存放数据,因此考试中如果出现 p = _1_ ;则填入 p=h-next(2)链表数据排序对数组元素从小到大排序:for(i=0;iaj) t=
9、ai;ai=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+*/光华教育15题:#include #include #define N 6typedef struct no
10、de int 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
11、-next;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) 讲解 P38第 42题(和
12、15题类似)void fun(NODE *h) NODE *p, *q; 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+之类的操
13、作,因此此处填入:p=p-next或是 p+main() NODE *head;int aN= 0, 10, 4, 2, 8, 6 ;head=creatlist(a);printf(“nThe original list:n“);outlist(head);fun(head);光华教育3. 链表的返回值:P43 第 50题(和 43题类似)/*found*/_1_ fun(NODE *h)根据函数调用 head=fun(head);和 NODE *head; 知道函数的返回值为 NODE * NODE *p, *q, *r;p = h;if (p = NULL)如果 p 数据位空,则表示 p
14、 中没有任何的数据,因此就无需再进行逆置,故 return NULL;return NULL;q = p-next;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(
15、“nThe original list:n“);outlist(head);head=fun(head);printf(“nThe list after inverting :n“);outlist(head);四、 填空题与文件相关光华教育1. 文件指针定义(1) 文件定义的形式:FILE *fp;(课本 P115)(2) 举例:上机题库 P30 第 28 题第一空/*found*/_1_ fp;分析:在涉及文件类型的上机题目时 fp 指的就是文件指针,因此在前面填写类型时候直接写入:FILE *fp;(3) 类似题目:P32 第 32 题第 1 个空、P67 第 88 题第 2 个空2.
16、文件打开(1) 文件打开的格式:fopen(“文件名” , “打开方式”);(课本 P115)(2) 举例:P31 第 30 题第 1 个空void fun(char *filename, STU n) FILE *fp;/*found*/fp = fopen(_1_, “rb+“);分析:缺少了文件名,形参 filename 是实参传过来的文件名,因此这里直接填入:fp = fopen(filename, “rb+“);表示以“读和写”的方式打开一个二进制文件filename(3) 类似的题目:P41 第 47 题第 1 个空、P71 第 94 题第 1 个空、P72 第 96 题第 3 空3. 文件关闭(1) 文件关闭的格式:fclose(文件指针) ;(课本 P117)(2) 举例:上机题库 P30 第 28 题第 2 空fp = fopen(“file1.txt“, “w“);/*第一次以写的形式打开文件 file1.txt*/fprintf(fp, “%s %d %fn“, s, a, f);/*found*/_2_ ;fp = fopen(“file1.txt“, “r“);/*第二次以读的形式打开文件 file1.txt*/分析:打开文件以后必须将它关闭,因此该空要填:fclose(fp);(3) 类似题目:P72 第 96 题第 2 空
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。