全国计算机等级考试上机课件.ppt_第1页
全国计算机等级考试上机课件.ppt_第2页
全国计算机等级考试上机课件.ppt_第3页
全国计算机等级考试上机课件.ppt_第4页
全国计算机等级考试上机课件.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全国计算机等级考试上机考试,重点难点及注意事项讲解,填空题的特点和注意事项,上机填空题一般包含三个空。 试题中用“/*found*/”来提示在下一行在有填空。 要填空的位置用 1 、 2 、 3 表示。 考生在考试时应删除标识 1 、 2 、 3 及下划线并填入相应的代码。 特别要注意的是:只能在要填空的位置上进行修改,不要添行、删行、合并或分解行,不要改动程序的顺序,不要自己另编程序。,填空题的特点和注意事项,填写参数时注意主调函数与被调函数类型一致。数组名作形参可以不指定大小。 如:P37(1)、 P51(1), 根据题目意思,再从函数中找出对应的变量填写表达式。如P16(1),例P16(

2、1)在主函数中从键盘上输入若干个数放入数组a中,用0结束输入但计入数组。下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。,#include /*found*/ void fun( 1 , int n) double count=0.0; double average=0.0; int i=0; for(i=0;in;i+) /*found*/ 2 ; /*found*/ average= 3 ; for(i=0;in;i+) if(aiaverage) if(i%5=0),prinf(“n”); printf(“%d”,ai); main() int a1000; int

3、i=0; do scanf(“%d”, ,int a,count+=ai,count/n,改错题的特点和注意事项,上机改错题通常有两个(或三个)错误需要修改。 试题中用“/*found*/”来提示在下一行(或下面第二行)有错。 错误的性质基本分为语法错误和逻辑错误两种,也有些试题要求把语句添加在下划线处。 特别要注意的是:只能在出错的行上进行修改,不要添行、删行、合并或分解行,不要改动程序的顺序,更不要自己另编程序。,改错题的特点和注意事项,求分数和的时候请注意整除问题。如P16(2) 循环的初值、条件、和终值问题。如P16(2) 注意关键词:如NULL与Null的区别,如P17(2);“0”

4、与0的区别,如P19(2)。 大小写问题:P与p,S与s, 如P26(2)、 P53(2)。 形态相似字符:小写字符l与数字1的区别如P24(2) ,字符o与数字0的区别P26(2) 。 符号问题:与/的区别,如P26(2); =与=的区别。如P46(2) 注意比较值时,指针(位置)与指针值(内容)的问题。如P19(2),如P17(2)。 注意理解题意,如:P69(2),改错题的特点和注意事项,参数或变量类型不一致的问题。如指针与普通变量。如P33(2)、 P56(2)、P59(2)、 P65(2) 参数及函数名前面的类型一般不可以省,如P67(2) 9. 两个数相互交换应该借助临时变量来实现

5、,而不能直接赋值。如x与y互换,借助t,则: t=x; x=y; y=t; 带参宏定义的时候展开的时候有括号就有括号,没括号不要画蛇添足。反过来,如果展开的时候必需要有括号,那个在定义的时候请加上括号。 如:P44(2),改错题的特点和注意事项,变量有没有定义及赋初值。如P47(2) 如s为指针变量,请注意s与*s的区别及用法。 如P49(2)、P55(1) 13. C语言的结束标志为封号(;),写在同一行上的一段代码,如果是尾于不同的语句应用封号隔开。 如int a, b, float c; 应改为:int a, b; float c; 如P51(2) 是否漏写了C语言的结束标志为封号(;)

6、, 如P53(2) 是否多写C语言的结束标志为封号(;), 如P60(2),例P16(2)在给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。y=1+1/(2*2)+1/(3*3)+1/(4*4)+1/(m*m)例如:若m中的值为5,则应输出1.463611。,#include double fun( int m) double y=1.0; int i=0; /*found*/ for(i=2;im;i+) /*found*/ y+=1/(i*i); return y; ,main() int n=5 printf(“nThe result is %lfn”,fun(n);

7、,i=m,y+=1.0/(i*i),例P44(2)在给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如:当x的值为9、 y的值为11、 z的值为15时,函数值为-3.50。,#include #include #include /*found*/ #define FU(m,n) (m/n) float fun( float a, float b, float c) float value; value=FU(a+b, a-b)+FU(c+b, c-b); /*found*/ return(Val

8、ue); ,main() float x, y, z, sum; printf(“Input x y z:”); scanf(“%f%f%f”, ,(m)/(n),value,编程题经典范例和注意事项,求和问题。 (1)(循环控制变量)计数器的范围。 如P20(1)、P16(2) (2)和变量的初值一般为0。如P20(1)、P16(2) (3)如是分数求和,请注意整除问题。如P16(2) (4)如是编程题,在确保前三个条件的情况下,按编程的思路,一步步完善。如P22(3) 2. 求乘积问题。 (1)积变量的初值一般为1。如P17(1) (2)乘积表达式作分母的时候,是一个整体,请加括号。如P2

9、0(1),例P22(3)编写函数fun,其功能是:根据以下公式计算s,将结果作为函数值返回,n通过形参伟入:s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)+1/(1+2+3+m),#include float fun( int n) ,main() int n; float s; printf(“nplease enter N:”); scanf(“%d”, ,float s=0.0; int k, t=0; for(k=1;k=n;k+) t+=k; s+=1.0/t; return s;,编程题经典范例和注意事项,3. 找最大值、最小值问题。 首先将首元素(行首、列首等

