二级C语言考试分析.ppt
四川省计算机等级考试四川省计算机等级考试二级二级C语言考试分析语言考试分析主讲:张会主讲:张会主主 要要 内内 容容一、主要考点分析一、主要考点分析1、考试题型分析、考试题型分析2、理论考试题型与主要考点、理论考试题型与主要考点3、上机考试题型与解题方法、上机考试题型与解题方法二、常考算法二、常考算法三、应试方法与技巧三、应试方法与技巧四、重要章节复习(指针)四、重要章节复习(指针)考试题型分析考试题型分析一、理论考试一、理论考试(考试时间:考试时间:120分钟分钟)软件技术基础(软件技术基础(15分)分)C程序设计基础(程序设计基础(10分)分)读程序回答问题(读程序回答问题(45分)分)程序填空(程序填空(30分)分)二、上机考试二、上机考试(考试时间:考试时间:60分钟分钟)程序调试题(程序调试题(40分)分)编写程序(编写程序(60分)分)主要考点分析主要考点分析理论考试的题型与主要考点理论考试的题型与主要考点一、软件技术基础(一、软件技术基础(10分判断题,分判断题,5分选择题)分选择题)主要考点分析主要考点分析复习方法复习方法先把软件技术基础知识认真地看一遍,把知识点串成一个先把软件技术基础知识认真地看一遍,把知识点串成一个整体,让自己的大脑中有一个整体框架;整体,让自己的大脑中有一个整体框架;用用较集中的时间较集中的时间把软件技术基础知识题目做完,因为这样把软件技术基础知识题目做完,因为这样能更好的感受到常考内容和考点;能更好的感受到常考内容和考点;把所做题目中的错题找到改正的依据;把所做题目中的错题找到改正的依据;再把全部试题(不管是做对的还是做错的)再做一遍,再再把全部试题(不管是做对的还是做错的)再做一遍,再纠正错题;纠正错题;把前几次的错题再反复做两遍;把前几次的错题再反复做两遍;考试前再把所有试题看一遍。考试前再把所有试题看一遍。等着拿软件技术基础知识的高分!等着拿软件技术基础知识的高分!二、单项选择题(每题二、单项选择题(每题1分,共分,共10分)分)主要考点主要考点:(:(对对C C基本知识的理解和掌握基本知识的理解和掌握)v运算符和表达式运算符和表达式:算术算术(*、/、%、+、-、(类型类型)运算、关运算、关系运算、逻辑运算、条件运算、位运算、指针运算系运算、逻辑运算、条件运算、位运算、指针运算v程序设计的基本结构程序设计的基本结构:选择选择(if、ifelse、switch)、循环、循环(while)v数组数组:定义、赋初值、输入、输出定义、赋初值、输入、输出v函数函数:定义、调用定义、调用v宏宏:带参数的宏、带参数的宏、嵌套宏嵌套宏v结构体、共用体结构体、共用体主要考点分析主要考点分析三、读程序回答问题(每问三、读程序回答问题(每问3分,共分,共45分)分)主要考点主要考点:(:(注意知识的综合运用注意知识的综合运用)程序设计基本结构程序设计基本结构:复杂分支、循环及混合处理复杂分支、循环及混合处理数组数组:一维数组、二维数组、字符数组一维数组、二维数组、字符数组(重点)(重点)指针指针:变量的指针、数组的指针变量的指针、数组的指针(重点)(重点)函数函数(重点)(重点)a)a)参数传递方式参数传递方式(普通值、地址值普通值、地址值)b)b)函数的函数的递归调用递归调用,注意每次递归的参数值以及递归返回的注意每次递归的参数值以及递归返回的位置位置c)c)函数和循环、指针、数组的综合应用函数和循环、指针、数组的综合应用变量的存储属性和变量的存储属性和循环、函数的综合应用循环、函数的综合应用结构体结构体、共用体(、共用体(01题)题)宏定义宏定义(01题)题)文件和循环、函数的综合应用(文件和循环、函数的综合应用(01题)题)主要考点分析主要考点分析四、程序填空(每空四、程序填空(每空2分,分,30分)分)(多练习往届多练习往届考题考题)常见填空位置常见填空位置:v函数的函数的实参实参v函数函数调用调用语句语句v循环或分支语句的循环或分支语句的条件条件v变量定义或赋初值变量定义或赋初值v数据的输入、输出数据的输入、输出v文件的打开、读写文件的打开、读写v其他操作语句其他操作语句主要考点分析主要考点分析常用的库函数常用的库函数math.h包含:包含:abs(x)、fabs()、pow(x,y)、rand()、sqrt(x)stdio.h包含:包含:文件操作类、文件操作类、getchar()、putchar()、gets()、puts()string.h包含:包含:strcat()、strcpy()、strcmp()、strlen()ctype.h包含:包含:isalpha()、isdigit()、islower()、isupper()等等主要考点分析主要考点分析上机考试的题型与解题方法上机考试的题型与解题方法一、程序调试题一、程序调试题(40分分)1、解题步骤、解题步骤 (1)调出源程序调出源程序(注意文件名注意文件名)(2)仔细阅读分析程序查找逻辑错误仔细阅读分析程序查找逻辑错误 (3)编译查找语法错误编译查找语法错误 (4)保存运行保存运行2、注意、注意 (1)保存改错题无需设置路径和文件名,直接以原名保存原位置保存改错题无需设置路径和文件名,直接以原名保存原位置(按(按F2即可)即可)(2)程序一般为程序一般为56处错误,改对一处即得相应分值处错误,改对一处即得相应分值 (3)时间一般控制在时间一般控制在20分钟以内完成分钟以内完成主要考点分析主要考点分析上机考试的题型与解题方法上机考试的题型与解题方法程序调试题常见错误设置程序调试题常见错误设置(1)打开及关闭文件)打开及关闭文件(2)输入语句)输入语句(3)函数调用时)函数调用时 (4)实现程序功能的核心代码处实现程序功能的核心代码处(5)输出语句部分)输出语句部分(6)其它地方)其它地方主要考点分析主要考点分析二、编写程序(二、编写程序(60分)分)1、题型:、题型:函数调用处理字符串、一维数组或二维数组函数调用处理字符串、一维数组或二维数组2、注意:、注意:(1)设置正确的文件名,看清题单上的要求设置正确的文件名,看清题单上的要求 (2)文件存在考生目录下文件存在考生目录下(即默认目录)(即默认目录)主要考点分析主要考点分析三 常考算法排序算法排序算法(选择、冒泡选择、冒泡)判断素数判断素数求最值求最值数组元素逆序存放数组元素逆序存放有序数组中插入一数后仍然有序有序数组中插入一数后仍然有序分解整数各位数字分解整数各位数字数字字符串和整数的相互转换数字字符串和整数的相互转换英文大小写字母的相互转换英文大小写字母的相互转换字符串中的指定字符进行删除字符串中的指定字符进行删除进制的转换进制的转换二维数组进行转置二维数组进行转置例例1 1:编写函数:编写函数funfun,函数,函数funfun的功能是:求出满足的功能是:求出满足“百位减十位等于个位百位减十位等于个位”的所有三位整数,并按降序的所有三位整数,并按降序存入形参数组存入形参数组a a中,满足条件下的三位数总个数作为函中,满足条件下的三位数总个数作为函数值返回。数值返回。mainmain函数中调用函数函数中调用函数funfun,并按一行,并按一行5 5个数输出结个数输出结果。果。例例2:编写函数编写函数fun,其功能是:将形参指针,其功能是:将形参指针a指向指向的字符顺序放入形指针的字符顺序放入形指针c指向的字符串中,再把形参指向的字符串中,再把形参指针指针b指针的字符串逆序放入形参指针指针的字符串逆序放入形参指针c指向的字符串指向的字符串中。注:不能使用字符串的复制和连接函数。中。注:不能使用字符串的复制和连接函数。例如:例如:a指向的字符串为指向的字符串为adcb,b指向的字符串为指向的字符串为213,则字符串,则字符串c中的内容为中的内容为adcb312。指针指针1、变量的指针及指向变量的指针变量、变量的指针及指向变量的指针变量 注意:指针变量作函参时与普通变量的区别注意:指针变量作函参时与普通变量的区别2、指针与数组、指针与数组 (1)一维数组与指针,如有一维数组与指针,如有int i,a10,*p=a;引用数组元素的方法:引用数组元素的方法:ai=*(a+i)=pi=*(p+i)数组元素地址的表示:数组元素地址的表示:&ai=&pi=a+i=p+i p+表示指针指向下一个元素,表示指针指向下一个元素,a+无意义无意义Ex指针与一维数组:指针与一维数组:#include void fun(int*a,int bott,int top)int i,j,t;i=bott;j=top;while(ij)t=ai;ai=aj;aj=t;i+;j-;void main()int a10=1,2,3,4,5,6,7,8,9,0,i;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(i=0;i10;i+)printf(%d,ai);1函数函数fun的功能是(的功能是()(A)将下标为将下标为bott 到到 top 之间的数组元素逆置之间的数组元素逆置(B)将下标为将下标为bott 到到 top 之间数组元素进行升序之间数组元素进行升序排列排列(C)将下标为将下标为bott 到到 top 之间数组元素进行降序之间数组元素进行降序排列排列(D)将下标为将下标为bott 和下标和下标为为 top 的两个元素互换的两个元素互换2程序的运行结果为(程序的运行结果为()(A)0987654321(B)4321098765(C)5678901234(D)0987651234指针指针 (2)二维数组与指针二维数组与指针(int a34)行地址与列地址的表示行地址与列地址的表示 指向行的指针变量指向行的指针变量(int(*p)4 )(3)字符串和指针字符串和指针 利用指针引用字符数组及其元素利用指针引用字符数组及其元素 应注意应注意0的正确使用的正确使用3、指针数组和指向指针的指针、指针数组和指向指针的指针 (1)指针数组:指针数组:int *p4;char *p5;(2)二级指针:二级指针:int *p;(3)指针数组作指针数组作main函数的形参:函数的形参:void main(int argc,char *argv)ex指针数组与二维数组有下列程序有下列程序void main()char ch25=6934,8254,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i0&pij=9;j+=2)s=10*s+pij-0;printf(%dn,s);输出结果是(输出结果是()。)。(A)6385 (B)69825 (C)63825 (D)693825此时的二维数组名此时的二维数组名与指针数组名等价与指针数组名等价ex指针数组与二维数组下列程序的运行结果是下列程序的运行结果是()。#include void main()char*str=One,Two,Three,Four;char*ptr=str;int i;for(i=0;i3;i+)printf(%s,(ptr+1)i);(A)newohree (B)Two (C)TwoThreeFour (D)指针运算非法,无输出指针运算非法,无输出指针指针4、函数的指针和指向函数的指针变量、函数的指针和指向函数的指针变量5、返回指针值的函数、返回指针值的函数返回指针值的函数:返回指针值的函数:读下列程序分析运行结果读下列程序分析运行结果#include char*cat(char*str1,char*str2)char*pt;for(pt=str1;*pt!=0;pt+);while(*str2!=0)*pt+=*str2+;return(pt);void main()char*p,s130=210,s230=45;p=cat(s1,s2);printf(%dn,p-s1);p=cat(s1,s2);printf(%dn,p-s1);主函数中,执行第一个输出函主函数中,执行第一个输出函数后的结果为数后的结果为(38 )。38 (A)5 (B)6 (C)7 (D)8 主函数中,执行第二个输出函主函数中,执行第二个输出函数后的结果为数后的结果为(39 )。39 (A)5 (B)6 (C)7 (D)8 应试方法与技巧应试方法与技巧v笔试除程序填空题外其它题要笔试除程序填空题外其它题要求全部给出答案求全部给出答案v机试编程题不要什么都不写,机试编程题不要什么都不写,阅卷有步骤分阅卷有步骤分往届考试资料和复习资料请在网络学堂往届考试资料和复习资料请在网络学堂相关课程中查找下载!相关课程中查找下载!祝同学们祝同学们 考试成功!考试成功!递归调用下列程序运行的结果为(下列程序运行的结果为()。)。#include stdio.hvoid fun(char*s)char t;if(*s)t=*s+;fun(s);if(t!=0)putchar(t);void main()char*a=1234;fun(a);(A)1234 (B)4321 (C)1324 (D)4231宏替换#include#define FUN(x,y)xy?y:xvoid main()int x=5,y=10,z;z=10*FUN(x+y,x*y);printf(%dn,z);结构体共用体以下程序运行的结果是()。#include union myun struct int x,y,z;u;int k;a;void main()=4;=5;=6;a.k=0;printf(%d%d%dn,);宏的嵌套下列程序运行结果是下列程序运行结果是(35 )。#define X 5#define Y X+1#define Z Y*X/2 void main()int a;a=Y;printf(%d ,Z);printf(%dn,-a);