首页 二级语言强化班上机培训讲义 PPT

二级语言强化班上机培训讲义 PPT

举报
开通vip

二级语言强化班上机培训讲义 PPT二级语言强化班上机培训1、考生开考前30前钟进入候考室,交验准考证与身份证。2、开考之前,先运行一下VC与看一下输入法是否符合自己的习惯。3、记得保存一份试题目录中的所有文件,以免出错或去掉注释符后自己都不明白自己改了什么。4、调试程序的时候,能够在调试窗口设变量显示中间值看正不正确。5、假如调试运行时死循环,能够按Ctrl+Break中断死循环,不需要重新启动机器。6、出现异常应该举手报告监考老师,他们有各种密码,包括抽题密码、重抽密码与延时密码。上机考试注意事项Logo考生文件夹是放置题目提供的源程序、考生存放...

二级语言强化班上机培训讲义 PPT
二级语言强化班上机培训1、考生开考前30前钟进入候考室,交验准考证与身份证。2、开考之前,先运行一下VC与看一下输入法是否符合自己的习惯。3、记得保存一份试题目录中的所有文件,以免出错或去掉注释符后自己都不明白自己改了什么。4、调试程序的时候,能够在调试窗口设变量显示中间值看正不正确。5、假如调试运行时死循环,能够按Ctrl+Break中断死循环,不需要重新启动机器。6、出现异常应该举手 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 监考老师,他们有各种密码,包括抽题密码、重抽密码与延时密码。上机考试注意事项Logo考生文件夹是放置题目提供的源程序、考生存放答题结果的唯一位置。考生做完题目后必须将结果存放在考生文件夹中,否则结果必定是零分。考生文件夹的命名是系统默认的,一般为准考证号的前四位与后四位。单机版路径为“C:\WEXAM\准考证号前四位+后四位”;而网络版的路径为“K:\用户目录文件夹\准考证号前四位+后四位”。考生文件夹Logo最好控制在60分钟内完成上机题类型18分18分24分填空题改错题编程题Logo改错题目的错误之处的前一行都有*****found******标志!事实上,评分程序就是依照这个标志,从考生的modi、*(扩展名随程序语言的不同而有所不同)文件中抽取它的下一行(或第二行)信息,与标准答案进行比较。通常,标准答案会有多种,只要考生的答案与其中一个对应上了即可得到相应的分数。结论:A、即使您的改错程序能够正确执行,也未必能够得分!!B、改错程序修改完毕后,无所谓运行与否,这与得分无关!上机题打分 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 Logo关于题空题,评分程序先是读取考生文件夹下的BLAN、C文件,再找到其中需要填空的代码所在的行数,然后将考生填写的答案与题库中的事先给出答案进行对比,正确就得分,不正确就不得分;然而存在如此一个问题,假如一个题有多个答案,题库中不估计把所有答案都列举得出来,因此考生最好用最常见的一个,确保正确;需要提醒考生注意的是,填空题与改错题的要求中明确 声明 无利益冲突声明中华医学会杂志社职业健康检查不够规范教育部留学服务中心亲友住房声明 :不得删减或增加程序行,就是这个道理;Logo关于编程题,评分程序先是读取考生文件夹下的扩展名为、DAT的文件,再其中的数据与评分程序中的提供的数据进行对比,因此,考生在编程后,一定要运行程序,以生成扩展名为、DAT的输出文件!!评分程序是依照最终生成的文件给分的!且:只要考生能生成最终答案文件,均可得分!特别多最终答案文件只有少数若干行数据,分数由正确答案的行数决定!例如,真考题库中有如此一道题,要求计算cos(x)-x=0的一个近似根,其答案是0、739085,最终要求生成的文件OUT、DAT中只有一行数据。有这个文件,同时该文件只有一行数据0、739085的话,就能够得到100分!当然,有多行答案的文件的格式是由程序中的输出部分决定的(而这个部分是不允许考生修改的!),考生必须能够看明白输出程序段的输出格式,否则会适得其反!Logo第1章程序改错题改错题解题技巧常见错误分类典型改错题举例Logo改错题解题技巧做题方法:(1)首先认真审题,了解试题的要求,看清楚试题给出的输入与输出例示,以便检验改错后程序运行的结果是否正确。(2)当在VC环境下调出源程序后,审视"/******found******/“所在函数,依照题义理解程序所采纳的基本算法,做到内心有数。(3)对测试程序进行编译,看是否有语法错误。当编译提示有语法错时,可参考编译提示来查找并改正错误。Logo(4)当不再出现语法错时,使用执行程序,依照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。(5)当程序存在逻辑错误时,首先应当理解题意、读明白程序的算法,必要时可按步检查数据的流程,以便确定错误所在。(6)修改完成,得到正确结果后,一定不要不记得把修改后的程序存盘。Logo改错题的特点与注意事项求分数与的时候请注意整除问题。如2-2循环的初值、条件、与终值问题。如3-2注意关键词:如NULL与Null的区别,如9-2;“\0”与’\0’的区别,如8-2。大小写问题:For与for,Int与int,如8-2、14-2。形态相似字符:小写字符l与数字1的区别如1-2,字符o与数字0的区别。符号问题:(1)“\”与“/”的区别,如4-2,5-2;(2)“=”与“==”的区别,如4-2。加漏符号(*或;)问题:如6-2,7-2,9-2,10-2,11-2,12-2,13-2,15-2,19-2Logo注意比较值时,指针(位置)与指针值(内容)的问题。如1-2,19-2注意理解题意,如:14-2参数或变量类型不一致的问题,参数及函数名前面的类型一般不能够省。如指针与普通变量。如2-2,6-2,9-2,10-2,19-2两个数相互交换应该借助临时变量来实现,而不能直截了当赋值。如x与y互换,借助t,则:t=x;x=y;y=t;带参宏定义的时候展开的时候有括号就有括号,没括号不要画蛇添足。反过来,假如展开的时候必需要有括号,那个在定义的时候请加上括号。IF语句的条件加括号。如10-2Logo变量有没有定义及赋初值。如5-2如s为指针变量,请注意s与*s的区别及用法。如10-2,15-2C语言的结束标志为分号(;),写在同一行上的一段代码,假如是尾于不同的语句应用分号隔开。如inta,b,floatc;应改为:inta,b;floatc;是否漏写了C语言的结束标志为分号(;),如10-2是否多写C语言的结束标志为分号(;),如12-2如:"switch(a);",应改为"switch(a)""intf(intn);",应改为"intf(intn)""for(i=1;i<=5;i++;)",应改为"for(i=1;i<=5;i++)"Logo赋值运算符左右类型不一致如:实型变量"x=1/i",应改为"x=1、0/i"字符变量"c="\0"",应改为"c='\0'"指针变量"p=10",应改为"*p=10"表达式格式错误或次序错误如:"if!(x>y)",应改为"if(!(x>y))"变量1=变量2,如:"p=q",应改为"q=p"交换两个变量的值,如:"t=x,y=x,y=t",应改为"t=x,x=y,y=t“变量初值或类型错误如:"intx=1",应改为"doublex=0"Logo函数类型或形参类型说明错误"intf(inta)",应改为"doublef(inta)"实参是地址(数组名),形参应是指针或数组名"intf(intp)",应改为"intf(int*p)"或者改为"intf(intp[])";其他错误如:"a=c-'o'",应改为"a=c-'0'""scanf("%f",i)",应改为"scanf("%d",&i)""case0;",应改为"case0:"Logo例1:给定程序MODI1、C中函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<stdio、h>#include<string、h>#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){/**************found**************/for(j=i+1,j<6,j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(1stringateachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}Logo例2:给定程序MODI1、C中函数fun的功能是:求出数组中最大数与次最大数,并把最大数与a[0]中的数对调、次最大数与a[1]中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<stdio、h>#defineN20voidfun(int*a,intn){inti,m,t,k;for(i=0;i<2;i++){/**********found**********/m=0;for(k=i+1;k<n;k++)/**********found**********/if(a[k]>a[m])k=m;t=a[i];a[i]=a[m];a[m]=t;}}main(){intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;for(i=0;i<n;i++)printf("%d",b[i]);printf("\n");fun(b,n);for(i=0;i<n;i++)printf("%d",b[i]);printf("\n");}Logo常见错误分类上机改错题通常有两个(或三个)错误需要修改。试题中用“/******found******/”来提示在下一行(或下面第二行)有错。错误的性质基本分为语法错误与逻辑错误两种,也有些试题要求把语句添加在下划线处。特别要注意的是:只能在出错的行上进行修改,不要添行、删行、合并或分解行,不要改动程序的顺序,更不要自己另编程序。Logo若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return后变量的类型一致。1、函数首部Logo若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符*;4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(==)。2、if或while语句Logo若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。记住是分号(;),不是逗号(,)!3)再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化3、for语句Logo若错误行为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要依照题意来分析,分析返回变量或表达式的值与类型5、return语句Logo若错误行为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;这种错误需要依照题意来分析,分析返回变量或表达式的值与类型4、return语句Logo5、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。B、大小写不对,若错误行中有大写字母则一般都改成小写字母。C、变量未定义D、变量类型不匹配E、字符常量与字符串常量混淆Logo6、指针变量的运用,若错误行中有指针变量,同时该变量名前没有指针运算符则一般都是加上指针运算符7、若错误行中见到整型1除以某个表达式时,一概改成1、0。但若是整型变量或表达式则只能用强制转换8、复合运算符写错Logo9、字符串结束符写错,若有字符串结束符则要特别注意有没有写错,注意要区分字符‘o’与数字’0’。但第11题例外,因为该题是要将数字字符转换成对应的数字。10、若错误行是定义语句,则首先看类型是否符合;再看所赋初值是否正确;若以上均不是,则看是否少定义了某个变量或少了花括号。11、表达式错误(占的份量最多,同时没有统一的改法,我们只能通过题目要求来分析并修改)Logo常见语法错误1、关键字出错:在二级C语言考试中仅仅考查学生对基本的关键字掌握情况,比如:整型就是int不是Int, 知识点 高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载 简单。(1)6题第二个空:If应该改为if;(2)12题第二个空:If应该改为if;(3)23题第一空:dounle应该改为double;(4)35题第二空:If应该改为if;(5)36题第二空:Double应该改为double。(6)2题第二空:wihle应该改为while。Logo2、格式出错:在考试中主要考查学生细心的程度,最喜爱考简单的知识点。(1)少分号:2题第一空、28题第一空、29题第一空、34题第二空、37题第二空、48题第二空。考查的知识点:分号是语句结束的标志。(2)for语句的格式:for(;;)中间用分号隔开不是用逗号隔开。3题第二空、6题第一空、14题第二空都是出现了for语句格式出错的问题。(3)if语句的格式:if(表达式),if后面必须加上小括号。37题第一空if后面必须加上小括号。(4)命令行格式出错:17题第一空中include命令少了#,正确的形式应该是#include“stdio、h”;Logo(5)常用函数格式:A22题第一空中n=strlen[aa]应该改为n=strlen(aa),记住函数名后面一定是花括号,不能是方括号,方括号只有在数组下标中用到。B49题第一空intj,c,floatxa=0、0;应该改为intj,c;floatxa=0、0;记住:要同时定义两种以上不同的数据类型的时候必须在不同类型的数据中间加上分号。C41题第二空scanf(“%d”,a[i][j]);应该改为scanf(“%d”,&a[i][j])。考查Scanf输入函数的格式。Logo(6)数组:所有老师讲到数组时候必须统一将此知识点给学生回顾一遍!A数组下标引用时候只能用反括号。28题第二空t(k)=b(j)应该改为t[k]=b[j]。B二维数组中的列下标不能省略。46题第一空必须将数组列下标补充完整。Logo(7)常用符号出错:AC语言中大于等于符号是“>=”,然而在考试的时候估计出现将它写为“=>”,49题第二空就是如此的错误。B当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”、“或”、“非”记住。Logo判断某个字符是否是大写字母:charch;if(ch>=’A’&&ch<=’Z’)printf(“%c”,ch);判断某个字符是否是小写字母:charch;if(ch>=’a’&&ch<=’z’)printf(“%c”,ch);判断某个字符是否是数字:charch;if(ch>=’0’&&ch<=’9’)printf(“%c”,ch);判断某个数字是否能同时被5与7整除:inti=35;if(i%5==0&&i%7==0)printf(“%d”,i);判断某个数字是否能被5或7整除:inti=35;if(i%5==0||i%7==0)printf(“%d”,i);判断某个数字是否是偶数或奇数:inti=35;if(i%2==0)printf(“%d是一个偶数”,i);elseprintf(“%d是一个奇数”,i);Logo1、使用了没有定义过的变量:这种题目能够通过编译查找出出错的地方并改之。(1)0(零)与o(字母欧)的区别:19题第一空、23题第二空、43题第二空。(2)P(大)与p(小)的区别:33题第一空。(3)普通变量大小写的区别:A定义与使用时的字母大小写不一致;如:"I",应改为"i"B大小写没有出错,程序中直截了当使用了没有定义过的变量,要求学生更加细心的读题目。45题第二空使用到了i这个变量,然而我们在定义行中没有找到i的定义,因此在做题时候要上下结合来分析题目。22题第二空c=aa[j]中的c没有定义过,参看定义的语句不能发现应该是ch=aa[j]。常见逻辑错误Logo2、运算符号出错:"a\=10",应改为"a/=10""a=b/10",应改为"a=b%10""a=b",应改为"a+=b""if(a=b)",应改为"if(a==b)""if(a>0||b>0)",应改为"if(a>0&&b>0)""a<10",应改为"a<=10"Logo3、表达式的取值范围出错:当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3-…、-1/m*m这个表达式,在这个题目中第一空有如此的for语句for(i=2;i<m;i++)y-=1/(i*i);从题目中不难发现i是一个变量,它的取值范围从整数2开始到m-1结束,最终计算的结果为y=1-1/2*2-1/3*3-…、-1/(m-1)*(m-1)与题目要求的不符,因此将i<m改为i<=m。做如此的题目看两点:一看题目中的表达式,二看for语句中变量的取值范围。31题第二空同样的考点。Logo4、C语言中的除法运算:这个考点同样考查表达式的相关知识。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3-…、-1/m*m这个表达式,在这个题目中第一空有如此的for语句for(i=2;i<m;i++)y-=1/(i*i);刚才我们将了表达式的范围,现在我们考虑y-=1/(i*i);是否正确?赋值号左边问题不大,我们看看右边1/(i*i),其中i是整数,那么i*i也是整数,在C语言中1除以比它大的数时值为零。如此与题目的要求就不相符。记住:1/2的值为零,只有1、0/2或是1、0/2、0的值为0、5。39题第一空也同样是这种错误。Logo5、找最大值与排序问题:遇到这种题目在改错题中最容易考查的是大于(>)、小于(<)等符号的变化,当您查找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小于,将小于改为大于!11题第二空、12题第一空与13题第二空、4题第二空都能够用如此的方法。Logo6、函数的返回值及其参数:重点函数调用、函数的返回值与return中数据类型不一致,例如:1、1、3、1、16、1、19、2、34、1、36、1、40、1、48、1都死如此的错误;return后面的表达式及其类型:19、2、30、2、39、2形参与实参类型不一致,例如:5、1、13、1、17、2、20、1、25、2依据刚刚讲的方法特别快就能找出出错点。赋值号的左右两边的类型不一致,例如:5、2、5、3、20、2、24、2、35、1、44、1一定特别注意!Logo7、数组:(1)数组下标的初始值:数组下标从零开始,到长度减一结束。考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。定义初始值有窍门,遇到累加时,用来存放累加与的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为一。8、1中的变量k赋值为1,然而我们说了数组的下标只能从0开始,因此将1改为0就行了。Logo(2)数组与字符串长度减一:当使用数组中的元素时,最大值只能到数组长度减一。字符串以’\0’作为字符串的结束标志,因此取值最大也只能到字符串长度减一。25、2中输出printf(“%d”,aa[i]);分析程序明白i在此时就是数组的长度,我们要输出数组中的元素,最大就只能到aa[i-1],因此改为printf(“%d”,aa[i-1]);就行了。4、1与38、2中考查的是字符串长度减一的问题。Logo(3)数组下标往后走:当题目要求将一个数组中的元素直截了当赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增。9、1中s[j]=s[i];将s[i]中的值复制给s[j],联系上下函数段发现i是一个变量被for语句控制,从0开始直到遇到’\0’结束。i一直在加。然而j没有变化,因此改为s[j++]=s[i];即可。类似的题目有:25、2、26、2、32、1、50、2。Logo(4)字符数组复制操作:若程序中的循环中有s[j++]=s[i];循环后面一般应有语句s[j]=‘\0’;常见的错误时题目[]内写的是i而不是j;s[j]=‘\0’在填空题中也常被作为备选项让大伙儿填。Logo8、特例:部分题目的解答特别特别,需要依照上下文中的内容来解答题目;例如10、1,在此题目中,定义了变量t=0;依照下面程序中的循环,s=0、0,首先加的是变量t的值,即s的值是从0、0开始的,s得到的值是:s=0、0+0、0+1、0/3+……,观察表达式的值,这个少加了第一项1、0的值,因此变量t的初值不能是0、0,只能是1、0,或者是1;类似的题目有:21、2,33、2、40、2、43、1、47、1、50、1Logo9、链表链表的题目分为带头结点的与不带头结点的链表;1、带头结点的链表带头结点的链表的第一个空的改为:p=h->next;第二个空改为:p=p->next;、2、不带头结点的链表不带头结点的链表的第一个空的改为:p=h;第二个空改为:p=p->next;、Logo10、其它循环语句、if语句、复合语句的花括号后多加了分号赋值号与等号混淆引号或括号不对称(只有一边)复合语句少了“{}”变量的初值不正确或未赋初值Logo利用scanf()函数给变量赋值时不记得加地址运算符“&”输入输出的数据类型与所用格式说明符不一致输入数据时,企图规定精度,如:scanf("%7、2f",&a);switch语句中漏写break语句在引用数组元素时,将定义数组时的下标值作为数组最后一个元素的下标使用scanf()函数时,输入数值型数据的方式与要求不符,或输入字符格式与要求不一致(此类错误虽不方便出改错题,但对任何C程序设计的学习者来说却是必须注意的地方)Logo#include<stdio、h>voidfun(char*s){inti,j;for(i=j=0;s[i]!=‘\0’;i++)if(s[i]!=‘c’)/**********found*********/s[j]=s[i];/**********found*********/s[i]=‘\0’;}main(){chars[80];printf(“enterastring:”);gets(s);printf(“Theoriginalstring:”);put(s);fun(s);printf(“Thestringafterdeleted:”);puts(s);printf(“\n”);}s[j++]=s[i]s[j]=‘\0’这是前移问题,请注意赋值号左右两端的数组下标(或指针)都得往后移,同时注意字符串的末尾手动加一个结束标志‘\0’。例3、在给定的程序中,函数fun的功能是:从s所指字符串中删除所有小写字母c。Logo例4:下列给定程序的功能是:读入一个整数k(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<conio、h>#include<stdio、h>/********found********/IsPrime(intn);{inti,m;m=1;for(i=2;i<n;i++)/********found********/if!(n%i){m=0;break;}return(m);}(1)去掉;(2)if后加括号main(){intj,k;clrscr();printf(“\nPleaseenteranintegernumberbetween2and10000:”);scanf(“%d”,&k);printf(“\n\nTheprimefactor(s)of%dis(are):”,k);for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))printf(“\n%4d”,j);printf(”\n”);Logo例6:下列给定程序中,函数fun的功能是:将a所指字符串中的字符与b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的字符放在c的尾部,如:a=“abcdefg”,b=“1234”,则c="a1b2c3d4efg"#include<conio、h>#include<stdio、h>#include<string、h>/**********found********/fun(chara,charb,charc){while(*a&&*b){*c=*a;c++;a++;*c=*b;c++;b++;}if(*a=='\0')/*********found*********/while(*b)*c=*b;c++;b++;}else/*********found*********/while(*a)*c=*a;c++;a++;}*c='\0';}main(){chars1[100],s2[100],t[200];clrscr();printf("\nEnters1string:);scanf("%s",s1);printf("\nEnters2string:);scanf("%s",s2);fun(s1,s2,t);printf("\nresultis:%s\n",t);}改正方法:voidfun(char*a,char*b,char*c)while(*b){*c=*b;c++;b++;}while(*a){*c=*a;c++;a++;}Logo例6:下列给定程序中,函数fun的功能是:依照形参m(9=>m>=2)的值,在mXm的二维数组中存放如下所示的数据,由main()函数输出例如:若输入2若输入4则输出12则输出123424246836912481216请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!Logo#include<stdio、h>#include<conio、h>#defineM10inta[M][M]={0};/********found*******/fun(int**a,intm){intj,k;for(j=0;j<m;j++)for(k=0;k<m;k++)/********found*******/a[j][k]=k*j;}main(){inti,j,n;clrscr();printf("Entern:");scanf("%d",&n);fun(a,n);for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}}voidfun(inta[M][M],intm)a[j][k]=(k+1)*(j+1);Logo二级C应试辅导例7:下列给定程序中,函数fun的功能是:删除数列中值为x的元素,n中存放的是数列元素的个数。请改正程序中的错误,使它能得出正确的结果。#include<stdio、h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/********found*******/if(P==n)return-1;else{for(i=p;i<n;i++)/********found******/a[i+1]=a[i];returnn-1;}}Logo#include<stdio、h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/********found*******/if(P==n)return-1;else{for(i=p;i<n;i++)/********found******/a[i+1]=a[i];returnn-1;}}main(){intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;n=10;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\nInputx(todelete):");scanf("%d",&x);printf("Delete:%d\n",x);n=fun(w,n,x);if(n==-1)printf("***Notbefound!***\n\n");else{printf("Thedataafterdeleted:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\n\n");}}if(p==n)return-1;a[i]=a[i+1];Logo第2章程序填空题填空题是计算机等级考试中的难点,占有的分值为20分。填空题答题技巧:若需要填的空出现在程序前面部分,多数是定义变量,此时需要观察后续那个变量尚未定义;若出现在中间部分,则赋值号左边填的内容与该语句之后的语句相关;赋值号右边填的内容与该语句之前的语句相关;若出现在打印语句之前,则填空内容与打印项相关;若出现在打印语句中,则填空内容与该语句前面最后一条可执行语句中赋值号左边的变量相关。Logo填空题上机填空题一般包含三个空。试题中用“/******found******/”来提示在下一行在有填空。要填空的位置用1、2、3表示。考生在考试时应删除标识1、2、3及下划线并填入相应的代码。特别要注意的是:只能在要填空的位置上进行修改,不要添行、删行、合并或分解行,不要改动程序的顺序,不要自己另编程序。Logo注意事项1、填写参数时注意主调函数与被调函数类型一致。数组名作形参能够不指定大小。如:1-1,2-1,10-12、依照题目意思,再从函数中找出对应的变量填写表达式。如:3-1,4-1,5-1,6-1,7-1,8-1,9-1,11-1,12-1,13-1,14-13、能够依照上下文的函数形式找出相应填写内容。如:5-1,6-1,7-1,8-1,9-1,10-1,16-1Logo填空题解题步骤Step1:认真阅读题目要求与功能,尤其是题目给出的输入与输出示例,以便检验填空后程序运行结果是否正确。Step2:在VC++6、0环境下调出源程序,读明白程序代码,依照“(数字)”出现的位置与题目要求填写空白内容。Step3:按F7键编译源程序,若发现有语法错误,重新检查或调整答题思路。Step4:按Ctrl+F5执行程序,依照试题示例中给出的数据进行测试,假如结果与给出的输出结果相同,该题就完成了;假如测试的结果与给出的结果不同,就需要进一步检查程序的逻辑错误。Step5:最后得到正确结果后,一定保存程序,否则不得分。Logo填空题分类(一)、数学题目例如:6、13、25、29、36、37、38、44、461、假如在函数中定义变量,然而没有定义成静态存储变量,即变量前面没有static,应给变量赋初值,假如以后用到的是加减运算,则赋初值为0或者是0、0;假如以后用到的是乘除运算,则赋初值为1或者是1、0;2、循环条件的填空,分析表达式的规律,看表达式中的最后一项的值是否到了第m项或者是第n项,假如到了第m或者第n项,则在循环中的第二个表达式中用到的是i<=m或者是i<=n;Logo3、循环条件中假如用的是while语句,则循环变量的初值应该在while的外面定义与赋初值,在循环语句中必须给变量自加或者是自减。假如没有则一般填的是i++;4、看表达式中的每一项的运算规则,依照运算的规则把每一项中的n值替换为i,特别情况例外。假如是表达式中用到的是间隔相加减的运算时,注意给中间变量赋初值为1或者是1、0;在后面的运算中给变量乘以一个-1,以改变中间变量的符号。Logo(二)字符串题目例如:8、10、11、12、14、18、19、21、35、45、48、491、循环的条件是判断该字符是否与结束符相等,假如相等,循环结束,否则接着循环。2、把一个数字字符转变成对应的数值的格式:ch=ch-‘0’;把大写字母转变为小写字母的格式:ch=ch+32;把小写字母转变为大写字母的格式:ch=ch-32;Logo3、区分好字符数组中的指针与指针所指的值的关系。在循环语句中,当指针往后走一个位置的时候,用的是指针的自加,而不是指针所指的值的自加。4、掌握字符数组中的函数的使用的格式。即:strlen、strcmp、strcpy、sizeof、strcat的使用格式。注意里面的格式中使用的都是与指针。5、字符数组结束时都有一个结束符:‘\0’;在字符数组中的题目中的结束后要加上一个结束符。Logo(三)结构体题目例如:2、3、16、22、23、331、看清题目的意思。2、定义结构体变量时的格式。3、结构体中成员的调用格式。结构题体中的成员分为多种类型,调用结构体重的成员,使用的是“、”或者是“—>”运算符。如16、2。得到结构体中学生分数,a—>score[i]。4、假如返回的是结构体的话,函数的返回类型必须是结构体类型。调用函数的格式中,调用的若是结构体数组,则只用写结构体数组名。23、3Logo(四)函数题目1、271、看函数的返回类型,函数的返回类型必须与return语句返回的表达式的类型一致。2、函数的调用的情况,函数调用时只用写函数的名称,以及函数的参数。如:第一题中的第二与第三空的内容就是调用函数,填写时只用填写函数的名称与参数,故填f1(x)与f2(x,y);3、函数指针的调用格式,类型名(*f)();27题中第一空。4、函数参数的传递时的调用的格式,假如函数传递的是二维数组,则在函数的传递过程中形式参数必须使用的是由m个元素组成一行的指针变量。第10题中的第一个答案:(*ss)[M]。Logo(五)链表题目:15、42、43、501、首先看清楚题目要求与意思。看清楚链表有没有带头结点,假如带有头结点,第一空填的内容是p=h—>next;假如是不带有头结点,则第一个空填写的是p=h;2、假如第二个空是在循环语句while的括号中的时候里面的内容填写的是p或者是q,以最近出现的为主;假如是在循环语句的里面的时候,填写的是q=p—>next;3、假如是排序的时候,从小到大的时候是大于号,从大到小的时候是小于号。假如出现了r,则在后面的空中填的是r。Logo(六)文件类型的填空28、30、32、471、文件类型的题目,看清楚题目意思,定义一个文件的指针,第一个位置出现fp的时候要填FILE*;2、掌握文件中fopen、fprintf、fscanf、fputs、fputc、fgets、fgetc、fseek、fwrite、fread、rewind函数的使用的格式。fopen(“文件名”,“打开方式”);fclose(文件指针);fscanf(文件指针,格式控制字符串,输入列表项)fprintf(文件指针,格式控制字符串,输出列表项)Logofwrite(存入数据的指针,每一个数据占有的字节,输入数据的个数,文件指针);fread(读出数据的指针,每一个数据占有的字节,输出数据的个数,文件指针);3、文件打开之后要注意关闭文件,关闭文件的函数fclose(文件指针);4、在循环语句中假如使用到的是while(!feof())空格中填写的文件指针,表明判断的是文件指针是否差不多指到了文件的末尾。备注:假如文件指针指到了文件的末尾,则feof返回的是非零值,假如没有指在文件的末尾,返回的是0值。Logo(七)、数组题目例如:3、4、7、17、20、24、26、31、34、39、40、41数组填空题在C语言考试中出现的频率特别高,数组分为一维数组与二维数组。一维数组较二维数组来说简单一些。一维数组中存在如此一些类型:3、17、20、24、31、411、求一个数值数组中的所有值的平均值与把大于或者小于平均值的数辅导例外一个数组中。在计算机平均值时,首先定义一个变量来存放平均分,平均分一般用av变量来代替,假如av差不多定义然而没有赋初值,那么这个空填写的内容的为:av=0;Logo2、求算平均值值时有两种方法:第一种是算出总的分数,最后再除以总的个数即可,如算1到6之间的数的平均值,首先算出1到6的与,其次用综合除以总的个数6,即能够得到平均值;第二种方法是用每一个数除以6再把所有的与加起来。即1/6+2/6+3/6+4/6+5/6+6/6;因此在执行的一维数组中算平均值时也是存在来中情况,假如在for语句的后面有av=av/N;则第二个空一般的填写时av+=s[i];假如说没有av=av/N;则填写的是:av+=s[i]/N;Logo3、在后面的一个空的填写的时候要注意变量的使用情况,假如变量使用了j与i,那么这一个空的填写的内容为:j++;4、假如一维数组中求的是把大于或者是小于平均值的数移动到数组的首部的时候,这种题目的解答时如此的,第一个空一般填写的内容为:j++;第二个空填写的内容是-1;5、对数组进行排序时:假如是从大到小的排序的时候,用的是小于符号,假如是从小到大排序时使用的是大于符号。Logo二维数组中的题目类型以及解决的技巧:例如:4、7、26、34、39、401、二维数组的题目,填空的时候一般是填在函数调用,函数在调用时候写的应该是而为数组的名字;在定义函数的时候使用的是函数的类型与由m各元素组成一行的指针变量,假设二维数组的名字是ss,那么填写的内容是:(*ss)[M];假如调用的是普通变量则填写的内容为:intn;2、二维数组遍历时,使用的是两个循环,使用的是循环的嵌套使用,第二个循环的使用的时候填写的内容为:j=0;(特别的特别处理)Logo3、交换两个变量的值的使用的格式为:t=a;a=b;b=t;记住交换变量的格式与顺序。4、假如二维数组是字符串的题目的时候,要记住字符串中函数的使用的格式;即:strlen、strcmp、strcpy、sizeof、strcat的使用格式。注意里面的格式中使用的都是与指针。5、特别的特别处理。第7题的填空的内容记住。Logo例1:给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。例如,有10个正数:4630324061745154826,平均值为:30、500000主函数中输出:m=30请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1、C中。不得增行或删行,也不得更改程序的结构!#include<stdlib、h>#include<stdio、h>#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i<N;i++)s=s+x[i];/**********found**********/__1__=s/N;d=32767;for(i=0;i<N;i++)if(x[i]<*av&&*av-x[i]<=d){/**********found**********/d=*av-x[i];j=__2__;}/**********found**********/return__3__;}main(){inti;doublex[N]={46,30,32,40,6,17,45,15,48,26};doubleav,m;for(i=0;i<N;i++)printf("%4、0f",x[i]);printf("\n");m=fun(x,&av);printf("\nTheaverageis:%f\n",av);printf("m=%5、0f",m);printf("\n");}1:*av2、i3、a[j]Logo例2:给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi与atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1、C中。不得增行或删行,也不得更改程序的结构!#include<stdio、h>#include<stdlib、h>voidfun(char*s,inta,doublef){/**********found**********/__1__fp;charstr[100],str1[100],str2[100];inta1;doublef1;fp=fopen("","w");fprintf(fp,"%s%d%f\n",s,a,f);/**********found**********/__2__;fp=fopen("","r");/**********found**********/fscanf(__3__,"%s%s%s",str,str1,str2);fclose(fp);a1=atoi(str1);f1=atof(str2);printf("\nTheresult:\n\n%s%d%f\n",str,a1,f1);}main(){chara[10]="Hello!";intb=12345;doublec=98、76;fun(a,b,c);}1、FILE*2、fclose(fp)3、fpLogo例3:给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。例如,若N=3,有下列矩阵:123741456计算结果为852789963请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1、C中。不得增行或删行,也不得更改程序的结构!#include<stdio、h>#defineN4voidfun(int(*t)[N]){intj,r[N];for(j=0;j<N;j++)r[j]=t[0][j];for(j=0;j<N;j++)/**********found**********/t[0][N-j-1]=t[j][___1___];for(j=0;j<N;j++)t[j][0]=t[N-1][j];/**********found**********/for(j=N-1;j>=0;___2___)t[N-1][N-1-j]=t[j][N-1];for(j=N-1;j>=0;j--)/**********found**********/t[j][N-1]=r[___3___];}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("\nTheoriginalarray:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}fun(t);printf("\nTheresultis:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}}1、02、j--3、jLogo#include<stdio、h>#include<string、h>#include<stdlib、h>#include<ctype、h>char*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0,k=0;for(i=0;i<n;i++){if(isdigit)(s[i])){/**********found*********/p[]=s[i];j++;else{
本文档为【二级语言强化班上机培训讲义 PPT】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
可可小屋
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:77
分类:教育学
上传时间:2021-12-03
浏览量:0