收藏 分享(赏)

二级C应试辅导.ppt

上传人:hskm5268 文档编号:7440028 上传时间:2019-05-18 格式:PPT 页数:59 大小:242KB
下载 相关 举报
二级C应试辅导.ppt_第1页
第1页 / 共59页
二级C应试辅导.ppt_第2页
第2页 / 共59页
二级C应试辅导.ppt_第3页
第3页 / 共59页
二级C应试辅导.ppt_第4页
第4页 / 共59页
二级C应试辅导.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、二级C应试辅导,全国计算机等级考试,二级C应试辅导,2,1 二级C考试方式及要求,一、了解考试方式: 1. 笔试:120分钟,满分100分。,题型:选择题(50道单项选择题,其中110题每小题2分、 1150题每小题1分,共60分)填空题(共20空,每空2分,共40分),内容: 公共基础知识部分的30分(其中: 20分选择题、 10分填空题)C语言程序设计部分70分(其中: 40分选择题、 30分填空题),二级C应试辅导,3,2. 机试:60分钟,满分100分。题型:由三种题型组成:一道填空题(30分)、一道改错题(30分) 、一道编程题(40分) 内容:均为C语言程序设计 二、熟悉考试范围:

2、1. 了解最新最全的考试要求。2. 仔细阅读最新的考试大纲,熟悉考试范围。(报名时完成),二级C应试辅导,4,一、程序修改题常见错误类型:1、语法错误以下是一些常见错误:(1) 变量未定义(2) 变量大小写不统一(3) 变量类型不匹配(4) 字符常量与字符串常量混淆 (5) 语句末尾少了分号(6) 函数的首部(即整个函数的第一行)以分号结束(7) if 语句后的表达式两侧没有圆括号,2 程序修改题(改错题),二级C应试辅导,5,2、逻辑错误(语义错误)以下是一些常见错误:(1) 循环语句、if语句、复合语句的花括号后多加了分号(2) 赋值号与等号混淆(3) 引号或括号不对称(只有一边)(4)

