实验二教案.docx

上传人:b****5 文档编号:12376227 上传时间:2023-04-18 格式:DOCX 页数:22 大小:22.02KB
下载 相关 举报
实验二教案.docx_第1页
第1页 / 共22页
实验二教案.docx_第2页
第2页 / 共22页
实验二教案.docx_第3页
第3页 / 共22页
实验二教案.docx_第4页
第4页 / 共22页
实验二教案.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

实验二教案.docx

《实验二教案.docx》由会员分享,可在线阅读,更多相关《实验二教案.docx(22页珍藏版)》请在冰豆网上搜索。

实验二教案.docx

实验二教案

第二课

教学内容:

数值处理类算法

教学目的:

掌握数值数据处理类算法的考题

教学内容:

一、数值数据处理类算法的考题特点

1.考题中的算法涉及对一个整数分解和重组、求最大公约数、求阶乘、求素数、在指定范围内找符合给定条件的数、取一个整数的某些指定位等等。

此类算法仍然结合循环、函数考查考生的综合应用能力。

2.在填空和改错题中容易考到的知识:

(1)分解整数的各位数字。

一般用循环结合求余、整除等运算实现。

如n%10表示取出n的个位数,n/10%10表示取n的十位,n/100%10表示取n的百位,n/10表示将n的个位舍弃。

(2)判断数字的奇偶性:

n%2==0或n%2!

=1成立表示n是偶数,否则是奇数。

(3)循环条件:

结合算法理解,一般是关系表达式或逻辑表达式。

(4)运算的时候填空是10*x还是x*10?

正确答案是10*x

(5)返回结果:

如果要求结果通过形参指针带回,则在函数最后需要将计算出的结果存入形参指针指向的实参变量中。

(6)其他:

主要考查语法知识。

如关键字写法、控制结构语法、语句结束标志等。

3.编程题答题注意:

(1)涉及将两个整数分解、重组的算法,函数体内仅一条语句即可。

(2)其他的算法请考生结合实际应用多练习以达掌握的目的。

二、课堂练习

第一套

1、程序填空题

给定程序中,函数fun的功能是:

将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。

例如,输入一个数:

27638496,新的数:

为739。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

voidfun(unsignedlong*n)

