C语言2级20到真题及详解.doc_第1页
C语言2级20到真题及详解.doc_第2页
C语言2级20到真题及详解.doc_第3页
C语言2级20到真题及详解.doc_第4页
C语言2级20到真题及详解.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【真题1】 函数fun 的功能是进行数字字符转换。若形参ch 中是数字字符09,则0转换成9,1转换成8,2转换成7,9转换成0;若是其它字符则保持不变;并将转换后的结果作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存在考生文件夹下的BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#include /*found*/_【1】_ fun(char ch)/*found*/if (ch=0 & _【2】_)/*found*/return 9 - (ch - _【3】_ );return ch;main() char c1, c2;printf(nThe result :n);c1=2; c2 = fun(c1);printf(c1=%c c2=%cn, c1, c2);c1=8; c2 = fun(c1);printf(c1=%c c2=%cn, c1, c2);c1=a; c2 = fun(c1);printf(c1=%c c2=%cn, c1, c2);解析: 由主函数中的语句c2=fun(c1);可知:函数fun 的返回类型为字符,故第一个空应填char;在题面中要求对数字字符进行转换,故第二空的目的是判断字符ch 是否为一数字字符,即ch 是否在09之间所以第二个空应填ch=9或其等效形式;第三空处语句的目的是返回转换后的结果,即返回一字符,其所对应的数字与转换前字符所对应的数字的和为9,故第三空应填0或其等效形式。答案:【1】char 【2】ch=9 【3】0【真题2】 给定程序modi.c 中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为au,则将其转换为其后的第5 个字母;若小写字母为vz,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。 请改正函数fun 中指定部位的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!#include #include char fun(char c) if(c=A & c=a & c=v & c=z)c=c-21;return c;main() char c1, c2;printf(nEnter a letter(A-Z): ); c1=getchar();if(isupper(c1) c2=fun(c1);printf(nnThe letter %c change to %cn, c1,c2);else printf(nEnter (A-Z)!n);(2011年2月)解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。提示思路:先判断输入的字母是否是大写字母,若是大写字母,将其转化为相应的小写字母,方法是该大写字母对应的ASCII码值加上32就是其小写字母的ASCII码值,再判断该小写字母是否是au,若是转化其后的第5 个字母,即c=c+5;。若该小写字母是vz,则将其ACSII码值减去21,转换后的小写字母作为函数值返回。本题中的第一个错误:C 语言中,大写字母的ASCII码值比相应的小写字母的ASCII码值小32,所以程序中语句c=c-32;应改为c=c+32;或相同作用的语句。本题中的第二个错误:C 语言中,字母从az 或AZ 的ASCII码值是依次递增的,所以将其转换为其后的第5 个字母应该是c=c+5;或相同作用的语句。【真题3】 请编写一个函数fun(char *s),函数的功能是把字符串中所有的字母改写在该字母的下一个字母,最后一个字母z 改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。 例如,原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:No.123yzA。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include #include #include #define N 81fun(char *s)main() char aN;clrscr();printf(Enter a string:);gets(a);printf(The original string is :);puts(a);fun(a);printf(The string after modified: );puts(a);(2011年2月)解析: 本题的考核点是c语言中的循环语句和条件判断语句的使用。 提示思路:从本题的要求来看,我们应该采用外循环内条件判断的算法。本参考函数使用for 循环从头到尾扫描字符串,并在扫描时进行条件判断,对z,Z和其它字符进行不同的处理。fun (char *s) int i, length;length = strlen(s);/*求得字符串s 的长度*/for(i = 0; i=a & si=A &si=Z)/*判断字符si是否为大小写的英文字母*/continue;switch(si)case z:/*假如si为小写字母z,则改写成小写字母a*/si = a; break;case Z:/*假如si为大写字母Z,则改写成大写字母A*/si = A; break;default:/*假如si为除大小写字母Z 和z 以外字母,则直接改写成该字母的下一个字母*/si = si + 1; break;函数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);(2011年2月)解析: 本题的考核点是计算n 所有因子的算法。解题思路:判断因子的方法是:能被n整除的数。由于题意中指明需将1和n除外,所以循环的范围应从2至n-1。答案:1: i 2: s+i答案:【1】i 【2】s+i【真题2】 已知一个数列的前三项分别为0,0,1, 以后的各项都是其相邻的前三项之和。给定程序modi.c 中函数 fun 的功能是:计算并输出该数列前n项的平方根之和sum。n 的值通过形参传入。 例如,当n10 时,程序的输出结果应为:23.197745。 请改正函数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.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) );(2011年2月)解析: 本题的考核点是C语言中的函数的入口参数和类型转换。C 语言规定,凡不加类型说明的函数,一律自动按整型处理。如果函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型。根据题意,函数返回值为实型,所以第一处错误fun(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)+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); (2011年2月)解析:int fun(int t)int a=1,b=1,c=0,i; /*a 代表第n-2 项,b 代表第n-1 项,c 代表第n 项*/*如果求得的数c 比指定比较的数小,则计算下一个Fibonacci 数,对a,b 重新置数*/do c=a+b;a=b;b=c;while (c t); /*如果求得的数c 比指定比较的数大时,退出循环*/c=a; /*此时数c 的前一个Fibonacci 数为小于指定比较的数的最大的数*/return c;【真题1】 下列给定程序中,函数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,b=8;printf(%d %dn ,a,b);b=fun(_3_,b);printf(%d %dn ,a,b);(2011年2月)解析: 填空1:根据题目的意思,这里应该是声名一个新的变量t,由后面的赋值语句以及返回语句可以明白这个变量应该是整型的(因为函数的返回值类型是int)。填空2:根据题目的意思,此处是子函数的返回语句,由C 语言的知识,每个语句的结尾都应该使用; 。填空3:fun()函数的调用方式说明fun()函数的参数应当为指针类型,即应该把变量的地址作为参数传递(符号&是取地址操作)。答案:【1】int 【2】; 【3】&a【真题2】 给定程序modi.c 中函数fun的功能是:求两个形参的乘积和商数,并通过形参返回调用程序。 例如输入:61.82 和 12.65,输出为: c =782.023000 d = 4.886957。 请改正 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 ) ;printf ( c = %f d = %fn , c, d );(2011年2月)解析: 本题的考核点是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 函数后两个参数应为长浮点型数据的指针,因此应该把程序中x = a * b; y = a / b;语句改为*x = a * b; *y = a / b;或相同作用的语句。【真题3】 请编一个函数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() float 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;return h; 【真题1】 已知一个数列从0 项开始的前3 项:0,0,1,以后的各项都是其相邻的前3 项之和。下列给定的程序中,函数fun()的功能是:计算并输出该数列前n 项的平方根之和sum。n 的值通过形参传入。例如,当n=10 时,程序的输出结果应为23.197745。 试题程序:#include #include #include double 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.0;for (k=4;k =n;k+) s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;_2_;return _3_;main()int n;printf(Input N=);scanf(%d,&n);printf(%fn,fun(n);(2011年2月)解析: 填空1:从C 语言的学习中我们知道,下面的运算使用了数学函数sqrt,所以在前面的头文件中应该包含数学函数头文件math.h。填空2:根据题目的意思,此处是更新数列中将要进行计算的三项,其中前两项就是前一步计算中的后面两项,第三项应该是刚才计算产生的,即变量s。填空3:由算法可以看出,这里应该是把子函数的计算结果返回给主函数,需要返回的就是每次进行累加的变量sum。答案:【1】math.h 【2】s2=s 【3】sum【真题2】 给定程序modi.c 中,函数fun 的功能是:把主函数中输入的3 个数,最大的放在a 中,最小的放在c中。 例如,输入的数为:55 12 34, 输出结果应当是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使它能得出正确结果。注意:不要改动main 函数,#include void fun(float *p,float *q,float *s) /*found*/float *k;if (*p *q) k=*p;*p=*q;*q=k;/*found*/if (*s *p) k=*s;*s=*p;*p=k;if (*q *s) k=*q;*q=*s;*s=k;main() float a,b,c;printf(Input a b c: ); scanf(%f%f%f,&a,&b,&c);printf(a=%4.1f,b=%4.1f,c=%4.1fnn,a,b,c);fun(&a,&b,&c);printf(a=%4.1f,b=%4.1f,c=%4.1fnn,a,b,c);(2011年2月)解析: 本题着重考察考生对C 语言中一些简单算法的掌握情况。本题中的第一个错误:由程序可知,变量k应为一个简单变量,它是用来交换两个数的值,所以程序中语句float *k;应改为float k;本题中的第二个错误:程序中应使得*p中的数最大,*s 中的数最小,当*s 中的数大于*p的值时,应交换二者的值,所以程序中语句if (*s*p)或相同作用的语句。【真题3】 请编写函数fun,其功能是:计算并输出S=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5)例如,在主函数中从键盘给n 输入20 后,输出为:s=534.188884。 注意:要求n 的值大于1 但不大于100。 部分源程序在文件prog.c中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include double fun(int n)main() int n; double s;printf(nnInput n: ); scanf(%d,&n);s=fun(n);printf(nns=%fnn,s);(2011年2月)解析: 本题的考核点是c 语言中的基本算法和sqrt()函数的使用。 解题思路:本题要求计算并输出多项式的值,通式为:1+20.5+30.5+n0.5,在给出的参考程序中,由于函数的返回值为双精度型,所以定义变量fac、sum为双精度型,再使用sqrt()函数求出每一个多项式的值,最后通过sum+=fac;计算出所有多项式之和,最终返回。#include #include double fun(int n)int i; /*定义一个整形变量*/double fac=1.0; /*定义变量fac、sum 为双精度型*/double sum=1.0;if (n 1&n =100)for(i=2;i =n;i+)fac+=sqrt(i); /*使用sqrt()函数求出每一个多项式的值*/sum+=fac; /*通过sum+=fac;计算出所有多项式之和*/return sum; 【真题1】 给定程序中,函数fun()的功能是:求输入的两个数中较小的数。 例如:输入5 10,结果为min is 5。 请改正fun()程序中的错误,使它能得出正确的结果。 试题程序:#include #includeint fun(int x,_1_) int z;z=x y_2_x:y;return(z);main()int a,b,c;scanf(%d,%dn,_3_);c=fun(a,b);printf(min is %d,c);(2011年2月)解析: 填空1:根据题目的意思,这里应该是子函数的参数声明部分,C语言中规定,在函数的形参中不允许出现int x,y 之类的语句,必须指定每一个参数的类型,所以不能直接写y。填空2:根据题目的意思,此处是使用三目运算符?比较两个数的大小,使用规则是如果运算符前面的表达式中哪个变量成立,则整个式子就取运算符后面的哪个变量。填空3:由算法可以看出,此处是输入变量a和b的值,因为使用了scanf函数,所以应该使用符号&,注意两个变量之间的,不能省略。答案:【1】int y 【2】? 【3】&a,&b【真题2】 下列给定程序中函数fun()的功能是计算1/n!的值。 例如:给n 输入5,则输出0.008333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include /*found*/int fun(int n) double result =1.0;if(n=0)return 1.0;while(n 1 & n 170)/*found*/result *=n+ ;result=1/result;return result;main()int n;printf(Input N:);scanf(%d,&n);printf(n1/%d!=%lfn,n,fun(n);(2011年2月)解析: (1)错误:int fun(int n) 正确:double fun(int n)(2)错误:result *=n+ ; 正确:result *=n- ;错误1:函数的返回值为实型数据,所以函数的返回类型应为double。错误2:根据阶乘的概念,从n 开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。【真题3】 请编写一个函数int fun(int x),它的功能是:判断整数x 是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。 例如:输入整数5,5的平方数是25,5 是25 中右侧的数,所以5 是同构数。x 的值由主函数从键盘读入,要求不大于100。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include int fun(int x)main() int x,y;clrscr();printf(nPlease enter a integernumbers:);scanf(%d,&x);if(x 100)printf(data error !n);exit(0);y=fun(x);if (y) printf(%d YESn,x);else printf(%d NO!n,x);(2011年2月)解析: 本题的考核点是C语言中的数字运算。 根据同构数的定义,小于10 的同构数的平方减同构数本身与10 取模结果一定为0,同样位于10 和100之间的同构数 的平方减同构数本身与100 取模结果也一定为0。我们只需将取模的结果取反,就可以在是同构数时返回1,在非同构数时返回0。int fun ( int x ) if (x 10)return !(x * x - x) % 10);/*假如x 的平方减去x 除10的余数为0 时,则函数返回1*/elsereturn !(x * x - x) % 100); 【真题1】 下列给定程序中,函数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,b=8;printf(%d %dn ,a,b);b=fun(_3_,b);printf(%d %dn ,a,b);(2011年2月)解析: 填空1:根据题目的意思,这里应该是声名一个新的变量t,由后面的赋值语句以及返回语句可以明白这个变量应该是整型的(因为函数的返回值类型是int)。填空2:根据题目的意思,此处是子函数的返回语句,由C 语言的知识,每个语句的结尾都应该使用; 。填空3:fun()函数的调用方式说明fun()函数的参数应当为指针类型,即应该把变量的地址作为参数传递(符号&是取地址操作)。答案:【1】int 【2】; 【3】&a【真题2】 给定程序modi.c 中函数fun的功能是:求两个形参的乘积和商数,并通过形参返回调用程序。 例如输入:61.82 和 12.65,输出为: c =782.023000 d = 4.886957。 请改正 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 ) ;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 函数后两个参数应为长浮点型数据的指针,因此应该把程序中x = a * b; y = a / b;语句改为*x = a * b; *y = a / b;或相同作用的语句。【真题3】 请编一个函数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() float 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;return h; 真题1】 下列给定程序中,函数fun()的功能是:求整数x 的y 次方的低3 位值。例如,整数5 的6 次方为15625,此值的低3 位值为625。 试题程序:_1_long fun(int x, int y, long *p) int i;long t=1;for(i=1;_2_;i+)t=t*x;*p=t;_3_;return t;main() long t, r; int x, y;printf(nInput x and y: ); scanf(%1d%1d,&x,&y);t=fun(x,y,&r);printf(nnx=%d, y=%d,r=%ld, last=%ldnn ,x, y,r,t);(2011年2月)解析: 填空1:由语言的学习我们知道这里是一个头文件的定义,定义头文件要用关键字include,而且要用#开头。填空2:这里考查的是循环结束判断语句。由题意知,这个循环是计算x的y次幂的,而i从1 开始,要计算y次,当然就要让i自加y次,于是这里用=,而不是 。填空3:题目的意思是求幂的最后3 位数字,而求一个十进制数的后几位的最常用的办法莫过于使用对其取余的操作。答案:【1】#include 【2】i =y 【3】t=t%1000;【真题2】 给定程序modi.c 中函数 fun 的功能是:求广义菲玻那级数的第n 项。1,1,1,3,5,9,17,31, 项值通过函数值返回 main( )函数。 例如,若n = 15,则应输出: 2209。 请改正函数fun 中的语法错误,使它能计算出正确的结果。 注意:不要改动 main 函数,#include #include long fun ( int n ) long a=1, b=1, c=1, d=1, k;/*found*/for (k=4,k =n,k+) d = a+b+c;/*found*/a=b,b=c,c=dreturn d;main( ) int n = 15;clrscr( );printf( The value is: %ldn, fun ( n ) );(2011年2月)解析: 本题的考核点是C语言的一些基本用法。for(k=4,k =n,k+) 应改为for(k=4;k =n;k+) 。C 语言规定:每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。因此,a=b,b=c,c=d 应改为a=b;b=c;c=d;或相同作用的语句。【真题3】 编写函数fun,它的功能是:求Fibonacci 数列中大于s的最小的一个数,结果由函数返回。其中Fibonacci 数列F(n)的定义为: F(0)0,F(1)1F(n)F(n1)F(n2) 例如:当s = 1000 时,函数值为:1597。 注意:部分源程序存在文件prog.c 中。 请勿改动主函数main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include #include int fun( int s)main() /* 主函数 */ int n;clrscr(); n=1000;printf(n = %d, f = %dn,n, fun(n); (2011年2月)解析: 本题的考核点是循环语句的应用。 提示思路:在 Fibonacci 数列中,每一项的值都是前两项之和。设置一个中间变量f2,用来置放推出的最小数,所以可以用递推法求出大于s 的最小的一个数。 /*Fibonacci 数列是这么一个数列0,1,1,2,3,5,8,13从它的第三项开始每一项的值都是其紧接着的前两项的和。本也是采用函数的嵌套调用来完成,但若用嵌套调用方式会较难理解。它要求求出比s 大的最小一个数。在本题的编程中采用的是while(f2 =s)当它的条件这假时,即得到了第一个比t大的数。*/int fun (int s)int f1=0,f2=1,temp;while(f2 =s) temp=f2;f2=f1+f2;f1=temp; return f2;【真题1】 给定程序的功能是求出1 到1000 之内能被7 或11 整除但不能同时被7 和11 整除的所有整数放在数组a 中,通过n 返回这些数的个数。#include void fun(int *a, int *n) int i, j = 0 ;for(i = 1 ; i = 1000 ; i+) /*found*/if(i % 7 = 0) | (i % 11 = 0) & i % 77 != 0)aj+ = _1_ ;/*found*/*n = _2_ ;main() int aa1000, n, k ;/*found*/fun ( _3_ ) ;for ( k = 0 ; k n ; k+ )if(k + 1) % 10 = 0) printf(n) ;else printf(%5d, aak) ;解析: 本题的考核点是循环语句和整除算法。解题思路:使用循环语句使循环变量依次从1 递增到1000,并将每个值与7和11 进行取余比较,将符合条件的值存放入数组中并统计符合条件的值的个数。本评析仅供参考。答案:【1】i 【2】j 【3】 a,&n【真题2】 给定程序modi.c 中,函数fun 的功能是:实现两个整数的交换。 例如给a 和b 分别输入:60 和65,输出为:a=65 b=60 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main 函数,#include #include /*found*/void fun(int a,b)int t;/*found*/t=b;b=a;a=t;main()int a,b;clrscr();printf(Enter a,b:);scanf(%d%d,&a,&b);fun(&a,&b);printf(a=%d b=%dn,a,b);(2011年2月)解析: 本题的考核点是函数的入口参数和基本算法。函数的参数表是由逗号分隔的变量表,变量表由变量类型和变量名组成,与普通的变量说明不同,函数参数必须同时具有变量类型和变量名,程序void fun( int a, b )语句中第二个函数参数没有变量类型,是错误的;另外,从主函数里的fun( &a, &b);语句可以看出,fun 函数的两个参数应为整型指针。综上所述,应该把void fun ( int a, b )语句改为void fun(int *a,int *b)或相同作用的语句。所以,fun 函数里的t=b;b=a;a=t;语句也是错误的,应该改为t=*b;*b=*a;*a=t;或相同作用的语句。本评析仅供参考。【真题3】 请编写函数fun,对长度为7 个字符的字符串,除首、尾字符外,将其余5 个字符按降序排列。例如,原来的字符串为CEAedca,排序输出为CedcEAa。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include #include int fun(char *s,int num)main() char s10;clrscr();printf(输入7 个字符的字符串:);gets(s);fun(s,7);printf(n%s,s); (2011年2月)解析: 本题的考核点是对除首、尾字符外的其它字符按降序排列的算法。 提示思路:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论