实验二教案.docx
- 文档编号:1722781
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:22
- 大小:22.02KB
实验二教案.docx
《实验二教案.docx》由会员分享,可在线阅读,更多相关《实验二教案.docx(22页珍藏版)》请在冰点文库上搜索。
实验二教案
第二课
教学内容:
数值处理类算法
教学目的:
掌握数值数据处理类算法的考题
教学内容:
一、数值数据处理类算法的考题特点
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 教案