3、复合语句少了“”(5) 将数字“0”写成了字母“o”,或将字母“o”写成了数字“0”;将数字“1”写成了小写字母“l”,或将小写字母“l”写成了数字“1”;(6) 变量的初值不正确或未赋初值,二级C应试辅导,6,2、逻辑错误(语义错误)以下是一些常见错误:(7) 利用scanf()函数给变量赋值时忘记加地址运算符“ (10) switch语句中漏写break语句(11) 在引用数组元素时,将定义数组时的下标值作为数组最后一个元素的下标(12) 使用scanf()函数时,输入数值型数据的方式与要求不符,或输入字符格式与要求不一致(此类错误虽不方便出改错题,但对任何C程序设计的学习者来说却是必须注

4、意的地方),二级C应试辅导,7,3、算法错误 因不同的问题有不同的算法,同一个问题也有不同的算法,因此算法错误难于归纳和总结,也就是说算法错误的种类实在太多,要修改此类错误不仅要掌握常用的算法、审清题目,还且要善于对程序(段)的功能进行分析。,二级C应试辅导,8,二、程序修改题举例:例:下列给定程序的功能是:读入一个整数 k(2 = k =10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数 2310,则应输出: 2、3、5、7、11。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序如下:,二级C应试辅导

5、,9,#includeconio.h #includestdioh /*found*/ IsPrime( int n); int i,m;m 1;for( i2; i n;i+) /*found*/if !( n% i) m0; break;return( m);,二级C应试辅导,10,main( ) int j, k;clrscr( );printf(“nPlease enter an integer number between 2 and 10000:”);scanf(“%d”,k);printf(“ nnThe prime factor(s) of %d is(are):”,k);fo

6、r(j=2;j= k;j+)if(!( k%j)&(IsPrime(j) printf(“n %4d”,j);printf(”n”);,二级C应试辅导,11,改正后的IsPrime函数 #includeconio.h #includestdioh /*found*/ IsPrime( int n) int i,m;m 1;for( i2; i n;i+)/*found*/if (!( n% i)m0; break;return( m);,二级C应试辅导,12,例:下列给定程序中,函数fun的功能是:将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c 所指数组中,过长的字符放

7、在c的尾部,如:a=“abcdefg”,b=“1234”,则c=“a1b2c3d4efg“ 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序如下:,二级C应试辅导,13,#include #include #include /*found*/ fun( char a, char b, char c ) while ( *a ,二级C应试辅导,14,main() char s1100, s2100, t200;clrscr();printf(“nEnter s1 string : );scanf(“%s“,s1);printf(

8、“nEnter s2 string : );scanf(“%s“,s2);fun( s1, s2, t );printf(“nThe result is : %sn“, t ); ,二级C应试辅导,15,改正后的fun函数 #include #include #include /*found*/ void fun( char *a, char *b, char *c ) while ( *a ,二级C应试辅导,16,例:下列给定程序中,函数fun的功能是:根据形参m(9=m=2)的值,在m X m的二维数组中存放如下所示的数据,由main()函数输出 例如:若输入 2 若输入 4则输出 1 2

9、 则输出 1 2 3 4 2 4 2 4 6 8 3 6 9 12 4 8 12 16 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!,二级C应试辅导,17,#include #include #define M 10 int aMM=0; /*found*/ fun(int *a,int m) int j,k;for (j=0;jm;j+)for (k=0;km;k+) /*found*/ajk=k*j; ,二级C应试辅导,18,main() int i,j,n;clrscr();printf(“Enter n:“);scanf(

10、“%d“, ,二级C应试辅导,19,改正后的fun函数 #include #include #define M 10 int aMM=0; /*found*/ void fun(int aMM, int m) int j, k;for (j=0;jm;j+)for (k=0;km;k+) /*found*/ajk=(k+1)*(j+1); ,二级C应试辅导,20,例:下列给定程序中,函数fun的功能是:删除数列中值为x的元素,n中存放的是数列元素的个数 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!,二级C应试辅导,21,#incl

11、ude #define N 20 fun(int *a,int n,int x) int p=0,i;an=x;while(x!=ap)p=p+1; /*found*/if(P=n) return -1;else for(i=p;in;i+) /*found*/ai+1=ai;return n-1; ,二级C应试辅导,22,main() int wN=-3,0,1,5,7,99,10,15,30,90,x,n,i;n=10;printf(“The original data :n“);for(i=0;in;i+) printf(“%5d“,wi);printf(“nInput x (to de

12、lete):“);scanf(“%d“, ,二级C应试辅导,23,改正后的fun函数 #include #define N 20 fun(int *a,int n,int x) int p=0,i;an=x;while(x!=ap)p=p+1; /*found*/if(p=n) return -1;else for(i=p;in;i+) /*found*/ai=ai+1;return n-1; ,二级C应试辅导,24,4 程序填空题,说明 机试的程序填空题是在取消DOS的命令的操作题后,在2005年上半年开始推出的新题型, 满分是30分。 程序填空题主要考查考生阅读程序的能力,掌握常用的算法和

13、提高阅读程序的能力是解决此类问题的关键。,二级C应试辅导,25,程序填空题举例 例:下列给定程序中函数fun()的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下的BLANK1.C中 不得增行或删行,也不得更改程序的结构!,二级C应试辅导,26,试题程序: #include #include #include void fun (char *s, char *t ) int

14、 i,s1;s1= 1 ; for (i=0;is1;i+)ti=s 2 ; for (i=0;is1;i+)ts1+i=si;t 3 =0; main() char s100, t100;printf(“nPlease enter string s: “);scanf(“%s“,s);fun(s,t);printf (“The result is: %sn“,t); ,二级C应试辅导,27,试题程序(答案): #include #include #include void fun (char *s, char *t ) int i,s1;s1= strlen(s) ; for (i=0;is

15、1;i+)ti=ss1-1-i; for (i=0;is1;i+)ts1+i=si;t2*s1=0; main() char s100, t100;printf(“nPlease enter string s: “);scanf(“%s“,s);fun(s,t);printf (“The result is: %sn“,t); ,二级C应试辅导,28,例:函数fun()的功能是:实现B=A+A,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main()函数中输出。 例如,输入下面矩阵: 1 2 3 4 5 6 7 8 9 其转置矩阵为: 1 4 7 2 5 8 3 6 9 则程序输出: 2

