二级培训真题分析0311

上传人:m**** 文档编号:570973715 上传时间:2024-08-07 格式:PPT 页数:137 大小:4.33MB
返回 下载 相关 举报
二级培训真题分析0311_第1页
第1页 / 共137页
二级培训真题分析0311_第2页
第2页 / 共137页
二级培训真题分析0311_第3页
第3页 / 共137页
二级培训真题分析0311_第4页
第4页 / 共137页
二级培训真题分析0311_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《二级培训真题分析0311》由会员分享,可在线阅读,更多相关《二级培训真题分析0311(137页珍藏版)》请在金锄头文库上搜索。

1、主讲:邹显春主讲:邹显春E-Mail:C C语言基础部分语言基础部分准确完成二级上机题的方法与策略:1.快速读懂题的内涵3分钟之内2.快速阅读给定的程序内涵-5-10分钟4.分析所做工作的算法10-15分钟之内3.明确自己要做的工作-1分钟之内5.编码、编辑、编译、连接、执行、调试-5-10分钟题型与答题方法1.程序填空-主要考查程序阅读理解能力.-快速读懂给定程序,明确要填空的内容(2-3处语句或表达式),根据题意进行填充2.程序改错-主要考查程序调试能力.-一般修改2-3处-错误类型语法错误-利用编译工具检查是否是语法错误. 语法错误主要包括:语句或变量定义的分号漏写或错写关键字错写语句格

2、式错用表达式错写函数类型与函数返回值不一致函数参数类型错误运算符错写逻辑错误(语义错误)-根据题意检查程序的逻辑错误-寻找逻辑错误的一般步骤:先试题,看清题目功能要求通读程序,看懂程序中算法实现方法细看程序,发现错误点-错误类型:变量初值错误;循环次数不对;下标越界;运算类型不匹配3.编写程序主要考查编写程序能力.-快速读懂给定程序,明确要实现的功能,再编写代码.具体:审题理解函数功能和实现方法编写函数调试以未来教育练习软件为蓝本以知识类型为线索分解一、历年试题剖析序号 知识点覆盖抽中率1数的转换与计算数的转换与计算-数的按位分离及合并数的按位分离及合并; 素数素数;整除及奇偶判断问整除及奇偶

3、判断问题题;四舍五入问题四舍五入问题24%2数列与级数求和数列与级数求和-级数求和级数求和;阶乘阶乘10%序号 知识点覆盖抽中率3数位分解筛选或重组后统计、排序求平均25%4初等数学素数、统计个数、平均、方差、整除问题19%序号 知识点覆盖抽中率5遍历统计、移动或倒排3%6选票问题4%7排序相邻大小筛选统计后、后3位、数组排序8%8其他经典问题8%一、数的转换与计算一、数的转换与计算1、数的按位分离及合并、数的按位分离及合并例:函数例:函数fun的功能是:将两个两位数的整数的功能是:将两个两位数的整数a、b合并形成一合并形成一个整数放在个整数放在c中。合并的方式是:将中。合并的方式是:将a的十

4、位和个位数依次放在的十位和个位数依次放在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, lon

5、g *c)main() int a,b; long c; void NONO (); printf(Input a, b:); scanf(%d%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c); NONO();void fun(int a, int b, long *c)*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;填空部分内容void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long

6、c ; rf = fopen(in.dat,r) ; wf = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %d,%d, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ;第20套 程序设计#include void fun(int a, int b, long *c)main() int a,b; long c; void NONO ( ); printf(Input a, b:); scanf(%

7、d,%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c); NONO();void fun(int a, int b, long *c)*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000; 填空部分内容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

8、 ; i+) fscanf(rf, %d,%d, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ;第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, &a, &b); fun(a, b, &c); printf(The result is: %dn, c); NONO();

9、void fun(int a, int b, long *c)*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;填空部分内容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, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%

10、d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ;完整代码见备注完整代码见备注第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, &s); fun(s, &t); printf(The r

11、esult is: %ldn, t);提供程序#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, &s); fun(s, &t); printf(The result is: %ldn, t);修改后程序完整代码见备注完整代码见备注第20套 程序改

12、错#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:); scanf(%ld, &s); fun(s, &t); printf(The result is: %ldn, t);提供程序#include /*found*/void fun (long s, long *t) long sl=10;

13、*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, &s); fun(s, &t); printf(The result is: %ldn, t);提供程序一、数的转换与计算一、数的转换与计算2、素数、素数例:函数例:函数fun的功能是:将所有大于的功能是:将所有大于1小于整数小于整数m的非素数存入的非素数存入xx所指数组中,非素数的个数通过所指数组中,非素数的个数通过k传回。传回。