10、)的值赋给保存最大值(或最小值)的变量,如max(或min) 然后将max(或min)和后面的元素一一比较,如果出现更大的值(或更小的值),则将该值赋给max(或min),直到全部比完为止。 一维数组的首元素为a0,二维数组的首元素为a00,二维数组的行首元素为ai0,二维数组的行首元素为ai0,二维数组的行首元素为a0i。 如P17(1)所示。,例P17(1)在给定的程序中,函数fun的功能是:找出N*N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。,#include #define N 4 void fun( int (*a)N, int *b) int i, j;

11、for(i=0;iN;i+) /*found*/ bi= ; for(j=0;jN;j+) /*found*/ if(bi aji) bi=aji; ,main() int xNN=12,5,8,7,6,1,9,3, 1,2,3,4,2,8,4,3, yN, i, j; printf(“nThe matrix:n”); for(i=0;iN;i+) for(j=0;jN;j+) printf(“%4d”,xij); printf(“n”); /*found*/ fun( ); printf(“nThe result is”); for(i=0;iN;i+)printf(“%3d”,yi); p

12、rintf(“n”); ,a0i,(或=),x, y,编程题经典范例和注意事项,4. (1)上、下三角问题。(设为N维矩阵) i=0n-1(行标范围) j=0i (列标范围) i=0n-1(行标范围) j=in-1(列标范围) 如P19(3)。 (2)矩阵相关运算。 a.转置;aij与aji,赋值实现。 b.行或列互换及移位; c.加、减、乘、除及对角线求和; 如P19(3)、 P35(1)、 P44(1)、,例P35(1)在给定的程序中,函数fun的功能是:将a所指35矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。,#include #define

13、 M 3 #define N 5 void fun( int (*a)N, int k) int i, j,p,temp; /*found*/ for(p=1;p= ;p+) for(i=0;iM;i+) temp=ai0; /*found*/ for(j=0;j ;j+) aij=aij+1; /*found*/ aiN-1= ; ,main() int xNN=1,2,3,4,5,1,2,3,4,5, 1,2,3,4,5, i, j; printf(“The array before moving:n”); for(i=0;iM;i+) for(j=0;jN;j+) printf(“%3d

14、”,xij); printf(“n”); fun(x,2); printf(“The array after moving:n”); for(i=0;iM;i+) for(j=0;jN;j+) printf(“%3d”,xij); printf(“n”); ,k,N-1,temp,编程题经典范例和注意事项,5. 求素数问题。 (1)判断一个素是否为素数。 P69(1) (2)求某个范围内素数的个数、和、平方根和等。 如P19(1)、 P23(3)、P40(3) 6. 求最小公倍数、最大公约数问题。 最小公倍数求法:用从1开始的数去整除,若能同时整除,则此数为最小公倍数,否则继续加1再整除,直到

