二级培训真题分析.ppt
《二级培训真题分析.ppt》由会员分享,可在线阅读,更多相关《二级培训真题分析.ppt(137页珍藏版)》请在三一办公上搜索。
1、主讲:邹显春,E-Mail:,C语言基础部分,准确完成二级上机题的方法与策略:,1.快速读懂题的内涵3分钟之内,2.快速阅读给定的程序内涵-5-10分钟,4.分析所做工作的算法10-15分钟之内,3.明确自己要做的工作-1分钟之内,5.编码、编辑、编译、连接、执行、调试-5-10分钟,题型与答题方法,1.程序填空-主要考查程序阅读理解能力.-快速读懂给定程序,明确要填空的内容(2-3处语句或表达式),根据题意进行填充,2.程序改错-主要考查程序调试能力.-一般修改2-3处-错误类型语法错误-利用编译工具检查是否是语法错误.,语法错误主要包括:语句或变量定义的分号漏写或错写关键字错写语句格式错用
2、表达式错写函数类型与函数返回值不一致函数参数类型错误运算符错写,逻辑错误(语义错误)-根据题意检查程序的逻辑错误-寻找逻辑错误的一般步骤:先试题,看清题目功能要求通读程序,看懂程序中算法实现方法细看程序,发现错误点-错误类型:变量初值错误;循环次数不对;下标越界;运算类型不匹配,3.编写程序主要考查编写程序能力.-快速读懂给定程序,明确要实现的功能,再编写代码.具体:审题理解函数功能和实现方法编写函数调试,以未来教育练习软件为蓝本,以知识类型为线索分解,一、历年试题剖析,一、数的转换与计算,1、数的按位分离及合并例:函数fun的功能是:将两个两位数的整数a、b合并形成一个整数放在c中。合并的方
3、式是:将a的十位和个位数依次放在c的千位和十位上,b的十位和个位数依次放在c的个位和百位上。若a=45,b=12,则c=4251。函数原型:void fun(int a,int b,long*c)分析:取出a,b的十位和个位分别放入a1,a2,b1,b2中,那么c就应该是a1*1000+a2*10+b1+b2*100。a1=a/10 a2=a%10 b1=a/10 b2=b%10,第24套 程序设计,#include void fun(int a,int b,long*c)main()int a,b;long c;void NONO();printf(Input a,b:);scanf(%d%
4、d,void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;int i,a,b;long c;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i 10;i+)fscanf(rf,%d,%d,第20套 程序设计,#include void fun(int a,int b,long*c)main()int a,b;long c;void NONO();printf(Input a,b:);scanf(%d,%d,void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件
5、。*/FILE*rf,*wf;int i,a,b;long c;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i 10;i+)fscanf(rf,%d,%d,第17套 程序设计,#include void fun(int a,int b,long*c)main()int a,b;long c;void NONO();printf(Input a,b:);scanf(%d%d,void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;int i,a,b;long c;rf=fopen(in.d
6、at,r);wf=fopen(out.dat,w);for(i=0;i 10;i+)fscanf(rf,%d,%d,完整代码见备注,第17套 程序改错,#include void fun(long s,long*t)int d;long sl=1;*t=0;while(s 0)d=s%10;/*found*/if(d%2=0)*t=d*sl+*t;sl*=10;/*found*/s=10;main()long s,t;printf(nPlease enter s:);scanf(%ld,提供程序,#include void fun(long s,long*t)int d;long sl=1;*
7、t=0;while(s 0)d=s%10;/*found*/if(d%2=0)*t=d*sl+*t;sl*=10;/*found*/s/=10;main()long s,t;printf(nPlease enter s:);scanf(%ld,修改后程序,完整代码见备注,第20套 程序改错,#include/*found*/void fun(long s,long t)long sl=10;*t=s%10;while(s 0)s=s/100;*t=s%10*sl+*t;/*found*/sl=sl*100;main()long s,t;printf(nPlease enter s:);scan
8、f(%ld,提供程序,#include/*found*/void fun(long s,long*t)long sl=10;*t=s%10;while(s 0)s=s/100;*t=s%10*sl+*t;/*found*/sl=sl*10;main()long s,t;printf(nPlease enter s:);scanf(%ld,提供程序,一、数的转换与计算,2、素数例:函数fun的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。函数原型:void fun(int m,int*k,int xx)分析:素数的判断(只能被1和其本身整除的数)判断n的方法:
9、用2n-1 或sqrt(n)中n/2逐个去除n,只要有 一个数被整除了,n就不是素数。for(i=2;i=n-1;i+)if(n%i=0)break;将非素数存入数组:判断该数是否为素数,不是素数存入数组 中,完成后数组下标加1。,完整代码见备注,第18套 程序改错,#include#include int fun(int high)int sum=0,n=0,j,yes;/*found*/while(high=2),提供程序,#include#include int fun(int high)int sum=0,n=0,j,yes;/*found*/while(high=2),提供程序,一、
10、数的转换与计算,3、整除及奇偶判断问题例:函数fun的功能是:求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根,并作为函数值返回。函数原型:double fun(int n)分析:判断能同时被5与11整除的数 i%5=0&i%11=0 求和s s=s+i(i满足上面的条件)求平方根sqrt函数注意:函数类型为double 若求所有偶数之和?,第3套 程序设计,#include void fun(int*a,int*n)main()int aa1000,n,k;void NONO();fun(aa,void NONO()/*本函数用于打开文件,输入测试数据,调用fun函数,输出数
11、据,关闭文件。*/int aa1000,n,k;FILE*fp;fp=fopen(out.dat,w);fun(aa,完整代码见备注,第13套 程序改错,#include long fun(int a,int n)int j;/*found*/long s=0,t=1;for(j=0;j n;j+)t=t*10+a;s=t;for(j=1;j n;j+)/*found*/t=t%10;s=s-t;return(s);main()int a,n;printf(nPlease enter a and n:);scanf(%d%d,提供程序,#include long fun(int a,int n
12、)int j;/*found*/long s=0,t=0;for(j=0;j n;j+)t=t*10+a;s=t;for(j=1;j n;j+)/*found*/t=t/10;s=s-t;return(s);main()int a,n;printf(nPlease enter a and n:);scanf(%d%d,提供程序,完整代码见备注,第14套 程序改错,#include int fun(int*b)int k,a1,a2,i=0;for(k=10;k=55;k+)/*found*/a2=k/1O;a1=k-a2*10;if(k%3=0,提供程序,#include int fun(in
13、t*b)int k,a1,a2,i=0;for(k=10;k=55;k+)/*found*/a2=k/10;a1=k-a2*10;if(k%3=0,修改后程序,一、数的转换与计算,4、四舍五入问题例:函数fun的功能是:对变量h中的值保留两位小数,并对第3位进行四舍五入(规定h中的值为正数)。函数原型:double fun(double h)分析:1)h=h*1000 2)long t;t=(h+5)/10 舍弃个位 3)(double)h/100.0 问:保留n位怎样做?,完整代码见备注,第4套 程序改错,一、数的转换与计算,5、最大公约数、最小公倍数,#include int fun(in
14、t a,int b)int r,t;if(ab)/*found*/t=a;b=a;a=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;/*found*/return(a);main()int num1,num2,a;printf(Input num1 num2:);scanf(%d%d,提供程序,#include int fun(int a,int b)int r,t;if(ab)/*found*/t=a;a=b;b=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;/*found*/return(b);main()int num1,num2,a;printf
15、(Input num1 num2:);scanf(%d%d,修改后程序,完整代码见备注,第22套 程序改错,#include/*found*/fun(int x,y,z)int j,t,n,m;j=1;t=j%x;m=j%y;n=j%z;while(t!=0|m!=0|n!=0)j=j+1;t=j%x;m=j%y;n=j%z;/*found*/return i;main()int x1,x2,x3,j;printf(Input x1 x2 x3:);scanf(%d%d%d,提供程序,#include/*found*/fun(int x,int y,int z)int j,t,n,m;j=1;
16、t=j%x;m=j%y;n=j%z;while(t!=0|m!=0|n!=0)j=j+1;t=j%x;m=j%y;n=j%z;/*found*/return j;main()int x1,x2,x3,j;printf(Input x1 x2 x3:);scanf(%d%d%d,修改后程序,一、数的转换与计算,6、求方程的根,第18套 程序设计,#include#include double fun()main()void NONO();printf(Root=%fn,fun();NONO();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*w
17、f;wf=fopen(out.dat,w);fprintf(wf,%fn,fun();fclose(wf);,完整代码见备注,第3套 程序改错,#include int fun(int*x,int y)int t;/*found*/t=x;x=y;/*found*/return(y);main()int a=3,b=8;printf(%d%dn,a,b);b=fun(,提供程序,#include int fun(int*x,int y)int t;/*found*/t=*x;*x=y;/*found*/return(t);main()int a=3,b=8;printf(%d%dn,a,b);
18、b=fun(,修改后程序,完整代码见备注,第5套 程序填空,#include unsigned long fun(unsigned long n)unsigned long x=0;int t;while(n)t=n%10;/*found*/if(t%2=_1_)/*found*/x=_2_+t;/*found*/n=_3_;return x;main()unsigned long n=-1;while(n99999999|n0)printf(Please input(0n100000000):);scanf(%ld,提供程序,#include unsigned long fun(unsign
19、ed long n)unsigned long x=0;int t;while(n)t=n%10;/*found*/if(t%2=0)/*found*/x=10*x+t;/*found*/n=n/10;return x;main()unsigned long n=-1;while(n99999999|n0)printf(Please input(0n100000000):);scanf(%ld,填空后程序,完整代码见备注,第5套 程序改错,#include void fun(long s,long*t)int d;long sl=1;/*found*/t=0;while(s 0)d=s%10;
20、/*found*/if(d%2=0)*t=d*sl+*t;sl*=10;s/=10;main()long s,t;printf(nPlease enter s:);scanf(%ld,提供程序,#include void fun(long s,long*t)int d;long sl=1;/*found*/*t=0;while(s 0)d=s%10;/*found*/if(d%2!=0)*t=d*sl+*t;sl*=10;s/=10;main()long s,t;printf(nPlease enter s:);scanf(%ld,修改后程序,二、数列与级数求和,1、数列例:函数fun的功能是
21、:求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2)函数原型:int fun(int t)分析:由数列定义求得第n项,判断第n项的值是否大于t,大于t所得结果为n-1项的值,小于t则继续求n+1项。,完整代码见备注,第6套 程序改错,#include long fun(int g)/*found*/switch(g);case 0:return 0;/*found*/case 1;case 2:return 1;return(fun(g-1)+fun(g-2);main()
22、long fib;int n;printf(Input n:);scanf(%d,提供程序,#include long fun(int g)/*found*/switch(g)case 0:return 0;/*found*/case 1:case 2:return 1;return(fun(g-1)+fun(g-2);main()long fib;int n;printf(Input n:);scanf(%d,修改后程序,二、数列与级数求和,2、级数求和例:函数fun的功能是:根据形参计算如下公式的值y=1-1/(2 2)+1/(3 3)-1/(4 4)+(-1)(m+1)/(m m)函数原
23、型:double fun(int m)一般解法:分析公式特点将其分为几个小的部分,对各个小部分分别求解后进行组合。若每一项前的符号是交替变化的,可用下列方式实现:int j=1;for(;)j=-1*j;注意:变量赋初值,除法运算中必需有实型数据出现。,完整代码见备注,第2套 程序填空,#include double fun(int n)int i;double s,t;/*found*/s=_1_;/*found*/for(i=1;i0):);scanf(%d,提供程序,#include double fun(int n)int i;double s,t;/*found*/s=0;/*fou
24、nd*/for(i=1;i0):);scanf(%d,填空后程序,第31套程序填空,#include double fun(int n)int i,k;double s,t;s=0;/*found*/k=_1_;for(i=1;i0):);scanf(%d,提供程序,#include double fun(int n)int i,k;double s,t;s=0;/*found*/k=1;for(i=1;i0):);scanf(%d,填空后程序,完整代码见备注,第1套 程序填空,#include double fun(double e)int i,k;double s,t,x;s=0;k=1;
25、i=2;/*found*/x=_1_/4;/*found*/while(x _2_ e)s=s+k*x;k=k*(-1);t=2*i;/*found*/x=_3_/(t*t);i+;return s;,main()double e=1e-3;printf(nThe result is:%fn,fun(e);,提供程序,#include double fun(double e)int i,k;double s,t,x;s=0;k=1;i=2;/*found*/x=3.0/4;/原因:考察/的内涵/*found*/while(xe)s=s+k*x;k=k*(-1);t=2*i;/*found*/x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 培训 分析
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5081108.html