14、函数原型:函数原型:void fun(int m,int *k,int xx )分析:素数的判断(只能被分析:素数的判断(只能被1和其本身整除的数)和其本身整除的数)判断判断n的方法:用的方法:用2n-1 或或sqrt(n)中中n/2逐个去除逐个去除n,只要有,只要有 一个数被整除了,一个数被整除了,n就不是素数。就不是素数。 for(i=2;i=n-1;i+) if(n%i=0) break;将非素数存入数组:判断该数是否为素数,不是素数存入数组将非素数存入数组:判断该数是否为素数,不是素数存入数组 中,完成后数组下标加中,完成后数组下标加1。完整代码见备注完整代码见备注第18套 程序改错#

15、include #include int fun( int high ) int sum = 0, n=0, j, yes;/*found*/ while (high = 2) & (n 10) yes = 1; for (j=2; j=high/2; j+ ) if (high % j =0 )/*found*/ yes=0; break if (yes) sum +=high; n+; high-; return sum ;main ( ) printf(%dn, fun (100);提供程序#include #include int fun( int high ) int sum = 0

16、, n=0, j, yes;/*found*/ while (high = 2) & (n 10) yes = 1; for (j=2; j=high/2; j+ ) if (high % j =0 )/*found*/ yes=0; break; if (yes) sum +=high; n+; high-; return sum ;main ( ) printf(%dn, fun (100);提供程序一、数的转换与计算一、数的转换与计算3、整除及奇偶判断问题、整除及奇偶判断问题例:函数例:函数fun的功能是:求的功能是:求n以内(不包括以内(不包括n)同时能被)同时能被5与与11整除的所有

17、自然数之和的平方根,并作为函数值返回。整除的所有自然数之和的平方根,并作为函数值返回。函数原型:函数原型: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, &n )

18、 ; for ( k = 0 ; k n ; k+ ) if(k + 1) % 10 = 0) printf(n) ; else printf(%5d, aak) ; NONO( );int i,j=0; for(i=1;i=1000;i+) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/ if(i%7=0|i%11=0)&i%77!=0) aj+=i; *n=j;填空部分内容void NONO ( )/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int aa1000, n, k ; FILE *fp ; fp

19、 = fopen(out.dat,w) ; fun ( aa, &n ) ; for ( k = 0 ; k n ; k+ ) if(k + 1) % 10 = 0) fprintf(fp, n) ; else fprintf(fp, %5d, aak) ; fclose(fp) ;完整代码见备注完整代码见备注第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

20、n ; j+) /*found*/ t = t % 10 ; s = s - t ; return(s) ;main( ) int a, n ; printf( nPlease enter a and n:) ; scanf( %d%d, &a, &n ) ; printf( The value of function is: %ldn, fun ( a, n ) );提供程序#include long fun (int a, int n) int j ;/*found*/ long s = 0, t = 0 ; for ( j = 0 ; j n ; j+) t = t * 10 + a ;

21、 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, &a, &n ) ; printf( The value of function is: %ldn, fun ( a, n ) );提供程序完整代码见备注完整代码见备注第14套 程序改错#include int fun( int *b ) int k,a1,a2,i=0; for(k=10; k=55; k+

22、) /*found*/ a2=k/1O; a1=k-a2*10; if(k%3=0 & a2=5)|(k%3=0 & a1=5) bi=k; i+; /*found*/ return k; main( ) int a100,k,m; m=fun( a ); printf(The result is :n); for(k=0; km; k+) printf(%4d,ak); printf(n);提供程序#include int fun( int *b ) int k,a1,a2,i=0; for(k=10; k=55; k+) /*found*/ a2=k/10; a1=k-a2*10; if(

23、k%3=0 & a2=5)|(k%3=0 & a1=5) bi=k; i+; /*found*/ return i; main( ) int a100,k,m; m=fun( a ); printf(The result is :n); for(k=0; km; k+) printf(%4d,ak); printf(n);修改后程序一、数的转换与计算一、数的转换与计算4、四舍五入问题、四舍五入问题例:函数例:函数fun的功能是:对变量的功能是:对变量h中的值保留两位小数,并对中的值保留两位小数,并对第第3位进行四舍五入(规定位进行四舍五入(规定h中的值为正数)。中的值为正数)。函数原型:函数原

24、型: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(int 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);m

25、ain() int num1, num2,a; printf(Input num1 num2: ); scanf(%d%d,&num1,&num2); printf(num1= %d num2= %dnn,num1,num2); a=fun(num1,num2); printf(The maximun common divisor is %dnn,a);提供程序#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*/ r

26、eturn(b);main() int num1, num2,a; printf(Input num1 num2: ); scanf(%d%d,&num1,&num2); printf(num1= %d num2= %dnn,num1,num2); a=fun(num1,num2); printf(The maximun common divisor is %dnn,a);修改后程序完整代码见备注完整代码见备注第22套 程序改错#include /*found*/fun(int x, y, z ) int j,t ,n ,m; j = 1 ; t=j%x; m=j%y ; n=j%z; whi