15、找到为止。 如P21(2) 最大公约数求法(碾转相除法):xy (1)将两数中的大数去除以小数,如果除不断,转入(2) (2)将小数变成被除数,它们的余数为除数,再相除。如果除不断,转入(2)。若能整除,转入(3)。 (3)则此除数为最大公约数。,编程题经典范例和注意事项,7. 字符串问题。 (1)串重新组合问题。 原串中去掉一部分组成成分(如数字、*号) 如P16(3)、P19(2)、P44(3)、 P72(3) 奇数或偶数重排,如P28(3) (2)在串中查找字符或字符串问题。如P33(2)、 P78(3) (3)前两个问题中涉及到的字符移动问题(前移、后移) 如前移P19(2)、P29(

16、2)、P69(3) (4)将串中的某些前移,某些后移,实质是先选出来,存在不同和数组中,再重新合并。如P29(1) 、 P29(3),编程题经典范例和注意事项,7. 字符串问题。 (5)字符型的数字转换为成其面值相同的整数,并进行相关运算。如5转换为数值5怎么转换? 5-0=5 或5-48=5 如P44(1) (6)字符大小写转换。如A转换为a怎么转换? A-a=-32 或a-32=A 如P48(1),例P44(3)规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是将字符串中的前导*号全部删除,中间和尾部的*号不删除。,#include void fun( char *a) ,m

17、ain() char s81; printf(“Enter a string:n”); gets(s); fun(s); printf(“The string after deleted:n”); put(s); ,int k=0, j=0, n=strlen(a); while(ak=*)k+; for( ;kn+1;k+) aj+=ak;,例P29(1)在给定的程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。,#include #include #include #include char *fun( char

18、 *s) int i, j, k, n; char *p, *t; n=strlen(s)+1 t=(char*)malloc(n*sizeof(char); p=(char*)malloc(n*sizeof(char); j=0,k=0; for(i=0;in;i+) if(isdigit)(si) /*found*/ p =si;j+;,else tk=si;k+; /*found*/ for(i=0;i ;i+)pj+i=ti; pj+k=0; /*found*/ return ; main() char s80; printf(“please input:”); scanf(“%s”,

19、s); printf(“the result is :%sn”,fun(s); ,j,k,p或(p),例P29(2)在给定的程序中,函数fun的功能是:从s所指字符串中删除所有小写字母c。,#include void fun( char *s) int i, j; for(i=j=0;si!=0;i+) if(si!=c) /*found*/ sj=si; /*found*/ si=0; ,main() char s80; printf(“enter a string:”); gets(s); printf(“The original string:”); put(s); fun(s); pr

20、intf(“The string after deleted:”); puts(s); printf(“n”); ,sj+=si,sj=0,这是前移问题,请注意赋值号左右两端的数组下标(或指针)都得往后移,同时注意字符串的末尾手动加一个结束标志0。,例P44(1)在给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。如输入32486和12345,输出得:44831。,/*found*/ return ; main() char sN, s2N; do printf(“Input string s1:”); ge

21、t(s1); while(strlen(s1)N); do printf(“Input string s2:”); get(s2); while(strlen(s2)N); printf(“The result is :%ldn”,fun(s1,s2); ,#include #include #include #define N 9 long ctod( char *s) long d=0; while(*s) if(isdigit(*s) /*found*/ d=d*10+*s- ; /*found*/ ; return d; long fun(char *a, char *b),0,s+,

22、ctod(a)+ctod(b),编程题经典范例和注意事项,8. 排序问题(假定有n个元素)。 (1)冒泡排序。 i (循环次数n-1次): 0-n-2 如果aiai+1 t=ai;ai=aj;aj=t; 则为升序 (2)选择排序。 i (循环次数n-1次): 0-n-2 j (被比较元素的下标):i+1 -n-1 如果aiaj t=ai;ai=aj;aj=t; 则为升序,编程题经典范例和注意事项,8. 排序问题(假定有n个元素)。 (3)插入排序。 插入排序:aj+1=aj 假定t为要插入的元素, 如果后退条件为tai,则为降序 如果后退条件tmid)则low=low+1 if( xmid)则

23、high=low-1 if (x=mid)则找到 未找到。,编程题经典范例和注意事项,9. 逆序、对调问题(假定有n个元素)。 (1)对称元素 0 n-1 1 n-2(n-1-1) 2 n-3(n-1-2) 3 n-4(n-1-3) i n-1-i 如P47(2) (2)数组重排问题 P70(3) P69(3) (3)对角线问题 P70(1),编程题经典范例和注意事项,10. 逻辑与(fopen(fp)与fclose(fp)对称,如P54(1),本 题相当一部分同学不会做,但其实就根据文档的内容可以 推出来,遇到类似的题目请不要慌。 16. 统计字符串中单词的个数,单词中间用若干个空格隔开。 如P55(3) 17. 递归法,#include #include struct student long sno; char name10; float score3; ; void fun( struct student a) struct studen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论