16、 6 10 6 10 14 10 14 18 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中不得增行或删行,也不得更改程序的结构!,二级C应试辅导,29,试题程序: #include # include1 fun (int a33, int b33) int i,j;for(i=0;i3;i+)for(j=0;j3;j+)bij=aij+ 2 ; main() FILE *wf;int a33=1,2,3,4,5,6,7,8,9,t33;int i, j;fun (a, 3 );,二级C应试辅导,30,试题程序: fo

17、r(i=0; i3; i+)for(j=0;j3;j+)printf(“%7d“,tij);printf(“n“);wf=fopen(“out.dat“,“w“);for(i=0; i3; i+)for(j=0;j3;j+)fprintf(wf,“%3d“,tij);fclose(wf); ,二级C应试辅导,31,试题程序(答案): #include # includevoid fun (int a33, int b33) int i,j;for(i=0;i3;i+)for(j=0;j3;j+)bij=aij+ aji; main() FILE *wf;int a33=1,2,3,4,5,6,

18、7,8,9,t33;int i, j;fun (a, t );,二级C应试辅导,32,试题程序(答案) : for(i=0; i3; i+)for(j=0;j3;j+)printf(“%7d“,tij);printf(“n“);wf=fopen(“out.dat“,“w“);for(i=0; i3; i+)for(j=0;j3;j+)fprintf(wf,“%3d“,tij);fclose(wf); ,二级C应试辅导,33,例:下列给定程序中,函数fun()的功能是:将字符串p中所有字符复制到字符串b中,要求每复制3个字符之后插入一个空格。例如,在调用fun()函数之前给字符串a输入ABCDE

19、FGHIJK,调用函数之后,字符串b中的内容则为ABC DEF GHI JK。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下的BLANK1.C中 不得增行或删行,也不得更改程序的结构!,二级C应试辅导,34,试题程序: #include void fun(char *p,char *b) int i, k=0;while( 1 ) i=0;while( 2 ,二级C应试辅导,35,试题程序: main() char a80,b80;printf(“Enter a string: “); gets(a);printf(“The orig

20、inal string: “); puts(a);fun(a,b);printf(“nThe string after insert space: “); puts(b); printf(“nn “); ,二级C应试辅导,36,试题程序(答案) : #include void fun(char *p,char *b) int i, k=0;while( *p ) i=0;while( i3 ,二级C应试辅导,37,试题程序(答案) : main() char a80,b80;printf(“Enter a string: “); gets(a);printf(“The original str