27、le(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,&x1,&x2,&x3); printf(x1=%d, x2=%d, x3=%d n,x1,x2,x3); j=fun(x1,x2,x3); printf(The minimal common multiple is : %dn,j);提供程序#include /*found*/fun(int x, int y, int z ) in

28、t 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 j;main( ) int x1,x2,x3,j ; printf(Input x1 x2 x3: ); scanf(%d%d%d,&x1,&x2,&x3); printf(x1=%d, x2=%d, x3=%d n,x1,x2,x3); j=fun(x1,x2,x3); printf(The minimal common multiple is : %dn,j);修改后程

29、序一、数的转换与计算一、数的转换与计算6、求方程的根、求方程的根第18套 程序设计#include #include double fun()main() void NONO ( ); printf(Root =%fn,fun(); NONO();void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; wf = fopen(out.dat,w) ; fprintf(wf, %fn, fun() ; fclose(wf) ;double fun()double x0,x1;x1=0.0;dox0=x1;x1=cos(x0);whi

30、le(fabs(x0-x1)=1e-6);return x1;填空部分内容完整代码见备注完整代码见备注第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(&a, b) ; printf(%d %dn, a, b) ;提供程序#include int fun(int *x,int y) int t ;/*found*/ t = *x ; *x = y ;

31、/*found*/ return(t) ;main() int a = 3, b = 8 ; printf(%d %dn, a, b) ; b = fun(&a, b) ; printf(%d %dn, a, b) ;修改后程序完整代码见备注完整代码见备注第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() unsign

32、ed long n=-1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n); printf(nThe result is: %ldn,fun(n);提供程序#include unsigned long fun(unsigned 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=-

33、1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n); printf(nThe result is: %ldn,fun(n);填空后程序完整代码见备注完整代码见备注第5套 程序改错#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

34、s, t; printf(nPlease enter s:); scanf(%ld, &s); fun(s, &t); printf(The result is: %ldn, t);提供程序#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

35、, &s); fun(s, &t); printf(The result is: %ldn, t);修改后程序二、数列与级数求和二、数列与级数求和1、数列、数列例:函数例:函数fun的功能是:求的功能是:求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所

36、得结果为所得结果为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() long fib; int n; printf(Input n: ); scanf(%d,&n); printf(n = %dn,n); fib=fun(n); printf(fib = %dnn,fib

37、);提供程序#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,&n); printf(n = %dn,n); fib=fun(n); printf(fib = %dnn,fib);修改后程序二、数列与级数求和二、数列与级数求和2、级数求和、级数求和例:函数例:函数fun的功能是:根据形参计算如

38、下公式的值的功能是:根据形参计算如下公式的值y=1-1/(2 2)+1/(3 3)-1/(4 4)+(-1)(m+1)/(m m) 函数原型:函数原型:double fun(int m)一般解法:分析公式特点将其分为几个小的部分,对各个小部一般解法:分析公式特点将其分为几个小的部分,对各个小部分分别求解后进行组合。分分别求解后进行组合。 若每一项前的符号是交替变化的,可用下列方式实若每一项前的符号是交替变化的,可用下列方式实现:现:int j=1; for( ; ; ) j=-1*j; 注意:变量赋初值,除法运算中必需有实型数据出现。注意:变量赋初值,除法运算中必需有实型数据出现。完整代码见备

39、注完整代码见备注第2套 程序填空#include double fun(int n) int i; double s, 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_; return s;main() int n=-1; while(n0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n);提供程序#include double fun(int n) int i; double s, t;/*found

40、*/ s=0;/*found*/ for(i=1; i=n; i+) t=2.0*i;/*found*/ s=s+(2.0*i-1)*(2.0*i+1)/(t*t); return s;main() int n=-1; while(n0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n);填空后程序第31套程序填空#include double fun(int n) int i, k; double s, t; s=0;/*found*/ k=_1_; for(i=1; i=n; i+) /*found*/ t=_2_; s=s+k*(2*

41、i-1)*(2*i+1)/(t*t);/*found*/ k=k*_3_; return s;main() int n=-1; while(n0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n);提供程序#include double fun(int n) int i, k; double s, t; s=0;/*found*/ k=1; for(i=1; i=n; i+) /*found*/ t=2*i; s=s+k*(2*i-1)*(2*i+1)/(t*t);/*found*/ k=k*(-1); return s;main() in

42、t n=-1; while(n0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n);填空后程序完整代码见备注完整代码见备注第1套 程序填空#include double fun(double e) int i, k; double s, 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+; return s;main() double e=1e-3; printf

