二级C语言机试秘籍
- 格式:docx
- 大小:607.06 KB
- 文档页数:8
一、填空题(一)链表类型题目包括:15、42、43、50、56、75、79、85、86、87技巧解析:1、首先看清楚题目要求和意思。
看清楚链表有没有带头结点,如果带有头结点,指向数据源的指针内容是p=h—>next;如果是不带有头结点,则填写的是p=h;2、如果所要填写的空在循环语句while的括号中的时候,里面的内容填写的是p或者是q,以最近出现的为主;如果是在循环语句的里面的时候,填写的是q=p —>next;3、如果是排序的时候,从小到大的时候是大于号,从大到小的时候是小于号。
4、如果链表题目中考到调用函数,一般只需要填入实参head,例如:fun(head);在构造链表的时候都会有头结点,一般用head来表示,head指向了链表中的第一个数据的地址。
细化分类:1.将数据域中的数据进行排序,类似题目:15、42void fun(NODE *h){ NODE *p, *q; int t;/**********found**********/p = __1__ ;指向数据源,由于h是带头结点的链表,因此需要填入h->next while (p) {判断链表p是否已经到末尾/**********found**********/q = __2__ ; 比较两个数的大小,因此需要q指向p中的下一个数据需要填入p->next,也就是说p指向了第一个数据,q指向了第二个数据。
while (q) {判断q是否指向了末尾/**********found**********/if (p->data __3__ q->data)从小到大排序,因此填入大于符号{ t = p->data; p->data = q->data; q->data = t; }交换数据 q = q->next; q自增,目的是比较出最小的数据}p = p->next; p自增}}联想记忆分析1:对一维数组进行从小到大排序void fun(int b[N]){ int i, j, a;for(i=0;i<N-1;i++)for(j=i;j<N;j++){if(b[i]>b[j]){a=b[i];b[i]=b[j];b[j]=a;}}}联想记忆分析2:对结构体数组按照姓名进行从小到大排序for(i=0;i<N-1;i++)for(j=i;j<N;j++){if(strcmp(a[i].name,a[j].name)>0){a=b[i];b[i]=b[j];b[j]=a;}2.将数据域中的元素逆置,类似的题目:43、50链表中数据域中的元素逆置,首先将第一个数据取出来放在最后一个位置,也就是将其next置空,表示已经到了末尾。
全国计算机二级C语言考试答题策略及技巧计算机二级C语言考试是广大计算机专业学生必须要应对的一项考试。
为了帮助大家更好地应对这个考试,本文将介绍一些答题策略和技巧,希望能为大家提供一些帮助。
以下是具体的内容:一、了解考试大纲和考试要点在准备考试之前,首先要详细了解考试大纲和考试要点。
考试大纲会明确列出考试的内容范围,而考试要点则会告诉我们在考试中需要重点关注的知识点和考点。
通过对这些内容的了解,我们可以以针对性的方式进行备考,提高考试效率。
二、刷题是关键在备考过程中,刷题是非常关键的一步。
通过解决大量的真题和模拟题,我们可以熟悉考试的题型和难度,掌握解题思路和方法,提高我们的答题水平。
此外,刷题还有助于我们发现自己的薄弱环节,并有针对性地进行复习和强化,从而更好地应对考试。
三、合理安排备考时间备考时间的合理安排对我们备考的效果起到至关重要的作用。
首先,我们要合理划分时间,进行系统而有条理的学习。
其次,要根据自己的实际情况,合理安排每天的学习时间,保证高效率地进行学习和复习。
此外,还要留出一定的时间进行模拟考试和自我检测,检验自己的学习成果。
四、注重基础知识的掌握在备考过程中,要注重对C语言基础知识的掌握。
这些基础知识是我们应对考试的基础,也是我们进行进一步学习和解题的前提。
例如,掌握C语言的语法规则、常用的数据类型和相关操作,以及常见的控制语句和函数等。
通过对这些基础知识的深入理解和掌握,我们可以更好地应对考试中的各类题目。
五、注意细节和常见错误在解答题目的过程中,我们要注意细节和常见错误。
在C语言中,一些小错误常常会导致程序的错误或逻辑的混乱,从而影响整体的解题效果。
因此,在解答题目时,我们要仔细审题,注意细节,并且避免一些常见的错误。
例如,注意变量的命名规范、数组的越界问题、指针的使用等等。
六、做好总结与复习在备考的最后阶段,我们要对之前的学习进行总结和复习。
通过总结,我们可以对所学知识进行整合和梳理,形成系统而完整的知识框架。
【上机题命题及答题要点】1、近年来江苏省高校上机题目难度有所下降。
本轮上机命题的难度系数及全国计算机等级考试二级C语言接近。
2、改错题通常有3~4个错误。
错误分为两大类,一类是语法出错,这类错误比较查错和容易修改,即在编译时报的错误。
另一类是结果出错,即程序的算法出错,这类错误需认真审题。
3、编程题必须掌握C语言的文件,应熟悉文件指针的定义,文件的打开及文件的输入输出。
编程题的固定框架。
必须记忆。
以C01的编程为例。
#include <stdlib.h> /*库函数exit(0)需要*/#include <stdio.h> /*定义文件指针时需要的头文件*/…………..{}void main(){ FILE *fp;所有数据类型的说明和定义if((fp=fopen("t:\\myf2.out","w"))==NULL){ printf("\nCan't open the file!"); exit (0);}函数调用(具体问题具体分析)结果输出printf("\nMy number is:120992340\n");fprintf(fp,"\nMy number is:1292340\n");fclose(fp);}4、必须熟悉常用算法。
5、江苏省高校计算机二级C语言上机编程题常考问题:字符串相关问题、素数相关问题、回文数相关问题、矩阵(二维数组)相关问题、特殊数问题(如,合数、真因子或质因子之和、水仙花数、亲密数、完数、数制转换、哥德巴赫猜想等)。
6、掌握文件输出操作标准形式。
【2013年3月江苏省等考上机真题解析】江苏省高等学校非计算机专业学生(C01)计算机基础知识和应用能力等级考试上机试卷二级C语言(试卷代号C01)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】判断一个N×N方阵(N为奇数)是否为魔方阵。
二级C语言应试技巧(个人经验,欢迎拍砖和留言)作者:路非明时间:2013-3-28考试重点(由重至轻)1:函数和循环函数和循环是分值最重的考点,40道选择占了10道左右,程序题就不用说了,全部涉及函数和循环。
2:数组、指针和字符和字符串选择题考一些基本的概念,程序题在定义变量的时候也会涉及到3:公共基础知识选择题10分左右,这是最应该也最容易拿的分了。
算法、栈、队列、二叉树遍历、数据库、网络等等基本概念,把书翻一遍,不用深看,来不及看的也没关系,在百度文库下套题库拷到手机上,空闲时过几遍。
4:输入输出语句,if,switch语句,实参形参传递,10分左右……主要考判断正误,没啥捷径:翻书,做题-_-5:最后就是宏定义、变量种类、结构体、文件这些,每年不定,5分左右。
编程题注意事项:三类题型都有“******** found *******”标识位置(千万不要删这一行,电脑判分时会自动从found往下搜寻)。
一:点击填空题:把“found”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。
例如下图所示。
填完结果后的程序图:(3)程序结果填写完成后,必须使用“文件”菜单中的“保存”命令,保存程序文件。
(4)文件保存后,关闭程序文件,回到题目页面二、点击程序修改题,开始修改。
修改方法如下:(1)在程序中找到“******** found *******”标识位置。
(2)把“found”标识位置下面的错误程序修改成正确程序(不一定是found的下一行,但也不会离太远)。
例如下图所示。
原程序图:填完结果后的“modi1.c”程序图:(3)同样要保存(关键),关闭。
三:程序设计题:注意:对于填空题和改错题,只需要把相应的位置填上和改正相应的错误,然后存盘即可得分,但对于程序设计题,必须将编写完的程序运行,出结果后存盘退出才能得分,否则不得分。
(1)在程序中找到空的函数体,一般是fun函数,不要动下面的main 函数(2)把正确的代码写入(3)程序输入完成后,必须先按窗体右上方“编译”(built)按钮,这时窗体下方会有错误信息提示,如:3 error ;2 warning,这时就要检查排错,直到0 error;0 warning(4)点击“运行”按钮(旁边的红色按钮),这时会弹出黑色窗体,按题目要求输入,算出结果看是否符合,如果符合,满分^o^(5)同样,保存最关键最后补一句,因为今年是第一年无纸化,可能和以前的上机操作有点不一样,有不懂的果断问监考老师,不过问得问得有水平些,不要直接问:老师,这些按钮怎么用?他可能会来一句:操作都不会还来考试?!。
上机填空题技巧总结一、填空题之方法1.上机填空题占30分,一般有3个空需要填写,每个空为10分;2.填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序,则将会出现大于符号,如果是从大到小排序则出现小于符号;3.填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问题,因此必须牢牢掌握祝函数的基本特征;4.填空题中有的“空”比较难,考生除了掌握必须的C语言知识之外,还需要很好的逻辑思路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;5.上机题库中100题有部分题目是重复的或是相似的题目很多,同学们要使用比对的方法尽量去理解;6.多练习,多思考,多总结二、填空题与结构体相关1.结构体成员引用:上机题库P18第9题(和92题一致),P27第23题(和51题一样)读清楚题目要求:(1)要求将形参a所指结构体变量的数据赋值给函数中的结构体变量b(2)从例如可以看出来:结构体中的学号和姓名变为了1002和“LiSi”,但是3门课成绩没有变化#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};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: %s\nScores: ",b.sno, ); /*讲解是一句带过不用多讲*//**********found**********/for (i=0; i<3; i++) printf("%6.2f ", b.__3__);→分析:这个是一个循环语句,执行3次循环,printf("%6.2f ", b.__3__)要求输出是一个实型数据的成员,因此可以得知是score成员,因为score是一个数组,因此填:b.score[i],当i变化就可以取出第一门、第二门、第三门课的成绩printf("\n");}main(){ struct student s={10001,"ZhangSan", 95, 80, 88};int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",s.sno, );for (i=0; i<3; i++) printf("%6.2f ", s.score[i]);printf("\n");fun(s);}23题:(1)从例如中可以看出:变化的是结构体中的学号和姓名#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};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(){ struct student t={10002,"ZhangQi", 93, 85, 87};int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",t.sno, );for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);printf("\n");/**********found**********/fun(__3__);→此处为函数调用,根据形参的类型来判定实参,形参struct student *b为结构体指针,联系main函数定义部分只有struct student t和b 的类型相同,因此可知需要填的是:&tprintf("\nThe data after modified :\n");printf("\nNo: %ld Name: %s\nScores: ",t.sno, );for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);printf("\n");}2.函数调用and结构体:上机题库P22第16题(和78、82题一样)重点注意:(1)把a中地址作为函数返回值返回函数(2)观察可知a中的学号、姓名边为了10002和“zhangSan”,每门课的成绩增加了1分#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};/**********found**********/__1__ fun(struct student *a)→根据函数调用t = fun(&s);可知函数返回类型和t的类型相同,struct student s={10001,"ZhangSan", 95, 80, 88}, *t;可知t的类型为struct student *{ int i;a->sno = 10002;strcpy(a->name, "LiSi");/**********found**********/for (i=0; i<3; i++) __2__ += 1;→题目要求将每门课成绩增加1分,因此填为:a->score[i],不能为a.score[i]或是a.score/**********found**********/return __3__ ;→题目要求返回a的地址,a本身就是一个指针,因此填入a即可}main(){ struct student s={10001,"ZhangSan", 95, 80, 88}, *t;int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",s.sno, );for (i=0; i<3; i++) printf("%6.2f ", s.score[i]);printf("\n");t = fun(&s);printf("\nThe data after modified :\n");printf("\nNo: %ld Name: %s\nScores: ",t->sno, t->name);for (i=0; i<3; i++) printf("%6.2f ", t->score[i]);printf("\n");}3.结构体和排序:上机题库P14第2题重点注意:(1)排序的格式:红色部分为考试中的重点,必须记住从小到大排序: for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j ]=t;}从大到小排序: for(i=0;i<n-1;i++)for(j=i+1;j<n ;j++) if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j ]=t;} void fun(struct student a[], int n){/**********found**********/__1__ t;→此处要求填入t 的类型,可以从t = a[i];中得知t 和a 数组的类型必须一致,void fun(struct student a[], int n)中得知a 为结构体类型,因此填写:struct student int i, j;/**********found**********/for (i=0; i<__2__; i++)→根据排序的格式填空,因此记住是关键 for (j=i+1; j<n; j++) /**********found**********/if (strcmp(__3__) > 0)→按照姓名字典顺序从小到大排序,因此: strcmp(a[i].name,a[j].name),此处需要特别注意 { t = a[i]; a[i] = a[j]; a[j] = t; } }main(){ struct student s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78},{10003,"CaoKai", 75, 60, 88},{10004,"FangFang", 90, 82, 87}};int i, j;printf("\n\nThe original data :\n\n"); for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); }fun(s, 4);printf("\n\nThe data after sorting :\n\n"); for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } }三、填空题与链表相关1.带头结点的链表:p=h->next,上机题库P21第15题考点分析:(1)带头结点链表的表现形式:带头结点的链表,头结点head不存放任何的数据,从头结点的下一个结点开始存放数据,因此考试中如果出现 p = __1__ ;则填入p=h->next(2)链表数据排序对数组元素从小到大排序:for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j ]=t;}对链表元素进行从小到大排序:while (p) /*相当于数组排序中的for(i=0;i<n-1;)*/{q = p->next;/*相当于j=i+1*/while (q) /*相当于for(;j<n;){if (p->data > q->data) /*相当于if(a[i]>a[j])*/{ t = p->data; p->data = q->data; q->data = t; }/*如果a[i]>a[j]成立,则交换数据元素,让数据变成从小到大排序*/ q = q->next;/*相当于q++*/}p = p->next;/*相当于p++*/}15题:#include <stdio.h>#include <stdlib.h>#define N 6typedef struct node {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->next;}}main(){ NODE *head;int a[N]= {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)不带头结点链表的表示形式:(2)讲解P38第42题(和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++之类的操作,因此此处填入:p=p->next或是p++}}main(){ NODE *head;int a[N]= {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中没有任何的数据,因此就无需再进行逆置,故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 a[N]={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(head);}四、填空题与文件相关1.文件指针定义(1)文件定义的形式:FILE *fp;(课本P115)(2)举例:上机题库P30第28题第一空/**********found**********/__1__ fp;分析:在涉及文件类型的上机题目时fp指的就是文件指针,因此在前面填写类型时候直接写入:FILE *fp;(3)类似题目:P32第32题第1个空、P67第88题第2个空2.文件打开(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 %f\n", s, a, f);/**********found**********/__2__ ;fp = fopen("file1.txt", "r");/*第二次以读的形式打开文件file1.txt*/分析:打开文件以后必须将它关闭,因此该空要填:fclose(fp);(3)类似题目:P72第96题第2空4.测试文件结束(1)判断文件结束的feof函数形式:feof(fp)(课本P118)(2)经常出现在while()的表达式里面,常见形式为:while(!feof(fp))测试指针fp有没有结束(3)举例:上机题目P26第22题第1空FILE *fp;STU n; int i;fp = fopen(filename,"rb+");/**********found**********/while (!__1__)分析:填写feof(fp)测试fp指针又没有结束(4)类似题目:P32第32题第2个空、P61第80题第1个空、P71第94题第2个空5.设置文件位置函数(1) fseek设置文件位置:fseek(文件指针,位移量,移动起始点)(课本P118)(2)考试一般考查的是移动的起始点:SEEK_SET表示文件开始,SEEK_CUR表示文件当前位置,SEEK_END表示文件末尾(3)举例:上机题库P31第30题第2个空/**********found**********/fseek(fp, -1L*sizeof(STU), __2__);分析:题目要求:重写形参filename所指文件中最后一个学生的数据,因此文件指针fp要指向最后的位置,则填入:fseek(fp, -1L*sizeof(STU), SEEK_END);(4)类似题目:P26第22题第3空、P61第80第3空、6.读二进制文件(1)fwrite(存入数据的指针,每一个数据占有的字节,输入数据的个数,文件指针);(课本P120)(2)举例:P31第30题第3空void fun(char *filename, STU n){ FILE *fp;/**********found**********/fp = fopen(filename, "rb+");/*打开文件filename*//**********found**********/fseek(fp, -1L*sizeof(STU), SEEK_END);/*定位到最后一个学生的位置*//**********found**********/fwrite(__3__, sizeof(STU), 1, fp);/*将形参n新学生的数据覆盖最后一个学生的数据,因为fp已经定位到了最后一个学生的位置*/fclose(fp);}分析:题目要求用新数据覆盖最后一个学生的数据,因此填入:fwrite(&n, sizeof(STU), 1, fp);填入的是地址,不能是:fwrite(n, sizeof(STU), 1, fp);(3)类似题目:P41第47题第3空,P67第88题第3空、7.写二进制文件函数(1)fread(读出数据的指针,每一个数据占有的字节,输出数据的个数,文件指针);(2)上机考试填空题没有出现需要填写的空,考生作一般的了解8.fcanf函数数和fprintf函数(1)fscanf(文件指针,格式控制字符串,输入列表项);(2)fprintf(文件指针,格式控制字符串,输出列表项);(3)fscanf函数和fprintf函数在上机编程题中详细介绍,这里不作重点讲解,了解即可五、填空题与函数相关1.函数调用:P13第1题#include <stdio.h>double f1(double x) 定义了f1函数,有一个形参{ return x*x; }double f2(double x, double y) 定义了f2函数,有两个形参{ return x*y; }/**********found**********/__1__ fun(int i, double x, double y)→根据函数调用r = fun(1, x1, x2);可知函数返回值和r类型一致,double x1=5, x2=3, r;r为doule类型,则函数返回double{ if (i==1)/**********found**********/return __2__(x);→此处为函数调用,实参数为1,根据实参和形成个数一致可知,调用的为f1函数else/**********found**********/return __3__(x, y);→此处的实参数为2,则调用f2函数}main(){ double x1=5, x2=3, r;r = fun(1, x1, x2);r += fun(2, x1, x2);printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);}六、填空题与数组相关1.类似题目:3、4、7、20、24、26、39、40、41、54、57、64、68、70、71、76、89、90、992.一维数组中存在这样一些类型:(1)求一个数值数组中的所有值的平均值和把大于或者小于平均值的数辅导例外一个数组中。
二级C语言机试特殊方法----转载来源不明部分修改这里的特殊方法只能用于编程题,且看不懂程序也能得分,甚至得满分,嘿嘿,不错吧!我们要对这种方法的原理有一个清晰的认识,这样才能举一反三,事半功倍。
下面通过例子来详细介绍这种方法。
一、简单情况首先看一下上机环境的界面,如下图:注意,c:\k01\24010001是考生文件夹的路径,接下来的工作就是围绕这个文件夹展开的。
开始考试,由系统抽好题目后,单击“程序编写题”,仔细阅读题目,明确题目要我们做什么后,点击窗口左上方的“答题”,在下拉菜单中选择程序编写题,这时会打开VC6.0的程序界面,一大段繁杂的程序很无奈吧,别急,下面开始干活了。
首先点击中的图标编译程序,此时图标就被激活了,点击此图标运行程序(至于为什么要这么做,下面你就会知道的),出现如下图所示的窗口,大家可以看到,程序要求你输入m的值,随便输入一串字符后回车,然后随便按个键后这个窗口会关闭,以上步骤是做每道编程题前都必须做的,请大家谨记!准备工作做好后,接下来进入考生文件夹,会看到in.dat和out.dat两个文件,我们就要对它们做手脚。
首先用记事本打开in.dat文件,如图所示:大家看第一行文字:3ABCDEFGHIJK,一开始看不懂这是啥意思,那么看看题目的要求吧:看出点啥没有?文字中的“3”代表的是m的值,即把第一到第三个字符“ABC”平移到字符串的最后,看例子也知道,“3”后面的字符串就是我们所要处理的对象。
打开out.Dat文件,如图所示,看到第一行的字符串,它就是对应in文件中的第一行的内容,根据题目要求,把out文件中的第一行文字改为“DEFGHIJKABC",以此类推,下面每一行都是对应in文件中的每一行的,按上述方法完全修改完毕后,保存并关闭记事本。
(特别注意,完成修改后不要再运行程序,否则我们所做的工作就都泡汤了!!!)好了,交卷走人吧,你已经拿到了编程题的40分,只要前面再做对2个空你就通过了,哈哈,很爽吧!大部分的题目都可以用这种方法做,只要你对题目的意思明白的话就行了。
上机考试注意事项1.上机考试试题分析与解题方法二级C上机考试由程序填空题、程序改错题和程序设计题组成,不同的题目解题方法也不一样,具体分析如下:(1)程序填空题:该题目一般为两个空,考生应该首先将程序中的下划线删除,然后将程序编译一次(不是运行,编译的快捷键ctrl+F7),如果没有错,那么就可以填空了。
填空内容一般为分支结构或循环结构里面的条件、函数调用、函数的返回值、scanf函数的地址项列表、break和continue语句等。
(2)程序改错题:程序改错题就是修改程序中的错误,使得程序能够完成题目中的要求。
考生需要注意的是程序的错误有两类,一类称为编译或者语法错误,这类错误只要考生掌握一些常见的编译错误,就能迎刃而解了。
常见的编译错误见附录1;另一类错误称之为逻辑错误,这类错误是比较隐蔽的,需要多加练习才能熟悉的。
针对二级考试,常见的逻辑错误有:①存储结果值的变量未初始化或者初始化错误,比如和变量s为float 类型,初始化确为s=1,恰好在程序的后续部分有s/n这样的表达式(其中n为int类型),那么计算结果必然有错误;②死循环,如果程序中有循环,一定要注意对循环条件的检查。
(3)程序设计题:该题目一般是让大家编制一个子函数,这个子函数完成题目的要求的功能。
该题目是较难的一道题,大家首先应该弄清楚这个子函数应该完成的功能,然后可以用笔进行分析,抓住完成该功能的关键,最后编写程序,程序编写完之后,需要做验证,如果源程序中有验证的部分,只要按照题目要求的数据进行输入,检查结果与题目中的结果是否保持一致即可;如果没有,首先在main函数中找到调用该函数的语句,然后在他后面将结果进行输出进行验证(注意:因为题目中没有验证的数据,所以需要大家自己根据子函数功能设计数据)或者直接在子函数中输出。
二级c语言编程题可以这样做,也可以拿满分!全国计算机等级考试上机考试第三题(程序编写题)做题技巧基本步骤篇第一步:认真分析题目意思,了解清楚题目的要求。
(这一步非常关键,这直接关系到后面的所有步骤,每个题目的意思都不一样)第二步:点答题,选择prog1.c,进入程序编写题的答题窗口。
第三步:直接对程序进行编译、链接、执行(就是不改程序,不加、不减少程序原有内容,直接完成三个步骤。
这三步就不配图了,如果连这个都不会,我想,你还是放弃去参加二级C语言的考试吧)。
然后得到如下的黑色窗口。
这个时候,程序在提醒你输入两个数字(这里,因题而异,有的可能是字符串或其它,具体根据题目意思来),那我们就随便输入两个数字,两个数字用空格间隔,然后回车,直到你看到Press any key to continue,然后再按任意健(比如回车健)继续。
第四步:找到考生文件夹,打开考生文件夹,下面图1提示了你考生文件夹的路径,图2表示已经正常打开了考生文件夹(打开方式:单击“考生文件夹”下面的路径,带下划线的)。
第五步:找到out.dat文件(如上图2中已经标记的部分,有时你可能看到的仅仅out,而没有后面的.dat),然后右键单击out.dat文件,选择“记事本”打开out.dat文件。
第六步:按题目要求(就是第一步分析的结果)修改out文件,修改完成后,保存;保存完后,直接关掉out文件,关掉VC软件。
恭喜你,上机程序编写题,满分,24分!!!全国计算机等级考试上机考试第三题(程序编写题)做题技巧特殊情况篇一、考试时,如果考生文件夹处的链接不可以用,可以通过以下方式打开考生文件夹:桌面左下角的开始,点运行,然后在输入框里输入考生文件夹路径,然后回车,就能进入考生文件夹。
二、若考生文件夹里,你只看到的out.dat文件,没有后缀名.dat,而仅仅是out,如何显示.dat。
进入我的电脑后,点击上面的工具,然后点击文件夹选项,然后选择查看。
二级C语言上机编程题技巧一、方法总结1、二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了。
综合往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要同学们认真熟练使用做题的方法,通过考试是没有问题的。
2、编程题做题方法一:使用C语言特有的函数做题(1)编程思想:使用C语言函数库中的做题,做题时必须注意包含对应的头文件(2)考题举例:题库中的第37题,要求将数字字符串转化为对应整数,例如“-1234”转化后为-1234。
做题时需要添加头文件#include "stdlib.h",然后在fun函数中写入程序return atol(p);其中atol(p)表示将p从字符串转化为长整型数。
最后编译,运行后输入测试数据后即可得到满分。
#include <stdio.h>#include <string.h>#include "stdlib.h"long fun ( char *p){return atol(p);}(3)方法总结:该类方法可以适用的题目较少,同学们了解即可。
3、编程题做题方法二:使用规律做题(1)编程思想:部分题目的答案是固定的,不会因为输入的数据改变而改变,因此这部分题目我们直接将答案记住即可,减少编程的麻烦。
(2)考题举例:题库中的70题,求cos(x)-x=0的一个实根。
做题时候在fun函数中输入return0.739085;后点击编译和运行即可,无需输入测试数据。
(补充:如果需要输入测试数据,程序在输出的黑屏上面会提示,不过一般是英文提示,所以同学们要格外小心)#include <math.h>#include <stdio.h>double fun(){return 0.739085;}(3)考题总结:该题为每年必考的题目,因此同学们要将答案熟记,以便大家能顺利通过考试。
1二级C语言上机编程题做题方法和技巧总结一、字符串操作(一)删除*号1、编程题中涉及“删除*号”的相关题目:8、9、19、45、54、57、61、65、77、90、92、1002、编程题第8题的操作过程(1)题目:假设输入的字符串中只包含字母和“*”号。
请编写函数fun,它功能是:除了字符串前导的*号之外,将串中其他*号全部伤处。
例如,字符串中的内容:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。
(2)分析:题目的含义可以解析为将中间和尾部的*号全部删除,剩余前导*号和字母。
①前导*号:指第一个字母以前的字母,例如****A*BC*DEF*G*******中的前导*有4个;②尾部*号:指最后一个字母以后的字母,例如****A*BC*DEF*G*******中的尾部*有7个;③中间*号:除了前导和尾部*号以外的*号。
(3)【步骤1】打开“编程题”题目,分析NONO函数NONO( ){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/ FILE *in, *out ;int i ; char s[81] ;in = fopen("D:\\k01\\24010001\\in.dat","r") ;out = fopen("D:\\k01\\24010001\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) {}fclose(in) ;fclose(out) ;}①FILE *in, *out ; /*定义了两个文件类型的指针变量in和out*/ 知识点参照课本P115页相关理论知识,文件指针的定义:FILE *指针变量名;②int i ; char s[81] ;/*定义了一个整型的变量i,用来表示循环的递增;定义了一个字符类型的一维数组s,用来存放后面题目中数据。
计算机等级考试二级C语言应试技巧这是一篇由网络搜集整理的关于计算机等级考试二级C语言应试技巧的文档,希望对你能有帮助。
1、牢固、清晰地掌握基本知识二级C语言考试的重点是基本知识的掌握情况和实际编程应用,但其前提条件是对基本知识点的掌握。
因此,我们正确地理解、熟记基本概念和原理是通过考试的前提条件。
那么我们要如何才能做到这一点呢?我们可以通过以下3方面来实现:① 在考前冲刺阶段要注意“比较总结”学习成果,特别是对一些关系复杂的知识点,通过比较、总结更容易理解、牢记。
“比较总结”是一个好的学习方法,同时也是一个好的增强记忆方法,在C语言中有些问题只有通过综合比较、总结才容易在脑海中留下牢固的印烙;② 理解概念要准确,尤其是一些容易混淆、重要的概念,一定要在考前冲刺阶段准确地掌握它们之间在操作步骤和实现功能上的细微区别,一定不能忽视;③ 通过联想记忆各考点,在C语言中有一部分考点不是孤立的,而是相互联系的',我们要能通过一个考点联想到与他相关的考点、这样就能扩大记忆了。
2、选择的习题要有针对性,切不可进行“题海战术”现在关于二级C语言考试的习题很多,搞题海战术肯定是不行的。
我们应根据考试大纲,在考前冲刺阶段适当地做一些与二级C语言考试题型相同的题,我们可以做些试卷和历年试题(最近2~3年即可)。
研究历年考试题型、分析现在考试形式是通过考试的一个重要法宝,这做可使我们较快地掌握考试题型,从而在最短的时间内达到最大的学习效果。
注意:根据分析这些年来考试的情况,每年都会有少数新的考点出现,所以在研究历年考题时,不要忽视了一些以往没有考过的知识点,应适当理解记忆。
3、上机实践笔试中程序设计类题目学习笔试中程序设计类的题目最佳方法是上机操作,验证自己的解题思路和做题结果。
通过在计算机上验证这类题,可以发现错误和纠正解题思路,加深我们的记忆。
计算机二级C语言机试特殊方法
这里的特殊方法的特殊之处在于只能用于编程题,且看不懂程序也能得分,甚至得满分,嘿嘿,不错吧!下面就进入正题,详细介绍这种方法。
首先我们要对这种方法的原理有一个清晰的认识,这样才能举一反三,事半功倍。
下面通过一个例子来详细介绍这种方法。
首先大家看一下上机环境的界面,如下图
大家注意这里,这是考生文件夹的路径,我们接下来的工作就是围绕这个文件夹展开的。
开始考试,由系统为
我们抽好题目后,单击,仔细阅读题目,明确题目要我们做什么后,
点击窗口左上方的,在下拉菜单中选择程序编写题,这时会打开VC6.0
的程序界面,一大段繁杂的程序很无奈吧,别急,下面开始干活了。
首先点击
中的图标编译程序,此时图标就被激活了,点击此图
标运行程序(至于为什么要这么做,下面你就会知道的),出现如下图所示的窗口
,大家可以看到,程序要求你输入m的值,随便输入一串字符后回车,然后会有文字出现,随便按个键后这个窗口会关闭,以上步骤是做每道编程题前都必须做的,请大家谨记!
准备工作做好后,我们接下来进入考生文件夹,会看到和两个文件,我们就要对它们做手脚。
首先用记事本打开in文件,如图所示
,
大家看第一行文字:3 ABCDEFGHIJK,一开始看不懂这是啥意思,那么看看题目的要求吧:
,看出点啥没有?没错,文字中的
"3"代表的是m的值,即把第一到第三个字符“ABC”平移到字符串的最后,看例子也知道,"3"后面的字符串就是我们所要处理的对象。
然后打开out文件,如图所示
,看到第一行的字符串,它就是对应in文件中的第一行的内容,根据题目要求,把out文件中的第一行文字改为“DEFGHIJKABC",下面的每一行都是对应in文件中的每一行的,如上所示完全修改完毕后,保存并关闭记事本。
(特别注意,完成修改后千万不要再运行程序了,否则我们所做的工作就都泡汤了!!!)
好了,交卷走人吧,你已经拿到了编程题的40分,只要前面再做对2个空你就通过了,哈哈,很爽吧!大部分的题目都可以用这种方法做,只要你对题目的意思明白的话就行了,但是,有些题目的答案需要以正确的格式出现才能得分。
我们来举一个例子。
题目如下图所示:
,看完题目后,我们照往常一样,打开程序界面后,创建并运行程序后,打开考生文件夹,打开in文件,我们看到从NUM01~NUM10的学生编号以及成绩,知道题目是要找出成绩最低的学生记录,于是我们打开out文件,如图所示
,这里多出了很多奇怪的
符号,但是又似乎明白,是不是将NUM0I改为in文件中的NUM06,然后后面的数字改为其成绩23就可以了呢?非也!这时需要注意答案的格式,应改为如下
图所示的文字,将原有文件内容中的一连串烫字删
掉,将01改为06,将后面的数字改为23,注意要和原文件的格式保持一致,NUM06和数字前都有一个空格,这些只要注意了就不会弄错。
上面的例子还是常规的,大部分题目比这要复杂,需要小心应付,只要心细,也不是难事。
下面举一个稍微复杂的题目,如下图所示
,读懂题目后,同上运行程序后,进入考生文件夹,打开in文件,看到不少数字,且每个数用空格隔开,然后我们打开out文件,应该知道要做什么了,于是依照题目中例子的要求,将in文件中的所有数都保留2位小数后填入out文
件中,如图所示,果真是这样吗?肯定不是了,不然怎么叫复杂呢?大家千万不要被题目中的例子所迷惑,那到底哪里不对呢?从别的地方也得不到相关的格式信息啊!这里教大家一种非常有效的方法,可以防止被这种题目忽悠住。
大家看看题目的源程序,注意如下图所示的内容
,注意这个
NONO函数,看到这一行“fprintf(wf, "%f\n", fun(a)) ;”,知道这是输出函数,里面的参数中有个“%f”的格式输出,即输出实型量,也就是小数点后保留6位数字,可见这句内容与我们的答案格式有密切的联系,于是联系前面我们所做的工作,知道问题出在哪了吧?没错,应该把in文件中的每个数保留6
位小数后,填入out文件中,如图所示,这样才是正确答案。
大家通过这一题知道,当你对答案的格式不了解时,要从源程序中找答案,即找到NONO函数,查找里面的信息,然后就可以知道答案的具体格式了。
(在此对于这类需要注意答案格式的题目做出以下总结:1.常规的题目只需要结合in文件和out文件中内容的格式即可得出正确的答案格式。
2.对于像上题这种特殊的题型,千万不要结合题目中的例子,而是要回归到源程序,找NONO函数,根据其中的一些信息得出答案的正确格式。
3.像这类特殊题型,源程序中都会有NONO函数,大家不用担心。
4.大家只需要关注NONO函数中的有关输入和输出的语句,语句中的输入输出格式控制符就是关键,稍加思考后即可得出正确的答案格式。
)
下面我们来介绍编程题中的特殊题型,这里的特殊是指让你无从下手。
大家来看这个题目
,看懂题目的意思后,我们运行程序,进入考生文件夹,发现有啥不对劲的没有?没有in文件啊!这可怎么办?in文件是我们获取题目要我们处理的数据的必须,没有了in文件谈何做题。
别急,天无绝人之路,我来教你吧。
还是需要回到源程序中,看到源程序中有这么一段内容
,大家应该能猜出点啥了吧?没错,这就是题目要我们处理的数据,每一个花括号中的前面的编号就是每个学生的编号,后面的数字就是每个学生的成绩。
知道了这些,我们就可以动手了。
这里又出现了一个复杂的格式问题,题目中要求我们输出平均分,还要把低于平均分的学生人数和他们的成绩也求出来,那么这到底要怎么填入out文件中呢?还是看源程序,看到main函数,注意这段内
容,容易知道答案的格式是先输出低于平均分的学生人数n(整形),换行后输出平均分(总位数为7,保留三位小数的实型),再换行后按源程序中给出的数据的顺序输出所有低于平均分的学生成绩(总位数为4,保留一位小数的实型),这样就可以在out
文件里填入如下的内容了,这道题就这样完成了,感觉有些难吧!但是
这样的题目毕竟是少数啊,你的运气不会这么差吧,就算抽到这一题了,你不是也会了吗?
最后,我们来介绍编程题中的特殊中的特殊,这是最究极的难啊!也只有一题,一般不会这么倒霉的,看题吧。
题目如图所示
,看懂题目意思后,我们运行程序后,进入考生文件夹,发现没有in文件,于是回到源程序中,可是也没有找到要处理的数据,这可怎么办啊?简直是开玩笑嘛。
别急,还有办法,大家点击键盘的速度很快啊,以至于漏掉了一些重要信息偶!当点击感叹号图标运行程序后出现了一个cmd的黑色窗口界面,大家照我之前所说快速点键盘任意键使窗口关闭,可是现在重新看看这个窗口吧,上面可是有题目要求我们处理的数据啊,如下图所示
上面的一大堆数据就是我们要统计的各个年龄,下面的内容即为out文件中的内容,结合题目的要求在out文件中做出相应的修改就OK了。
这种题目的特殊中的特殊之处就在于比起上面的特殊题型,这种题目的数据来源非常隐蔽,谁会想到数据竟然藏在我们平时极容易忽略的地方。
所以大家机试的时候一定要仔细又小心啊,不然可就吃大亏了。
还好这种题型只有这么一题,大家淡定点偶!
编程题中还有一类题型,就是题目中给出公式让你计算的,但是公式十分复杂,计算起来相当有难度,遇到这种题目就放弃吧,但是也可以得到一
些分数,因为题目中给出的例子是你要计算的其中一个数,答案就算直接给你了,直接填入out文件中就行了,可以得到一点分数,也许你就差这几分就及格了也说不定。
如果你真想得满分的话,那就一个一个动手算吧(绝对理科生!),那可要花不少时间的,反正一切都自己安排吧!
到这里,编程题的技巧讲完了,下面总结做编程题的大致步骤。
首先要说明的是这种特殊方法的原理,我们做每道题之前运行程序的目的就是为了生成out文件,因为机试是由计算机来评分的,它评分的入口就是这个out文件,所以只要你的out文件里的内容和格式与标准答案一样,那么就是满分,我们正是利用了这一点,通过直接修改out文件,来欺骗计算机,从而达到看不懂程序也能得满分的目的。
有的程序运行后也不会生成out文件,那就在考生文件夹下自己建立一个吧,接下来的操作是一样的。
然后就是重头戏,你需要获取题目要求你处理的数据信息,获取方法前面已经详细介绍了,然后结合in文件中的内容格式以及NONO函数的关键字句得出答案的格式,然后填入out 文件中,保存即可。
(注意,有些题目out文件中的原有内容要删除然后重新写,因为其格式和内容都完全错误,而有的则只需要修改即可。
)再强调一遍,保存并退出后千万不要再回头运行一遍程序检查了,那样你所做的工作就泡汤了!!!!!!!!!!!!!!!!!!!!
以上只是编程题的技巧,另外的两种题型也有一些小技巧。
比如改错题可以运行程序后查看底下的运行记录,它会显示哪行出错了,结合记录修改吧!
终于结束了,相信大家只要弄懂这种方法的原理,再加上仔细小心的做题,机试通过绝对不是问题!在此我祝即将要参加计算机二级的朋友们都能够超水平发挥,考出高分偶!
这是本人的第一篇独立完成的日志,我尽我所能将老师传授给我的知识回忆了出来,写成了这篇日志,其中的心血自然不必说,只希望通过这篇日志能够帮助那些考生们顺利过关,这也是本人的心愿,考试通过的朋友们也可以看看啊,以后将会终身受用,这对于学习计算机也有帮助偶,欢迎大家转载!
最后特别要感谢我的老师,还有学校门口网吧的大力赞助,嘿嘿!少一个,现阶段这篇日志就完成不了了。
我决定以后都自己写了,很有意思偶!这算是一篇惊世骇俗的文章了,希望下次再写出一篇这么牛的文章,哈哈!如果还有什么不懂的地方,可以联系我偶,我你们应该认识吧?。