21、ing: “); puts(a);fun(a,b);printf(“nThe string after insert space: “); puts(b); printf(“nn “); ,二级C应试辅导,38,例:下列给定程序中,函数fun()的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 源程序存放在考生文件夹下的BLANK1.C中 不得增行或删行,也不得更改程序的结构! 试题程序如下:,二级C应试辅导,39,1 long fun(int x, int y, l

22、ong *p) int i;long t=1;for(i=1; 2 ;i+)t=t*x;*p=t;3 ;return t; main() long t, r; int x, y;printf(“nInput x and y: “); scanf(“%ld%ld“, ,二级C应试辅导,40,试题程序(答案) :#include long fun(int x, int y, long *p) int i;long t=1;for(i=1; i=y ; i+)t=t*x;*p=t;t=t%1000 ;return t; main() long t, r; int x, y;printf(“nInpu

23、t x and y: “); scanf(“%ld%ld“, ,二级C应试辅导,41,常考的算法 连加与连乘(累加与累乘) 如:求1-1/2+1/4-1/6+1/n的值,直到最后一项的绝对值小于1e-3为止 注意之点: 连加的初值一般为0 对于连加,一般设3个变量:部分和s、项号i、i项的值t,关键是求t的值。 求通项t的值主要有两种方法:(1)依通项公式来得到;(2)后一项可由前一项得到 连乘与连加的处理方法类似,只不过把“”号变成“*”号,注意乘积的初值一般为1,3 编程题,二级C应试辅导,42,数的算法 求素数 求同构数(同构数是指该数出现在它的平方数的右边的数) 求水仙花数(水仙花数是

24、这样三位数:其各位数字的立方和等于该数本身) 求最大公约数和最小公倍数 排序算法 比较交换法 选择交换法 冒泡法,二级C应试辅导,43,求一维数组的最大值、最小值及其下标 注:常用选择交换法 与二维数组有关的算法 求二维数组行或列的和 求二维数组的最大值、最小值及下标 矩阵转置 与字符串有关的算法 从字符串中删除某个字符 求字符串的长度(不用strlen函数) 字符串的合并 比较字符串的大小(不用strcmp函数) 注意:在有关字符串的算法中,通常都涉及到字符串结束标记。一般情况下都是利用循环来对字符串中的全部字符或符合条件的字符进行处理,循环结束条件一般是遇到空字符0,二级C应试辅导,44,

25、编程题举例 例:编写函数void fun(int *a, int *n),它的功能是求出1到100之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。注意:部分源程序存在文件prog.c中(现给出如下)。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句,二级C应试辅导,45,文件PROG.C的内容如下: #include #include #define M 100 void fun(int *a , int *n) main() int aaM, n, k;clrscr( );fun(aa, ,二级C应试辅导,46,文件PROG.C

26、的内容如下: #include #include #define M 100 void fun(int *a , int *n) int i, b=0;for(i=1; i=M; i+)if (i%7=0| i%11=0)ab+=i;*n=b; main() ,二级C应试辅导,47,编程题举例 例:编写函数,该函数fun的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 例如:若程序执行时输入字符串为:turbo c and borland c+ 从键盘上输入字符n,则输出后变为:turbo c ad borlad c+,如果输入的字符在字符串不存在,则字符串照原样输出注意

27、:部分源程序给出如下。 请勿改动主函数和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句,二级C应试辅导,48,试题程序: #include #include int fun(char s , int c) main() static char str=“turbo c and borland c+”;char ch; printf(“原始字符串:%sn”,str); printf(“输入一个字符:”) scanf(“%c”, printf(“str=%sn”,str); ,二级C应试辅导,49,试题程序: #include #include int fun(char s , in

28、t c) int i=0; char *p;p=s;while(*p)if(*p!=c) si=*p; i+;p+; si=0; main() ,二级C应试辅导,50,编程题举例 例:m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将高于平均分的分数放在up所指的数组中。例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干

29、语句。,二级C应试辅导,51,试题程序: #include #include #include int fun(int score,int m, int up) main() int i, n, up9;int score9=24,35,88,76,90,54,59,66,96;clrscr();n=fun(score, 9, up);printf(“nup to the average score are: “);for(i=0;in;i+) printf(“%d “,upi); ,二级C应试辅导,52,试题程序: #include #include #include int fun(int

30、 score,int m, int up) int i,j=0;float av=0.0;for(i=0;iav) upj+=scorei;return j; main() ,二级C应试辅导,53,编程题举例 例:请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。,二级C应试辅导,54,试题程序:#include #include long fun

31、(char *p) main() char s6;long n;printf(“Enter a string:n“);gets(s);n=fun(s);printf(“%ldn“,n); ,二级C应试辅导,55,试题程序(答案): #include #include long fun(char *p) long n=0; int flag=1; if(*p=-) /* 负数时置flag为-1 */ p+;flag= -1; else if(*p=+) /* 正数时置flag为1 */p+; while(*p!=0) n=n*10+*p-0; /*将字符串转换成相应的整数*/ p+; retur

32、n n*flag; main() ,二级C应试辅导,56,编程题举例 例:请编写一个函数 void fun(char *tt, int pp),统计在tt字符串中a到 z26个字母各自出现的次数,并依次放在pp所指数组中。例如:当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。,二级C应试辅导,57,试题程序:#include #include void fu

33、n(char*tt,int pp) main( ) char aa1000;int bb26, k, n;clrscr();printf(“nPlease enter a char string : “) ; scanf(“%s“,aa);fun(aa,bb);for (k=0 ;k26 ; k+) printf(“%d “,bbk) ;printf(“n “); ,二级C应试辅导,58,试题程序(答案): #include #include void fun(char*tt, int pp) int i; for(i=0; i=a /* 将tt字符串中a到z26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去a后所得结果正好是它对应的下标 */ main( ) ,二级C应试辅导,59,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报