43、(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=(t+1)/(t*t); i+; return s;main() double e=1e-3; printf(nThe result is: %fn,fun(e);填空后程序二、数列与级数求和二、数列与级数求和3、求平均数、

44、求平均数第6套 程序设计#include #define N 8typedef struct char num10; double sN; double ave; STREC;void fun(STREC *a)main() STREC s=GA005,85.5,76,69.5,85,91,72,64.5,87.5; int i; void NONO ( ); fun( &s ); printf(The %ss student data:n, s.num); for(i=0;iave=0.0; for(i=0;iave=a-ave+a-si; /*求各门成绩的总和*/ a-ave/=N; /*

45、求平均分*/填空部分内容void NONO()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *out ; int i,j ; STREC s10 = GA005,85.5,76,69.5,85,91,72,64.5,87.5, GA001,82.5,66,76.5,76,89,76,46.5,78.5, GA002,72.5,56,66.5,66,79,68,46.5,58.5, GA003,92.5,76,86.5,86,99,86,56.5,88.5, GA004,82,66.5,46.5,56,76,75,76.5,63.5, GA006,75.5,

46、74,71.5,85,81,79,64.5,71.5, GA007,92.5,61,72.5,84,79,75,66.5,72.5, GA008,72.5,86,73.5,80,69,63,76.5,53.5, GA009,66.5,71,74.5,70,61,82,86.5,58.5, GA010,76,66.5,75.5,60,76,71,96.5,93.5,; out = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) fun(&si) ; fprintf(out, %7.3fn, si.ave) ; fclose(out) ;三、矩阵运算三、矩阵运算

47、1、矩阵行(或列)互换、矩阵行(或列)互换例:函数例:函数fun的功能是:将的功能是:将NN矩阵中元素的值按列右移矩阵中元素的值按列右移1个位个位置,右边被移出矩阵的元素绕回左边。例如,置,右边被移出矩阵的元素绕回左边。例如,N=3,有矩阵,有矩阵1 2 3 3 2 1 4 5 6 转换后的结果为转换后的结果为 6 4 5 请填空。请填空。7 8 9 9 7 8void fun(int (*t)N)int i,j,x; for(i=0;i=0;j-) tij=tij-1; ti 【3】=x;分析:按行考虑分析:按行考虑 保存被移出的数保存被移出的数移动矩阵移动矩阵被移出的数存入第被移出的数存入

48、第0列列完整代码见备注完整代码见备注第18套 程序填空#include #define N 4void fun(int (*t)N, int m) int i, j;/*found*/ for(i=0; i=0; j-)/*found*/ tij+_2_ =tij;/*found*/ for(j=0; j_3_; j+) tij=0; 提供程序main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j, m; printf(nThe original array:n); for(i=0; iN; i+) for(j=0

49、; jN; j+) printf(%2d ,tij); printf(n); printf(Input m (m=%d): ,N);scanf(%d,&m); fun(t,m); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); #include #define N 4void fun(int (*t)N, int m) int i, j;/*found*/ for(i=0; i=0; j-)/*found*/ tij+m=tij;/*found*/ for(j=0;

50、 jm; j+) tij=0; 填空后程序main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j, m; printf(nThe original array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); printf(Input m (m=%d): ,N);scanf(%d,&m); fun(t,m); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) pr

51、intf(%2d ,tij); printf(n); 完整代码见备注完整代码见备注第25套 程序填空#include #define N 4/*found*/void fun(int _1_ , int n) int i,s;/*found*/ for(_2_; i+) s=tii; tii=tin-i-1;/*found*/ tin-1-i=_3_; 提供程序main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(nThe original array:n); for(i=0; iN; i+) f

52、or(j=0; jN; j+) printf(%d ,tij); printf(n); fun(t,N); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%d ,tij); printf(n); #include #define N 4/*found*/void fun(int t N, int n) int i,s;/*found*/ for(i=0;in; i+) s=tii; tii=tin-i-1;/*found*/ tin-1-i=s; 填空后程序main() int tN=21,12,13,24

53、,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(nThe original array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%d ,tij); printf(n); fun(t,N); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%d ,tij); printf(n); 三、矩阵运算三、矩阵运算2、半三角元素运算、半三角元素运算例:函数例:函数fun的功能是:使的功能是:使NN数组左下三角元素中的值