{unsignedlongx=0,i;intt;

i=1;

while(*n)

{t=*n%【1】;

if(t%2!

=【2】

{x=x+t*i;i=i*10;}

n=*n/10;

}

*n=【3】;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");

scanf("%ld",&n);}

fun(&n);

printf("\nTheresultis:

%ld\n",n);

}

2、程序改错题

下列给定程序中,函数fun的功能是:

找出100到n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。

请改正函数fun中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include

#defineN100

intfun(int*s,intn)

{intI,j,k,a,b,c;

j=0;

for(I=100;I

{

/*************found**************/

k=n;

a=k%10;

k/=10;

/*************found**************/

b=k/10;

c=k/10;

if(a==b&&a==c)

s[j++]=I;

}

returnj;

}

voidmain()

{inta[N],n,num=0,i;

do

{printf("\nEntern(<=1000):

");

scanf("%d",&n);

}while(n>1000);

num=fun(a,n);

printf("\n\nTheresult:

\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n\n");

}

3、程序设计题

请编写函数fun,函数的功能是:

将大于形参m且紧靠m的k个素数存入xx所指的数组中。

例如,若输入17,5,则应输出:

19,23,29,31,37。

函数fun中给出的语句仅供参考。

注意:

部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

voidfun(intm,intk,intxx[])

{}

main()

{intm,n,zz[1000];

printf("\nPleaseentertwointegers:

");

scanf("%d%d",&m,&n);

fun(m,n,zz);

for(m=0;m

printf("%d",zz[m]);

printf("\n");

}

第二套

1、程序填空题

给定程序中,函数fun的功能是:

将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。

例如,从主函数输入一个整数:

27638496,函数返回值为:

26846。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

unsignedlongfun(unsignedlongn)

{unsignedlongx=0,s,i;intt;

s=n;

/**********found**********/

i=【1】;

/**********found**********/

while(【2】)

{t=s%10;

if(t%2==0)

/**********found**********/

{x=x+t*i;i=【3】;}

s=s/10;

}

returnx;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");

scanf("%ld",&n);

}

printf("\nTheresultis:

%ld\n",fun(n));

}

2、程序改错题

给定程序MODI1.C中函数fun的功能是:

计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。

例如,7的5次方是16807,其低3位数的和值是15。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#include

intfun(intn,int*value)

{intd,s,i;

/**************found**************/

d=0;s=0;

for(i=1;i<=5;i++)d=d*n;

*value=d;

for(i=1;i<=3;i++)

{s=s+d%10;

/**************found**************/

d=d\10;

}

returns;

}

main()

{intn,sum,v;

do

{printf("\nEntern(2

");scanf("%d",&n);}

while(n<=2||n>=8);

sum=fun(n,&v);

printf("\n\nTheresult:

\nvalue=%dsum=%d\n\n",v,sum);

}

3、程序设计题

函数fun的功能是:

将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

例如,当a=45,b=12时,调用该函数后,c=1524。

注意:

部分源程序存在文件PROG1.C中。

数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

voidfun(inta,intb,long*c)

{}

main()

{inta,b;longc;

printf("Inputa,b:

");

scanf("%d,%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:

%ld\n",c);

}

三、课后练习

1、程序填空题

给定程序中,函数fun的功能是:

将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

例如,输入一个整数:

27638496,函数返回值为:

64862。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

unsignedlongfun(unsignedlongn)

{unsignedlongx=0;intt;

while(n)

{t=n%10;

/**********found**********/

if(t%2==【1】)

/**********found**********/

x=【2】+t;

/**********found**********/

n=【3】;

}

returnx;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");

scanf("%ld",&n);

}

printf("\nTheresultis:

%ld\n",fun(n));

}

2、程序填空题

给定程序中,函数fun的功能是:

找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。

例如,当x值为5时,100~999之间各位上数字之和为5的整数有:

104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。

共有15个。

当x值为27时,各位数字之和为27的整数是:

999。

只有1个。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

fun(intx)

{intn,s1,s2,s3,t;

n=0;

t=100;

/**********found**********/

while(t<=【1】)

/**********found**********/

{s1=t%10;s2=(【2】)%10;s3=t/100;

/**********found**********/

if(s1+s2+s3==【3】)

{printf("%d",t);

n++;

}

t++;

}

returnn;

}

main()

{intx=-1;

while(x<0)

{printf("Pleaseinput(x>0):

");scanf("%d",&x);}

printf("\nTheresultis:

%d\n",fun(x));

}

3、程序填空题

函数fun的功能是:

统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

intfun(intn)

{inti,j,count=0;

printf("\nTheprimenumberbetween3to%d\n",n);

for(i=3;i<=n;i++)

/**********found**********/

{for(【1】;j

/**********found**********/

if(【2】%j==0)

break;

/**********found**********/

if(【3】>=i)

{count++;

printf(count%15?

"%5d":

"\n%5d",i);}

}

returncount;

}

main()

{intn=20,r;

r=fun(n);

printf("\nThenumberofprimeis:

%d\n",r);

}

4、程序填空题

函数fun的功能是:

统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。

例如:

当n=123114350时,结果应该为:

c1=3c2=1c3=2。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

intc1,c2,c3;

voidfun(longn)

{c1=c2=c3=0;

while(n)

/**********found**********/

{switch(【1】)

/**********found**********/

{case1:

c1++;【2】;

/**********found**********/

case2:

c2++;【3】;

case3:

c3++;

}

n/=10;

}

}

main()

{longn=123114350L;

fun(n);

printf("\nTheresult:

\n");

printf("n=%ldc1=%dc2=%dc3=%d\n",n,c1,c2,c3);

}

5、程序改错题

给定程序MODI1.C中函数fun的功能是:

从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如,当s中的数为:

7654321时,t中的数为:

642。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

/************found************/

voidfun(longs,longt)

{longsl=10;

s/=10;

*t=s%10;

/************found************/

while(s<0)

{s=s/100;

*t=s%10*sl+*t;

sl=sl*10;

}

}

main()

{longs,t;

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

6、程序改错题

给定程序MODI1.C中函数fun的功能是:

判断一个整数是否是素数,若是返回1,否则返回0。

在main()函数中,若fun返回1输出YES,若fun返回0输出NO!

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

intfun(intm)

{intk=2;

while(k<=m&&(m%k))

/************found************/

k++

/************found************/

if(m=k)

return1;

elsereturn0;

}

main()

{intn;

printf("\nPleaseentern:

");scanf("%d",&n);

if(fun(n))printf("YES\n");

elseprintf("NO!

\n");

}

7、程序改错题

下列给定程序中函数fun的功能是:

计算n!

例如,给n输入5,则输出120.000000。

请改正程序中的错误,使程序能输出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include

#include

doublefun(intn)

{doubleresult=1.0;

/*************found**************/

ifn==0

return1.0;

while(n>1&&n<170)

/*************found**************/

result=n--;

returnresult;

}

voidmain()

{

intn;

printf("InputN:

");

scanf("%d",&n);

printf("\n\n%d!

=%lf\n",n,fun(n));

}

8、程序改错题

给定程序MODI1.C的功能是:

读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数:

2310,则应输出:

2、3、5、7、11。

请改正程序中的语法错误,使程序能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

/************found************/

IsPrime(intn);

{inti,m;

m=1;

for(i=2;i

/************found************/

if!

(n%i)

{m=0;break;}

return(m);

}

main()

{intj,k;

printf("Pleaseenteranintegernumberbetween2and10000:

");

scanf("%d",&k);

printf("\n\nTheprimefactor(s)of%dis(are):

",k);

for(j=2;j<=k;j++)

if((!

(k%j))&&(IsPrime(j)))

printf("\n%4d",j);

printf("\n");

}

9、程序改错题

给定程序MODI1.C中函数fun的功能是:

求整数x的y次方的低3位值。

例如,整数5的6次方为15625,此值的低3位值为625。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

longfun(intx,inty,long*p)

{inti;

longt=1;

/**************found**************/

for(i=1;i

t=t*x;

*p=t;

/**************found**************/

t=t/1000;

returnt;

}

main()

{longt,r;intx,y;

printf("\nInputxandy:

");scanf("%ld%ld",&x,&y);

t=fun(x,y,&r);

printf("\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t);

}

10、程序改错题

给定程序MODI1.C中函数fun的功能是:

统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。

例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

intfun(unsignedn,int*zero)

{intcount=0,max=0,t;

do

{t=n%10;

/**************found**************/

if(t=0)count++;

if(max

n=n/10;

}while(n);

/**************fo

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1