实验一教案.docx
《实验一教案.docx》由会员分享,可在线阅读,更多相关《实验一教案.docx(22页珍藏版)》请在冰点文库上搜索。
实验一教案
第一课
教学内容:
介绍国家计算机二级C机试特点、序列处理类算法
教学目的:
熟悉国家计算机二级C机试的特点;掌握序列、公式函数处理类算法的考题
教学内容:
2013年3月开始实行全无纸化考试,题型及分值分布如下:
●选择题(40分,每小题1分)
◆公共基础知识(10分)
◆C语言程序设计(30分)
●程序填空题。
(18分,3处填空)
●程序修改题。
(18分,2~3处改错)
●程序设计题。
(24分,一个自定义函数体)
一、序列、公式函数处理类算法的考题特点
1.考题中的算法多以复杂的数学公式呈现,而且公式中多以分式的计算为主,考生要仔细观察公式中相邻的前后项,归纳出变化规律。
把公式中的每一项提出来其实就是一组规律的序列计算,形如求1~100的累加和。
2.在填空和改错题中容易考到的知识:
(1)函数类型:
一般结合调用语句、返回语句确定。
(2)变量赋初值:
分析表达式第一项以及其他相关变量的初值确定。
特别注意数据类型,如果是给实数赋初值一定要带小数点;或是初值直接就是第一项常量分式,如3/4,一定要写成3.0/4等,将其中一个数写成实数,这样才能得到实数结果,否则只取分子除分母后的整数结果。
(3)循环条件:
序列的处理一般用到循环,注意理解题意,有的是次数,有的是最后一项接近某个给定值。
(4)循环体:
结合多项式的变化规律,一般找到分子、分母的变化规律,计算出要累加的当前项,再累加;有的不需要直接计算当前项,可以利用前一项间接计算;注意数学表达式改写成C语言表达式的方法以及括号的使用;还要注意循环体内必须要有让循环条件趋于假的语句。
(5)返回结果:
一般通过return语句带回。
需要注意有的循环体直接计算出需要的结果,而有的还需要对循环体处理的结果再计算才是需要的结果。
(6)其他:
主要考查语法知识。
如关键字写法、控制结构语法、语句结束标志等。
3.编程题答题注意:
(1)首先定义相关变量:
确定类型、变量名并赋初值,如循环变量、累加器变量、分子变量、分母变量以及其他辅助计算的中间变量等。
(2)设计循环:
确定循环次数的多用for循环,不确定循环次数的多用while或do~while循环。
循环体则是根据序列变化规律把当前项计算出来,再累加,进入下一次循环,若条件为真再计算,再累加……
(3)带回返回值:
returns;或return(s);
三、课堂练习
第一套
1、程序填空题
给定程序中,函数fun的功能是计算如下公式:
例如:
若形参e的值为1e-3,函数的返回值为0.551690。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
doublefun(doublee)
{inti,k;doubles,t,x;
s=0;k=1;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++;
}
returns;
}
main()
{doublee=1e-3;
printf("\nTheresultis:
%f\n",fun(e));
}
2、程序改错题
给定程序MODI1.C中函数fun的功能是:
求出以下分数序列的前n项之和。
和值通过函数值返回到main函数。
例如,若n=5,则应输出:
8.391667。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
/************found************/
fun(intn)
{inta,b,c,k;doubles;
s=0.0;a=2;b=1;
for(k=1;k<=n;k++)
/************found************/
{s=s+(Double)a/b;
c=a;a=a+b;b=c;
}
returns;
}
main()
{intn=5;
printf("\nThevalueoffunctionis:
%lf\n",fun(n));
}
3、程序设计题
编写函数fun,其功能是:
根据以下公式计算s,并计算结果作为函数值返回,n通过形参传入。
例如:
若n的值为11时,函数的值为1.83333
请不要改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
floatfun(intn)
{}
main()
{intn;floats;
voidNONO();
printf("\nPleaseenterN:
");scanf("%d",&n);
s=fun(n);
printf("theresultis:
%f\n",s);
NONO();
}
第二套
1、程序填空题
下列给定程序中,函数fun的功能是:
计算如下公式前n项的和并作为函数值返回。
例如,当形参n的值为10时,函数返回值为9.612558。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序结构!
#include
doublefun(intn)
{inti;doubles,t;
/**********found**********/
s=【1】;
/**********found**********/
for(i=1;i<=【2】;i++)
{t=2.0*i;
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/【3】;
}
returns;
}
voidmain()
{intn=-1;
while(n<0)
{printf("Pleaseinput(n>0):
");scanf("%d",&n);}
printf("\nTheresultis:
%f\n",fun(n));
}
2、程序改错题
已知一个数列从0项开始的前3项:
0、0、1,以后的各项都是其相邻的前3项之和。
下列给定的程序中,函数fun的功能是:
计算并输出该数列前n项的平方根之和sum。
n的值通过形参传入。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
#include
/*************found**************/
fun(intn)
{doublesum,s0,s1,s2,s;intk;
sum=1.0;
if(n<=2)sum=0.0;
s0=0.0;s1=0.0;s2=1.0;
for(k=4;k<=n;k++)
{s=s0+s1+s2;
sum+=sqrt(s);
s0=s1;s1=s2;s2=s;
}
/*************found**************/
returnsum
}
voidmain()
{intn;
system("CLS");
printf("InputN=");
scanf("%d",&n);
printf("%f\n",fun(n));
}
3、程序设计题
请编写函数fun,它的功能是计算下列级数和,和的值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859。
注意:
请不要改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#include
#include
doublefun(doublex,intn)
{}
voidmain()
{FILE*wf;
system("CLS");
printf("%f",fun(0.3,10));
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(0.3,10));
fclose(wf);
/*****************************/
}
三、课后练习
1、程序填空题
函数fun的功能是:
计算
的前n项之和。
若x=2.5,n=15时,函数值为:
1.917914。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
doublefun(doublex,intn)
{doublef,t;inti;
/**********found**********/
f=【1】;
t=-1;
for(i=1;i{
/**********found**********/
t*=(【2】)*x/i;
/**********found**********/
f+=【3】;
}
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x,15);
printf("\nTheresultis:
\n");
printf("x=%-12.6fy=%-12.6f\n",x,y);
}
2、程序填空题
函数fun的功能是计算:
若x=2.5函数值为1.917915。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序结构!
#include
#include
doublefun(doublex)
{doublef,t;intn;
f=1.0+x;
t=【1】;
n=1;
do{
n++;
t*=(-1.0)*x/【2】;
f+=t;
}
while(【3】>=1e-6);
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x);
printf("\nTheresultis:
\n");
printf("x=%-12.6fy=%-12.6f\n",x,y);
}
3、程序填空题
下列给定程序中,函数fun的功能是计算下式
例如,若形参e的值为le-3,函数的返回值为2.985678.
请在下画线填入正确内容并将下画线删除,使程序得出正确结果。
注意:
不得增行或删行,也不得更改程序结构。
#include
doublefun(doublee)
{inti;doubles,x;
/**********found**********/
s=0;i=【1】;
x=1.0;
while(x>e){
/**********found**********/
【2】;
/**********found**********/
x=(2.0*i-1)/((【3】)*(2.0*i));
s=s+x;
}
returns;
}
main()
{doublee=1e-3;
printf("\nTheresultis:
%f\n",fun(e));
}
4、程序填空题
函数fun的功能是:
计算
的前n项。
若x=2.5,函数值为12.182340。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序结构!
#include
doublefun(doublex,intn)
{doublef,t;inti;
f=1.0;
/**********found**********/
t=【1】;
/**********found**********/
for(i=【2】;i{
/**********found**********/
t*=x/【3】;
f+=t;
}
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x,12);
printf("\nTheresultis:
\n");
printf("x=%-12.6fy=%-12.6f\n",x,y);
}
5、程序填空题
函数fun的功能是:
计算
直到
,若x=2.5,函数值为12.182494。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序结构!
#include
#include
doublefun(doublex)
{doublef,t;intn;
/**********found**********/
f=1.0+【1】;
t=x;
n=1;
do{
n++;
/**********found**********/
t*=x/【2】;
/**********found**********/
f+=【3】;
}while(fabs(t)>=1e-6);
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x);
printf("\nTheresultis:
\n");
printf("x=%-12.6fy=%-12.6f\n",x,y);
}
6、程序改错题
给定程序MODI1.C中函数fun的功能是:
根据整型形参m,计算如下公式的值。
,例如,若m=2000,则应输出:
0.000160。
请改正程序中的语法错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
fun(intm)
{doubley=0,d;inti;
/************found************/
for(i=100,i<=m,i+=100)
{d=(double)i*(double)i;
y+=1.0/d;
}
return(y);
}
main()
{intn=2000;
printf("\nTheresultis%lf\n",fun(n));
}
7、程序改错题
下列给定程序中函数fun的功能是:
根据以下公式求
的值,并作为函数值返回。
例如,当给指定精度的变量esp输入0.00005时,应输出Pi=3.140578。
请改正程序中的错误,使它能得出正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序结构!
#include
#include
doublefun(doubleeps)
{doubles,t;intn=1;
s=0.0;
/************found************/
t=0;
while(t>eps)
{s+=t;
t=t*n/(2*n+1);
n++;
}
/************found************/
return(s);
}
main()
{doublex;
printf("\nPleaseenteraprecision:
");scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
8、程序改错题
下列给定程序中函数fun的功能是:
用下面的公式
的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。
例如,程序运行后,输入0.0001,则程序输出3.1414。
请改正程序中的错误,使它能得出正确结果。
注意:
不得增行或删行,也不得更改程序结构!
#include
#include
floatfun(floatnum)
{ints;
floatn,t,pi;
t=1;pi=0;n=1;s=1;
/**************found**************/
while(t>=num)
{pi=pi+t;
n=n+2;
s=-s;
/**************found**************/
t=s%n;
}
pi=pi*4;
returnpi;
}
main()
{floatn1,n2;
printf("Enterafloatnumber:
");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
9、程序改错题
下列给定程序中fun函数的功能是:
求表达式s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)
例如,a=3,n=6则以上表达式为:
s=333333-33333-3333-333-33-3,其值是296298。
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能得出正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序结构!
#include
longfun(inta,intn)
{intj;
/**************found**************/
longs=0,t=1;
for(j=0;jt=t*10+a;
s=t;
for(j=1;j/**************found**************/
{t=t%10;
s=s-t;
}
return(s);
}
main()
{inta,n;
printf("\nPleaseenteraandn:
");
scanf("%d%d",&a,&n);
printf("Thevalueoffunctionis:
%ld\n",fun(a,n));
}
10、程序改错题
下列给定程序中函数fun的功能是:
计算并输出下列级数的请N项和
直到
的值大于q为止,q的值通过形参传入。
例如,若q的值为50.0,则函数值应为49.394948。
请改正程序中的错误,使它能得出正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序结构!
#include
#include
doublefun(doubleq)
{intn;doubles,t;
n=2;
s=2.0;
while(s<=q)
{t=s;
/************found************/
s=s+(n+1)/n;
n++;
}
printf("n=%d\n",n);
/************found************/
returns;
}
main()
{printf("%f\n",fun(50));}
11、程序设计题
编写函数fun,其功能是:
根据以下公式求
的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
程序运行后,若输入精度0.0005,则程序应输出3.14…。
注意:
请不要改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
doublefun(doubleeps)
{}
main()
{doublex;voidNONO();
printf("Inputeps:
");
scanf("%lf",&x);printf("\neps=%lf,PI=%lf\n",x,fun(x));
NONO();
}
12、程序设计题
编写函数fun,其功能是:
求Fibonacci数列中大于t的最小的数,结果由函数返回。
Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
例如,当t=1000,函数值为1597。
注意:
请不要改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
intfun(intt)
{}
main()/*主函数*/
{intn;
n=1000;
prin