54、全部数组左下三角元素中的值全部赋成赋成0。如。如a数组中原数为:数组中原数为: 1 9 7 0 9 7 2 3 8 处理后得处理后得 0 0 8 4 5 6 0 0 0函数原型:函数原型:int fun(int a N )分析:左下三角元素的下标范围,若分析:左下三角元素的下标范围,若i表示行,表示行,j表示列表示列 i=0,1,N ( N行数据行数据) j=0,1,.,i (下三角最后一个元素是主对角线上的元素下三角最后一个元素是主对角线上的元素)三、矩阵运算三、矩阵运算3、矩阵转置、矩阵转置例:函数例:函数fun的功能是:实现矩阵的行列转置(行列互换)的功能是:实现矩阵的行列转置(行列互换

55、)函数原型:函数原型:void fun(int array33)分析:若数组中元素为分析:若数组中元素为 1 2 3 1 4 7 4 5 6 转置后为转置后为 2 5 8 7 8 9 3 6 9主对角线上的元素主对角线上的元素1 5 9没有改变,而是将主对角线左侧数据没有改变,而是将主对角线左侧数据与右侧数据互换,即与右侧数据互换,即aij与与aji互换。互换。三、矩阵运算三、矩阵运算4、求矩阵周边元素的和或平均值、求矩阵周边元素的和或平均值例:函数例:函数fun的功能是:求一个二维数组周边元素之和,作为的功能是:求一个二维数组周边元素之和,作为函数值返回。函数值返回。函数原型:函数原型:in

