




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机试真题1、函数fun 的功能是:计算正整数n 的所有因子(1 和n 除外)之和作为函数值返回。 例如:n=120 时,函数值为239。#include #include int fun(int n) int _1_,s=0;/*能整除n 的自然数即称为因子*/for (i=2;i n;i+)if (n%i=0) s=_2_;return (s);main() /*主函数*/ printf(%dn,fun(120);解析: 本题的考核点是计算n 所有因子的算法。解题思路:判断因子的方法是:能被n整除的数。由于题意中指明需将1和n除外,所以循环的范围应从2至n-1。答案:1: i 2: s+i2
2、、已知一个数列的前三项分别为0,0,1, 以后的各项都是其相邻的前三项之和。给定程序modi.c 中函数 fun 的功能是:计算并输出该数列前n项的平方根之和sum。n 的值通过形参传入。 例如,当n10 时,程序的输出结果应为:23.。 请改正函数fun 中的错误,使程序能输出正确的结果。 注意:不要改动main 函数,#include #include #include /*found*/fun(int n) double sum, s0, s1, s2, s; int k;sum = 1.0;if (n = 2) sum = 0.0;s0 = 0.0; s1 = 0.0; s2 = 1.
3、0;for (k = 4; k = n; k+) s = s0 + s1 + s2;sum += sqrt(s);s0 = s1; s1 = s2; s2 = s;/*found*/return summain ( ) int n;clrscr( );printf(Input N=);scanf(%d, &n);printf(%fn, fun(n) );解析: 本题的考核点是C语言中的函数的入口参数和类型转换。C 语言规定,凡不加类型说明的函数,一律自动按整型处理。如果函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型。根据题意,函数返回值为实型,所以第一处错误f
4、un(int n)应改为floatfun (int n)或具有相同作用的句子。函数的返回值是通过函数中的return语句获得的。return 语句后面的括弧可以不要,但分号不能少,必须加分号。所以,第二处错误应改为return sum;或相同作用的句子。如果函数值的类型和return语句中表达式的 值不一致,则以函数类型为准。对数值型数据可以自动进行类型转换。即函数类型决定返回值的类型。本评析仅作参考。3、请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci 数列F(n)的定义为 F(0)0,F(1) 1,F(n)=F(n-1)
5、+F(n-2) 例如:t=1000 时 ,函数值为987。 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include #include #include int fun(int t) main()int n;clrscr();n=1000;printf(n=%d, f=%dn,n, fun(n); 解析:int fun(int t)int a=1,b=1,c=0,i; /*a 代表第n-2 项,b 代表第n-1 项,c 代表第n 项*/*如果求得的数c 比指定比较的数小,则计算下一个Fibonacci
6、 数,对a,b 重新置数*/do c=a+b;a=b;b=c;while (c t); /*如果求得的数c 比指定比较的数大时,退出循环*/c=a; /*此时数c 的前一个Fibonacci 数为小于指定比较的数的最大的数*/return c;4、下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a初值为8,b 初值为3,程序运行后a 中的值为3,b 中的值为8。 试题程序:#include #include int fun(int *x,int y) _1_ t;t=*x;*x=y;return(t)_2_main()int a=3
7、,b=8;printf(%d %dn ,a,b);b=fun(_3_,b);printf(%d %dn ,a,b);解析: 填空1:根据题目的意思,这里应该是声名一个新的变量t,由后面的赋值语句以及返回语句可以明白这个变量应该是整型的(因为函数的返回值类型是int)。填空2:根据题目的意思,此处是子函数的返回语句,由C 语言的知识,每个语句的结尾都应该使用; 。填空3:fun()函数的调用方式说明fun()函数的参数应当为指针类型,即应该把变量的地址作为参数传递(符号&是取地址操作)。答案:【1】int 【2】; 【3】&a5、给定程序modi.c 中函数fun的功能是:求两个形参的乘积和商数
8、,并通过形参返回调用程序。 例如输入:61.82 和 12.65,输出为: c =782. d = 4.。 请改正 fun 函数中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,#include #include /*found*/void fun ( double a, b, double x,y )/*found*/x = a * b; y = a / b;main ( ) double a, b, c, d;clrscr( );printf ( Enter a , b : );scanf ( %lf%lf, &a, &b );fun ( a , b, &c, &d ) ;
9、printf ( c = %f d = %fn , c, d );解析: 本题的考核点是C语言中函数的入口参数和指针的使用。函数的参数表是由逗号分隔的变量表,变量表由变量类型和变量名组成,与普通的变量说明不同,函数参数必须同时具有变量类型和变量名,因此应该把程序中void fun ( double a, b, double x,y )语句改为void fun ( double a,double b, double *x, double *y )或相同作用的语句。从主函数里的 fun ( a , b, &c, &d ) ; 语句可以看出,fun 函数后两个参数应为长浮点型数据的指针,因此应该把程
10、序中x = a * b; y = a / b;语句改为*x = a * b; *y = a / b;或相同作用的语句。6、 请编一个函数float fun(double h),函数的功能是对变量h中的值保留2 位小数,并对第三位进行四舍五入(规定h 中的值为正数)。 例如:h 值为8.32433,则函数返回8.32; h 值为8.32533,则函数返回8.33。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include float fun(float h)main() floa
11、t a;clrscr();printf(Enter a: );scanf(%f,&a);printf(The original data is: );printf(%f nn,a);printf(The result: %fn,fun(a);解析: 本题的考核点是类型转换与小数四舍五入的算法。 提示思路:先将原数值加上要保留位上的位权值的一半,再除以要保留位上的位权值,通过类型的转换将要舍去部分去掉,最后再通过类型转换将其转换为最终结果。float fun ( float h ) long num;h=h+0.005;h=h*100;num=h; /*对h 求整*/h=num;h=h/100;
12、return h; 7、给定程序的功能是删除w 数组中下标为k 的元素中的值。程序中,调用了getindex、arrout 和arrdel三个函数,getindex 用以输入所删元素的下标函数中对输入的下标进行检查,若越界,则要求重新输入,直到正确为止。arrout 用以输出数组中的数据,arrdel进行所要求的删除操作。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。#include #define NUM 10arrout ( int *w, int m ) int k;/*found*/for (k = 0; k _1_; k+)printf (%d , wk);p
13、rintf (n);arrdel ( int *w, int n, int k ) int i;for ( i = k; i n-1; i+ ) wi = wi+1;n-;/*found*/return _2_;getindex( int n ) int i;/*found*/_3_ printf(nEnter the index 0 = i %d : , n );scanf (%d,&i ); while( i n-1 );return i;main( ) int n, d, aNUM=21,22,23,24,25,26,27,28,29,30;n = NUM;printf (Output
14、primary data :n); arrout ( a,n );d = getindex( n ); n = arrdel ( a, n, d );printf (Output the data after delete :n);arrout( a, n );解析: 本题的考核点是数组和循环语句是使用。题中第一个空填m:k m用于控制循环的结束。题中第二个空填n:return n 用于将n 返回给调用它的函数。题中第三个空填do:循环有两种,当型和直到型。While为当型循环,dowhile是直到型循环。答案:【1】m 【2】n 【3】do8、给定程序modi.c 中,函数fun 的功能是:
15、根据整型形参n,计算如下公式的值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),An=1/(1+An-1) 例如:若n=10,则应输出: 0.。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main 函数,#include #include /*found*/int fun(int n) float A=1;int i;/*found*/for (i=2;i n;i+)A=1.0/(1+A);return A;main() int n;clrscr();printf(nPlease enter n:);scanf(%d,&n);printf(A%d=%fn,n,fun
16、(n);解析: 本题着重考察考生对C 语言中函数的定义、引用和参数传递的掌握情况。本题中的第一个错误:由主函数中可知,函数fun返回的应为float或double型的值,所以程序中的语句int fun(int n)应改为float fun(int n)或double fun(int n);本题中的第二个错误:由题意可知,程序要求出An的值,循环的终止值应为n,所以程序中的语句for (i=2;i n;i+)应改为for (i=2;i =n;i+)或相同作用的语句。9、请编写函数fun(),它的功能是:求出1 到1000 之内能被5 或13 整除、但不能同时被5 和13 整除的所有整数并将它们放
17、在a 所指的数组中,通过n返回这些数的个数。 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 试题程序:#include #include void fun(int *a,int *n)main() int aa1000, n, k;clrscr();fun(aa,&n);for(k=0;k n;k+)if(k+1)%10=0)printf(%5d ,aak);printf(n ); /*一行写10 个数*/elseprintf(%5d ,aak);解析:void fun(int *a,int *n) int i,j
18、=0;for(i=1;i =1000;i+) /*求1 到1000 之内能被5 或13 整除、但不能同时被5 和13 整除的所有整数,并放入数组a 中*/if(i%5=0|i%13=0)&i%65!=0)aj+=i;*n=j; /*传回满足条件的数的个数*/注意本题题目是找出能被5 或13 整除但不能同时被5 和13 整除的所有整数。能同时被5 和13 整除的整数一定能被65整除,且不能被65 整除的数不一定就是能被5 或13 整除的数。所以可得出程序中的if()。按运算优先级可知(i%5=0|i%13=0),注意,两边必须要有小括号。10、给定程序的功能是计算scroe 中m 个人的平均成绩
19、aver,将低于aver的成绩放在below 中,通过函数名返回人数。例如,当score=10,20,30,40,50,60,70,80,90,m=9 时,函数返回的人数应该是4,below=10,20,30,40。#include #include int fun(int score, int m, intbelow) int i, j = 0 ;float aver = 0.0 ;for(i = 0 ; i m ; i+) aver += scorei ;aver /= (float) m ;for(i = 0 ; i m ; i+)/*found*/if(scorei aver) bel
20、owj+ = _1_ ;return j ;main() int i, n, below9 ;int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90 ;/*found*/n = fun(score, 9, _2_) ;printf( nBelow the average score are: ) ;/*found*/for (i = 0 ; i n ; i+) printf(%d , _3_) ;解析: 本题的考核点是求平均值。解题思路:1、首先定义变量aver,用aver += scorei计算总分数,用aver /= (float)m 来计算平均分;
21、2、通过循环,计算出数组score中各个分数的总和,并放至aver中;3、根据由主函数传过来的m,计算平均分,并放至aver 中;4、通过循环,让每个分数和平均分比较,低于平均分的分数给below;6、在以上循环的同时,定义了一个变量j,每当发现一个小于平均分的分数,j便自动加1;7、最后返回j值,即是数组score中低于平均分的元素个数。答案:【1】scorei 【2】 below 【3】belowi11、给定程序modi.c 中,函数fun 的功能是:计算输出high 以内最大的10 个素数之和。high由主函数传给fun 函数。若high 的值为:100,则函数的值为:732。请改正程序
22、中的错误,使它能得出正确结果。注意:不要改动main 函数,#include #include #include intfun( int high ) int sum = 0, n=0, j, yes;/*found*/while (high = 2) & (n 10) yes = 1;for (j=2; j=2)&(n=2)&(n10)或相同作用的语句。本题中的第二处错误是:C 语言中,;是语句的一部分,是语句结束的标志,不可缺少,所以, if (high%j=0)yes=0;break应改为if(high%j=0)yes=0;break;或相同作用的语句。12、请编写函数fun,函数的功能
23、是:实现B=A+A,即把矩阵A 加上A 的转置,存放在矩阵B 中。计算结果在main 函数中输出。例如,输入下面的矩阵: 其转置矩阵为:|1 2 3| |1 4 7|4 5 6| |2 5 8|7 8 9| |3 6 9|程序输出: |2 6 10|6 10 14|10 14 18|注意:部分源程序存在文件prog.c 中。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include void fun ( int a33, intb33)main( ) /* 主程序 */ int a33 = 1, 2, 3, 4, 5, 6
24、, 7, 8, 9, t33 ;int i, j ;clrscr() ;fun(a, t) ;for (i = 0 ; i 3 ; i+) for (j = 0 ; j 3 ; j+)printf(%7d, tij) ;printf(n) ;解析: 本题的考核点是矩阵A加上A的转置算法。提示思路:A的转置即指原先在i行j列的元素现放置在j行i列上,通过一个两重循环即可求得矩阵与其转置的和。void fun(int a33,int b33)int i,j;for(i=0;i 3;i+)for (j=0;j 3;j+)bij=aij+aji;/*按从行到列的顺序,求得矩阵与其转置的和*/13、给定
25、程序的功能是计算并输出下列级数的前N 项之和SN,直到SN+1大于q 为止,q 的值通过形参传入。2 3 4 N+1SN = + + + + 1 2 3 N例如,若q 的值为50.0,则函数值为50.。#include double fun( double q ) int n; double s;n = 2;s = 2.0;/*found*/while (s _1_ q)s=s+(double)(n+1)/n;/*found*/_2_ ;printf(n=%dn,n);/*found*/_3_ ;main ( )printf(%fn, fun(50);解析: 本题考查的是C 语言中简单算法的应
26、用以及函数的调用。题中第一个空填 =:根据题意,设置循环的结束条件。题中第二个空填n+:根据题意,将变量n 的值自加1,以适应公式的变化。题中第三个空填returns:通过return 语句将被调用函数中一个确定值带回主调函数中去。本评析仅作参考。答案:【1】 = 【2】n+ 【3】return s14、给定程序modi.c 中函数 fun 的功能是:从 m 个学生的成绩中统计高于平均分的学生人数,此人数由函数值返回,aver返回平均分。请改正函数 fun 中的错误,使它能统计出正确的结果。注意:不要改动 main 函数,#include #include #define N 20int fu
27、n ( float *s, int n, float *aver ) float ave, t = 0.0 ;int count = 0, k, i ;for ( k = 0 ; k n ; k+ )/*found*/t = sk ;ave = t / n ;for ( i = 0 ; i ave ) count+ ;/*found*/*aver = &ave ;return count ;main() float s30, aver ;int m, i ;clrscr() ;printf ( nPlease enter m: ) ; scanf (%d, &m ) ;printf ( nPl
28、ease enter %d mark :n , m ) ;for( i = 0 ; i m ; i+ ) scanf ( %f, s + i ) ;printf( nThe number of students : %d n , fun ( s, m, &aver ) );printf( Ave = %fn, aver ) ;解析: 首先,我们必须先读懂题中程序的大致意思,这是发现并改正程序中错误的重要前提。程序中的重要思想如下:1、要注意存放学生分数的数组是一个float型的数组,故总分和平均分都应当是float型的;2、函数fun()中的第三个形参是一个指针,这表示在未来赋值时的方法是特殊
29、的。本题的第一个错误:在函数fun()第一个for 循环体中,语句t = sk ;只是将t的值不断用不同学生的分数替代,这与计算总分的初衷相逆,这条语句应当书写为t=t+sk;,实现学生分数的不断累加;本题的第二个错误:语句*aver = &ave ;是不正确的,*aver 代表的是一个float型的变量,而&aver 则是函数中存放平均数的那个变量的内存地址,两者不匹配,应当改为*aver = ave;,这样才可以实现通过aver 返回平均分的目的。 15、请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0 至9 岁年龄
30、段的人数放在d0中,把10 至19 岁年龄段的人数放在d1中,把20 至29 岁年龄段的人数放在d2中,其余依此类推,把100 岁(含100)以上年龄的人数都放在d10中。结果在主函数中输出。注意:部分源程序存在文件prog.c 中。请勿改动主函数main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #define N 50#define M 11void fun( int *a, int *b)double rnd() static t=29,c=217,m=1024,r=0;r=(r*t+c)%m; return(double)r/m);mai
31、n() int ageN, i, dM;for(i=0; i N;i+)agei=(int)(115*rnd();printf(The original data :n);for(i=0;i N;i+) printf(i+1)%10=0?%4dn:%4d,agei);printf(nn);fun( age, d);for(i=0;i10?10:*(a+i)/10,将年龄整除10 后存放到数组d中,具体执行过程是判断年龄整除10后的值是否大于10,若大于10,则该逗号表达式的值等于10,即实现了将100 岁(含100)以上年龄的人数存放在d10中; 若不大于10,则该逗号表达式的值等于*(a+i
32、)/10 的值,即实现了各个年龄段的人数的统计。void fun( int *a,int *b)int i;for(i=0;i M;i+) /*初始化数组b中的每一个元素*/bi=0;for(i=0;i10?10:*(a+i)/10+;16、规定输入的字符串中只包含字母和*号。函数fun 的功能是:将字符串中前面所有连续的*号全部移动到字符串的尾部。例如,字符串中的内容为:*A*BC*DEF*G*,移动后,字符串中的内容应当是:A*BC*DEF*G*。#include #include void fun(char *a) char b81;int i=0,j=0,s=0,k;while (ai
33、_1_*) /*统计原串串首连续*的个数*/i+;s+;while (ai) /*将从第一个非*字符开始至串尾的所有字符赋给字符串b*/bj=ai;j+;i+;for (k=0;k s;k+) /*串首连续*的个数追加其在字符串b 后*/bj=*;j+;bj=_2_;i=0;j=0;while (bj) /*将字符串b中的所有字符复制到a 字符串中覆盖原串*/ai=bj;i+;j+;main() char s81,*p;printf(Enter a string:n);gets(s);fun(s);printf(The string after moveing:n);puts(s);解析: 本
34、题的考核点是移动字符串中字符的算法。解题思路:先统计原串串首连续*的个数,再将从第一个非*字符开始至串尾的所有字符赋给一字符串,再通过一循环生成串首连续*的个数个*追加其后,最后将新串覆盖原串。答案:【1】= 【2】 017、给定程序modi.c 中fun 函数的功能是:计算1+2+3+n 的和值。请改正程序中的错误,使它能得出正确结果。注意:不要改动main 函数,#include /*found*/fun (int n) double t;/*found*/if (n=0)return(1);elset=fun(n-1)+n;return t;main() int n;printf(Ent
35、er n: ); scanf(%d,&n);printf(ns=%fn,fun(n);解析:本题着重考察考生对C 语言中递归算法的掌握情况。本题中的第一个错误:由主函数中可得,fun 函数应返回一个float或double型的值,所以程序中语句fun (int n)应改为float fun (int n)或相同作用的语句。本题中的第二个错误:由题意可知,求1 到n 的和,当n 为1 时和为1,不断递归,以此求出当n 为n 时的和值,所以程序中语句if (n=0)应改为if n=1)。18、请编写一个函数 int un(int *s,int *t,int *k),用来求出数组中值最大的元素在数组
36、中的下标并存放在k 所指的存储单元中,并且将最大值增添在数组的最后。形参t 所指存储单元中存放数组中数据的个数。例如,数组中的数据如下:876 675 896 101 301 401 980 431 451 777则输出最大值的下标为:6,数组中的内容为:876 675 896 101 301 401 980 431 451 777 980注意:部分源程序存在文件prog.c 中。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #define N 80void fun(int *s,int *t,int *k)main() in
37、t aN=876,675,896,101,301,401,980,431,451,777,i,n,mi;n=10;printf(nThe original data:n);for(i=0;i n;i+)printf(%4d,ai);printf(n);fun(a,&n,&mi);printf(The index of max is: %dn,mi);printf(The result :n);for(i=0;i n;i+)printf(%4d,ai);printf(n);解析: 本题的考核点是求数组中最大元素的下标,并将最大值增添在组的最后的算法。提示思路:先通过一指针变量来记录数组中最大值的
38、下标,然后再将最大值放在数组的最后,使数组长度增1。void fun(int *s,int *t,int *k) int i=0;*k=0;/*从前往后顺序比较s 数组中的元素,并将每次比较过程中较大的那个元素的下标存放在指针k 中*/for (i=1;i *t;i+)if (s*k si) *k=i;s*t=s*k;/*将找到的最大值添加在数组的最后*/*t=*t+1;/*数组长度增1*/19、函数fun 的功能是:将字符串tt 中的小写字母改为对应的大写字母,其它字符不变。例如,若输入Ab,cD,则输出AB,CD。#include #include #include char*fun(ch
39、ar tt) int i;for(i=0;tti;i+)/*found*/if(a =tti)&(tti =_1_)/*found*/tti-=_2_;return(tt);main()char tt81;printf(nPlease enter a string:);gets(tt);printf(nThe result string is:n%s,fun(tt);解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。答案:【1】z 【2】3220、下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。y=1-1/(22)+1/(33)-1/(44)+(-1)(m+1
40、)/(mm)例如:m 中的值为5,则应输出0.。请改正程序中的错误,使它能得到正确结果。注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include double fun(int m) double y=1.0;/*found*/int j=1;int i;for(i=2; i =m; i+)j=-1*j;/*found*/y+=1/(i * i);return(y);main() int n=5;clrscr();printf(nThe result is %lfn ,fun(n);解析:(1)错误:int j=1; 正确:double j
41、=1.0;(2)错误:y+=1/(i * i); 正确:y+=j/(i * i);错误1:为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整数。错误2:题中公式是加减相间的运算,通过j来实现。21、请编写函数fun,其功能是:计算并输出给定10 个数的方差: 1 10 0.5S= (Xk-X)2 10 k=1 1 10其中X= Xk10 k=1例如,给定的10 个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=11.。注意:部分源程序在文件prog.c 中。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun
42、 的花括号中填入你编写的若干语句。#include #include double fun(double x10)main() double s, x10=95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0;int i;printf(nThe original data is :n);for(i=0;i 10;i+)printf(%6.1f,xi); printf(nn);s=fun(x);printf(s=%fnn,s);解析: 本题的考核点是c 语言中for 循环语句的使用。提示思路:本题要求计算给定数的方差,方差是指总体各单位的标志值与其算
43、术平均数离差的平方之和,除以单位数后的平方根。根据所给公式,第一个公式中用到X的值,所以先运算出X的值,X是一个求和运算,可通过一个循环累加实现,求s 值也是一个累加的过程,然后对此和开根,开根运算可通过函数sqrt()实现。#include #include double fun(double x10) int i; /*定义变量*/double avg=0.0;double sum=0.0;double abs=0.0;double fc;for (i=0;i 10;i+) /*循环开始*/sum+=xi; /*计算已结定的10 个数之和,并将其值赋给变量sum 中*/avg=sum/10
44、; /*计算已结定的10 个数的平均值,并将其值赋给变量avg*/for (i=0;i 10;i+) /*循环开始*/abs+=(xi-avg)*(xi-avg); /*计算(Xk-X)的平方和,并将其值赋给变量abc*/fc=sqrt(abs/10) ; /*sqrt(abs/10)函数是计算abs/10 的平方根*/return fc; /*返回结果*/22、下列给定程序中,函数fun()的功能是:计算s 所指字符串中含有t 所指字符串的数目,并作为函数值返回。试题程序:#include #include #include #define N 80int fun(char *s,char
45、*t) int n;char *p, *r;n=0;while(*s) p=s;r=t;while(*r)if(*r=*p) r+; _1_;else break;if(*r=_2_)n+;_3_;return n;main()char aN,bN; int m;printf(nPlease enter string a: );gets(a);printf(nPlease enter substring b: ); gets(b);m=fun(a,b);printf(nThe result is :m=%dn,m);解析: 填空1:根据题目的意思,这里应该是把要比较的字符串和原字符串的一部分进
46、行逐个字符的比较,所以指向原字符串的指针p也应该进行每步加一的操作。填空2:根据题目的意思,此处是判断上一步的比较是否与r 指向的完整的字符串相等,如果完全相同,则r应该指向字符串的末尾,即0。填空3:由算法可以看出,这里应该是进行的整个while循环,即应该控制s指针不停的向后移动直到字符串结尾。答案:【1】p+ 【2】0 【3】s+23、给定程序modi.c 中,函数fun 的功能是:求S 的值。设12 42 62 (2k)2S = * * * * 1*3 3*5 5*7 (2k-1)*(2k+1)例如,当k 为10 时,函数值应为:1.。请改正程序中的错误,使它能得出正确结果。注意:不要改动main 函数,#include #include #include /*found*/fun(int k) int n;float s,w,p,q;n=1;s=1.0;while(n =k)w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n+;/*found*/return smain()clrscr();printf(%fn,fun(10);解析: 本题着重考察考生对C 语言中函数定义、引用及参数传递的掌握
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文明驾考试题及答案
- 物业人员考试题及答案
- 封窗美化改造方案
- 物理管理面试题及答案
- 模拟盲人考试题及答案
- 高端酒店客房楼顶花园使用权租赁合同
- 设计院新员工入职培训方案
- 教育功能概述
- 脊柱侧弯的护理病例讨论
- 感觉与挫折教育
- 餐饮革新与市场机遇
- 2025至2030浮式储油卸油装置(FSO)行业发展趋势分析与未来投资战略咨询研究报告
- 交通运输行政执法课件培训
- 中国肉类加工设备行业发展趋势及发展前景研究报告2025-2028版
- 2025年新疆中考数学试卷真题(含答案解析)
- 设备集中采购管理制度
- 高考数学专题-基本不等式求最值的常用方法(解析版)
- 中国上海市酒店行业市场调查研究及投资前景预测报告
- 2025春季学期国开电大本科《管理英语4》一平台机考真题及答案(第四套)
- 2025上海纺织工业职工大学教师招聘考试试题
- DB13T 2770-2018 焊接熔深检测方法
评论
0/150
提交评论