56、t fun(int aMN分析:周边元素的下标特征分析:周边元素的下标特征 第第0行:行:a00-a0N-1 第第0列:列:a10-aM-10 (除去除去a00) 第第M-1行:行:aM-11-aM-1N-1 (除去除去aM-10) 第第N-1列:列:a1N-1-aM-2N-1 (除去除去aM-1N-1)三、矩阵运算三、矩阵运算5、求矩阵中元素的最大值、求矩阵中元素的最大值第1套 程序设计#include #define M 4int fun (int aM)main( ) int arr2M=5,8,3,45,76,-4,12,82 ;void NONO (); printf(max =%d

57、n, fun(arr) ; NONO( ) ;void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; int arrM=5,8,3,90,76,-4,12,82 ; wf = fopen(out.dat,w) ; fprintf(wf, max=%dn, fun(arr) ; fclose(wf) ;int fun (int aM)int max,i,j;max=a00;for(i=0;i2;i+) for(j=0;jmax)max=aij;return max;填空部分内容四、数组运算四、数组运算1、找最大(小)数问题、找最大(

58、小)数问题例:函数例:函数fun的功能是:求一个二维数组中最大值,并将此值的功能是:求一个二维数组中最大值,并将此值返回调用函数。返回调用函数。函数原型:函数原型:int fun(int a M)分析:把分析:把a00存入最大值存入最大值max中,再将中,再将max与剩下的所有元与剩下的所有元素进行比较。如果素进行比较。如果maxaij成立,成立,max=aij。a0a1a2a3a4max第30套 程序设计#include #include #define N 8struct slist double s; struct slist *next;typedef struct slist STR

59、EC;double fun( STREC *h ) STREC * creat( double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC);p-s=0; while(is=si; i+; p-next=q; p=q; p-next=0; return h;填空部分填空部分outlist( STREC *h) STREC *p; p=h-next; printf(head); do printf(-%2.0f,p-s);p=p-next; while(p!=0); printf(nn);main() double s

60、N=85,76,69,85,91,72,64,87, max;void NONO (); STREC *h; h=creat( s ); outlist(h); max=fun( h ); printf(max=%6.1fn,max); NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i,j ; double sN,max; STREC *h ; in = fopen(in.dat,r) ; out = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) f

61、or(j=0 ; j N; j+) fscanf(in, %lf, &sj) ; h=creat( s ); max=fun( h ); fprintf(out, %6.1lfn, max) ; fclose(in) ; fclose(out) ;#include #include #define N 8struct slist double s; struct slist *next;typedef struct slist STREC;double fun( STREC *h )STREC * creat( double *s) STREC *h,*p,*q; int i=0; h=p=(

62、STREC*)malloc(sizeof(STREC);p-s=0; while(is=si; i+; p-next=q; p=q; p-next=0; return h;double fun( STREC *h ) double max=h-s; while(h!=NULL) /*通过循环找到最高分数*/ if(maxs) max=h-s; h=h-next; return max;填空部分内容四、数组运算四、数组运算2、数组排序、数组排序完整代码见备注完整代码见备注第6套 程序填空# include #define N 9void fun(int a, int n) int i,j, ma

63、x, min, px, pn, t; for (i=0; in-1; i+=2) /*found*/ max = min = _1_; px = pn = i; for (j=i+1; jn; j+) /*found*/ if (max_3_) min = aj; pn = j; if (pn != i) t = ai; ai = min; apn = t; if (px = i) px =pn; if (px != i+1) t = ai+1; ai+1 = max; apx = t; 提供程序main() int bN=9,1,4,2,3,6,5,8,7, i; printf(nThe o

64、riginal data :n); for (i=0; iN; i+) printf(%4d , bi); printf(n); fun(b, N); printf(nThe data after moving :n); for (i=0; iN; i+) printf(%4d , bi); printf(n);# include #define N 9void fun(int a, int n) int i,j, max, min, px, pn, t; for (i=0; in-1; i+=2) /*found*/ max = min = ai; px = pn = i; for (j=i

65、+1; jn; j+) /*found*/ if (maxaj) min = aj; pn = j; if (pn != i) t = ai; ai = min; apn = t; if (px = i) px =pn; if (px != i+1) t = ai+1; ai+1 = max; apx = t; 填空后程序main() int bN=9,1,4,2,3,6,5,8,7, i; printf(nThe original data :n); for (i=0; iN; i+) printf(%4d , bi); printf(n); fun(b, N); printf(nThe d

66、ata after moving :n); for (i=0; iN; i+) printf(%4d , bi); printf(n);第26套 程序设计#include #define N 16typedef struct char num10; int s; STREC;void fun( STREC a )void fun( STREC a ) int i,j; STREC t; for(i=1;iN;i+) /*用冒泡法进行排序,进行N1次比较*/ for(j=0;jN-1;j+) /*在每一次比较中要进行N1次两两比较*/ if(aj.saj+1.s) t=aj;aj=aj+1;aj

67、+1=t; /*按分数的高低排列学生的记录,高分在前*/填空部分内容main() STREC sN=GA005,85,GA003,76,GA002,69,GA004,85,GA001,91,GA007,72,GA008,64,GA006,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,66,GA017,64,GA018,64,GA016,72; int i;FILE *out ; fun( s ); printf(The data after sorted :n); for(i=0;iN; i+) if( (i)%4=0 )printf(n); pri

68、ntf(%s %4d ,si.num,si.s); printf(n); out = fopen(out.dat,w) ; for(i=0;i=a) 【1】 (ch=z) ) return ch-a+A; if(isupper(ch)/*found*/ return ch+a- 【2】 ;/*found*/ return 【3】 ;2、删除指定字符或字符串、删除指定字符或字符串 五、字符串运算五、字符串运算第4套 程序设计#include void fun( char *a )main() char s81; void NONO ( ); printf(Enter a string:n);ge

69、ts(s); fun( s ); printf(The string after deleted:n);puts(s); NONO();void fun( char *a ) int i,j=0; for(i=0;ai!=0;i+) if(ai!=*) aj+=ai; /*若不是要删除的字符*则留下*/ aj=0;填空部分内容void NONO()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s81 ; in = fopen(in.dat,r) ; out = fopen(out.dat,w) ; for(

70、i = 0 ; i 10 ; i+) fscanf(in, %s, s) ; fun(s) ; fprintf(out, %sn, s) ; fclose(in) ; fclose(out) ;第14套 程序设计#include void fun( char *a )main() char s81;void NONO (); printf(Enter a string:n);gets(s); fun( s ); printf(The string after deleted:n);puts(s); NONO();void fun( char *a ) while(*a!=0) a+; a-;

71、/*指针a指向字符串的尾部*/ while(*a=*) a-; /*指针a指向最后一个字母*/ *(a+1)=0; /*在字符串最后加上结束标志符*/填空部分内容void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s81 ; in = fopen(in.dat,r) ; out = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(in, %s, s) ; fun(s) ; fprintf(out, %sn, s) ; fclose(in)

72、; fclose(out) ;完整代码见备注完整代码见备注第19套 程序改错#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: ); puts(s); fun(s); printf(The string after deleted : ); puts(s);printf(nn);提供程序#i

73、nclude void fun( char *s ) int i,j; for(i=j=0; si!=0; i+) if(si!=c)/*found*/ sj+=si;/*found*/ sj=0;main() char s80; printf(Enter a string: ); gets(s); printf(The original string: ); puts(s); fun(s); printf(The string after deleted : ); puts(s);printf(nn);修改后程序3、移动字符串指定字符的位置、移动字符串指定字符的位置五、字符串运算五、字符串运

74、算第19套 程序设计#include void fun( char *a )main() char s81; int n=0; void NONO (); printf(Enter a string:n);gets(s); fun( s ); printf(The string after moveing:n);puts(s); NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s81 ; in = fopen(in.dat,r) ; out = fopen(out.dat

75、,w) ; for(i = 0 ; i 10 ; i+) fscanf(in, %s, s) ; fun(s) ; fprintf(out, %sn, s) ; fclose(in) ; fclose(out) ;void fun( char *a )int i=0,n=0;char *p;p=a;while (*p=*) /*判断*p是否是*号,并统计*号的个数*/ n+;p+;while(*p) /*将前导*号后的字符传递给a*/ ai=*p;i+;p+;while(n!=0)ai=*;i+;n-;ai=0;填空部分内容完整代码见备注完整代码见备注第13套 程序填空#include voi

76、d fun(char *s) int i, n, k; char c; n=0; for(i=0; si!=0; i+) n+;/*found*/ if(n%2=0) k=n-_1_ ; else k=n-2;/*found*/ c=_2_ ; for(i=k-2; i=1; i=i-2) si+2=si;/*found*/ s1=_3_ ;main() char s80=abcdefgh; printf(nThe original string is : %sn,s); fun(s); printf(nThe result is : %sn,s);提供程序#include void fun(

77、char *s) int i, n, k; char c; n=0; for(i=0; si!=0; i+) n+;/*found*/ if(n%2=0) k=n-1 ; else k=n-2;/*found*/ c=sk ; for(i=k-2; i=1; i=i-2) si+2=si;/*found*/ s1=c ;main() char s80=abcdefgh; printf(nThe original string is : %sn,s); fun(s); printf(nThe result is : %sn,s);填空后程序4、进制间的转换、进制间的转换五、字符串运算五、字符串运

78、算完整代码见备注完整代码见备注第16套 程序改错#include int fun( char *p ) int n;/*found*/ n= *p-o; p+; while( *p!=0 ) /*found*/ n=n*8+*p-o;p+; return n;main() char s6; int i; int n; printf(Enter a string (Ocatal digits): ); gets(s); if(strlen(s)5) printf(Error: String too longer !nn);exit(0); for(i=0; si; i+) if(si7) pri

79、ntf(Error: %c not is ocatal digits!nn,si);exit(0); printf(The original string: ); puts(s); n=fun(s); printf(n%s is convered to integer number: %dnn,s,n);提供程序#include int fun( char *p ) int n;/*found*/ n= *p-0; p+; while( *p!=0 ) /*found*/ n=n*8+*p-0;p+; return n;main() char s6; int i; int n; printf(

80、Enter a string (Ocatal digits): ); gets(s); if(strlen(s)5) printf(Error: String too longer !nn);exit(0); for(i=0; si; i+) if(si7) printf(Error: %c not is ocatal digits!nn,si);exit(0); printf(The original string: ); puts(s); n=fun(s); printf(n%s is convered to integer number: %dnn,s,n);修改后程序5、字符倒排、字符

81、倒排五、字符串运算五、字符串运算完整代码见备注完整代码见备注第15套 程序改错#include /*found*/void fun (char a) if ( *a ) fun(a+1) ;/*found*/ printf(%c *a) ; main( ) char s10=abcd; printf(处理前字符串=%sn处理后字符串=, s); fun(s); printf(n) ;提供程序#include /*found*/void fun (char *a) if ( *a ) fun(a+1) ;/*found*/ printf(%c,*a) ; main( ) char s10=abc

82、d; printf(处理前字符串=%sn处理后字符串=, s); fun(s); printf(n) ;修改后程序6、统计字符出现的次数、统计字符出现的次数五、字符串运算五、字符串运算第2套 程序改错#include int fun (char *str,char *substr) int i,j,k,num=0;/*found*/ for(i = 0, stri, i+) for(j=i,k=0;substrk=strj;k+,j+)/*found*/ If(substrk+1=0) num+; break; return num;main() char str80,substr80; pr

83、intf(Input a string:) ; gets(str); printf(Input a substring:) ; gets(substr); printf(%dn,fun(str,substr);提供程序#include int fun (char *str,char *substr) int i,j,k,num=0;/*found*/ for(i = 0;stri;i+) for(j=i,k=0;substrk=strj;k+,j+)/*found*/ if(substrk+1=0) num+; break; return num;main() char str80,subst

84、r80; printf(Input a string:) ; gets(str); printf(Input a substring:) ; gets(substr); printf(%dn,fun(str,substr);修改后程序第3套 程序填空#include void fun(char *s, int *t) int i, n; n=0;/*found*/ for(i=0; _1_ !=0; i+)/*found*/ if(si=0&si= _2_ ) n+;/*found*/ _3_ ;main() char s80=abcdef35adgh3kjsdf7; int t; print

85、f(nThe original string is : %sn,s); fun(s,&t); printf(nThe result is : %dn,t);提供程序#include void fun(char *s, int *t) int i, n; n=0;/*found*/ for(i=0; si !=0; i+)/*found*/ if(si=0&si= 9 ) n+;/*found*/ *t=n ;main() char s80=abcdef35adgh3kjsdf7; int t; printf(nThe original string is : %sn,s); fun(s,&t)

86、; printf(nThe result is : %dn,t);填空后程序第13套 程序设计#include #include void fun(char *tt, int pp )main( ) char aa1000 ; int bb26, k ; void NONO ( ); printf( nPlease enter a char string: ) ; scanf(%s, aa) ; fun(aa, bb ) ; for ( k = 0 ; k 26 ; k+ ) printf (%d , bbk) ; printf( n ) ; NONO ( ) ;void fun(char *

87、tt, int pp)int i; for(i=0;i=a&*tt=z) pp*tt-a+; 填空部分内容void NONO ( )/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ char aa1000 ; int bb26, k, i ; FILE *rf, *wf ; rf = fopen(in.dat,r) ; wf = fopen(out.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(rf, %s, aa) ; fun(aa, bb) ; for ( k = 0 ; k s求和求和如何判断最后一个结点?如何判断最后一个结

88、点?六、链表处理六、链表处理链表的建立和结点的插入链表的建立和结点的插入2、请完成孙、请完成孙struct node *fun(),它的功能是:建立一个带头,它的功能是:建立一个带头结点的单向链表,新产生的结点总是插入在链表的末尾。单向结点的单向链表,新产生的结点总是插入在链表的末尾。单向链表的头指针作为函数值的返回。链表的头指针作为函数值的返回。struct node char data; struct node *next;struct node *fun() struct node *t1,*t2,*t3; char ch; t1=(struct node *)malloc(sizeof

89、(struct node); t3=t2=t1; while(ch=getchar()!=n)t2=【 1 】malloc(sizeof(struct node); t2-dat=ch; t3-next=【 2 】;t3=t2; p-next=0; 【 3 】 六、链表处理六、链表处理链表结点删除链表结点删除3、给定程序中已建立一个带有头结点的单向链表,链表中的、给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数各结点按数据域递增有序链接。函数fun的功能是:删除链表的功能是:删除链表中数据域值相同的结点,使之保留一个。中数据域值相同的结点,使之保留一个。str

90、uct node int data; struct node *next;void fun(struct node *h) struct node *p,*q; p=h-next; if(p!=NULL) q=p-next; while(q!=NULL) if(p-data=q-data) p-next=q-next; free【 1 】; q=p-【 2 】; else p=q; q=q- 【 3 】; 完整代码见备注完整代码见备注第15套 程序填空SLIST *creatlist(int *a) SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(size

91、of(SLIST); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h;void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(nThe list is NULL!n); else printf(nHead); do printf(-%d,p-data); p=p-next; while(p!=NULL); printf(-Endn); 提供程序#include #include #define N 8typedef struct list int data; struc

92、t list *next; SLIST;void fun( SLIST *p) SLIST *t, *s; t=p-next; s=p; while(t-next != NULL) s=t;/*found*/ t=t-_1_; /*found*/ printf( %d ,_2_); s-next=NULL;/*found*/ free(_3_);12提供程序main() SLIST *head; int aN=11,12,15,18,19,22,25,29; head=creatlist(a); printf(nOutput from head:n); outlist(head); print

93、f(nOutput from tail: n); while (head-next != NULL) fun(head); printf(nn); printf(nOutput from head again :n); outlist(head); 3#include #include #define N 8typedef struct list int data; struct list *next; SLIST;void fun( SLIST *p) SLIST *t, *s; t=p-next; s=p; while(t-next != NULL) s=t;/*found*/ t=t-n

94、ext; /*found*/ printf( %d ,t-data); s-next=NULL;/*found*/ free(t);填空后程序七、文件操作七、文件操作 给定程序的功能是调用给定程序的功能是调用fun函数建立班级通讯录。通讯录中记函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级人数和学生的信息录每位学生的编号、姓名和电话号码。班级人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。的二进制文件中。#define N 5typedef struct int num; c

95、har name10; char tel10;STYPE;int fun(【 1 】 *std)【 2 】 *fp; int i; if(fp=fopen(“myfile5.dat”,”wb”)=NULL) return (0); for(i=0;iN;i+) fwrite(&stdi,sizeof(STYPE),1, 【 3 】 ); fclose(fp); 完整代码见备注完整代码见备注第17套 程序填空#include #include int fun(char *source, char *target) FILE *fs,*ft; char ch;/*found*/ if(fs=fop

96、en(source, _1_)=NULL) return 0; if(ft=fopen(target, w)=NULL) return 0; printf(nThe data in file :n); ch=fgetc(fs);/*found*/ while(!feof(_2_) putchar( ch );/*found*/ fputc(ch,_3_); ch=fgetc(fs); fclose(fs); fclose(ft); printf(nn); return 1;提供程序main() char sfname20 =myfile1,tfname20=myfile2; FILE *myf

97、; int i; char c; myf=fopen(sfname,w); printf(nThe original data :n); for(i=1; i30; i+) c=A+rand()%25;fprintf(myf,%c,c); printf(%c,c); fclose(myf);printf(nn); if (fun(sfname, tfname) printf(Succeed!); else printf(Fail!);#include #include int fun(char *source, char *target) FILE *fs,*ft; char ch;/*found*/ if(fs=fopen(source, r)=NULL) return 0; if(ft=fopen(target, w)=NULL) return 0; printf(nThe data in file :n); ch=fgetc(fs);/*found*/ while(!feof(fs) putchar( ch );/*found*/ fputc(ch,ft); ch=fgetc(fs); fclose(fs); fclose(ft); printf(nn); return 1;填空后程序

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号