MSE C语言第六章习题.doc_第1页
MSE C语言第六章习题.doc_第2页
MSE C语言第六章习题.doc_第3页
MSE C语言第六章习题.doc_第4页
MSE C语言第六章习题.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

考研网 /下面是研究生考试网为报考GCT软件工程硕士的考生整理的MSE考研复习备考资料。希望这些资料能够给考生一定帮助。在此,预祝考生复习备考顺利!第七章 函数一、单选题1. 以下正确的说法是_。 建立函数的目的之一是: A.提高程序的执行效率 B.提高程序的可读性C.减少程序的篇幅 D.减少程序文件所占内存2. 以下正确的说法是_ 。A.用户若需调用标准函数,调用前必须重新定义B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统根本不允许用户重新定义标准函数D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 3. 在C语言中,以下说法正确的是_。A普通实参和与其对应的形参各占用独立的存储单元B实参和与其对应的形参共占用一个存储单元C只有当实参和与其对应的形参同名时才共占用存储单元D形参是虚拟的,不占用存储单元 4. 若调用一个函数,且此函数中没有RERURN语句,则关于该函数正确的说法是_。A有返回值B回若干个系统默认值C能返回一个用户所希望的函数值D返回一个不确定的值 5. 在C语言中以下不正确的说法是_。A实参可以是常量、变量、或表达式B行参可以是常量、变量、或表达式C实参可以为任意类型D. 形参应与其对应的实参类型一致6. 以下程序有语法性错误,有关错误原因的正确说法是_。 main() int G=5,k;void prt_char(); k=prt_char(G); A句void prt_char();有错,它是函数调用语句,不能用void说明B变量名不能使用大写字母C函数说明和函数调用语句之间有矛盾D数名不能使用下划线7. 以下错误的描述是_。函数调用可以 A出现在执行语句中B现在一个表达式中C作为一个函数的实参D作为一个函数的形参8. 以下正确的说法是_。A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可嵌套C函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套9. 若使用一维数组名作函数实参,则以下正确的说法是_。A须在主调函数中说明此数组的大小B参数组类型与形参数组类型可以不匹配C在被调用函数中,不需要考虑形参数组的大小D实参数组名与形参数组名必须一致10.以下正确的说法是_。如果在一个函数中的复合语句中定义了一个变量,则该变量A在该复合语句中有效B在该函数中有效C在本程序范围中均有效D为非法变量11.以下叙述中正确的是_。A. 局部变量说明为static存储数,其生存期将得到延长B. 全局变量说明为static存储类,其作用域将被扩大C. 任何存储类的变量在未赋初值时,其值都是不确定的D. 形参可以使用的存储类说明符与局部变量完全相同12.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则 _。A. 称为函数的直接递归调用 B. 称为函数的间接递归调用C. 称为函数的循环调用 D. C语言中不允许这样的递归调用13、以下说法中正确的是_。AC语言程序总是从第一个的函数开始执行B在C语言程序中,要调用的函数必须在main()函数中定义CC语言程序总是从main()函数开始执行DC语言程序中的main()函数必须放在程序的开始部分14不正确的描述是_。A. 不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。B. 在定义函数时,必须指定形参的类型。C. 形参和实参之间可以是值传递。D. 数组名可以作为参数进行传递。15函数调用strcat(strcpy(str1,str2),str3)的功能是_。A 将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后B 将字符串str1复制到字符串str2中后再连接到字符串str3之后C 将字符串str1复制到字符串str2中后再复制到字符串str3之后D 将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中16.以下叙述中不正确的是_。A.在不同的函数中可以使用相同名字的变量。B.函数中的形式参数是局部变量。C.在一个函数内的复合语句中定义变量在本函数范围内有效。 D.在一个函数内定义的变量只在本函数范围内有效。17、C语言中,函数值类型得定义可以缺省,此时函数得隐含类型是_。A. void B.int C. float D. double18、下列函数调用中,不正确的是_。A. max(a,b) B. max(3,a+b) C. max(3,5) D. int max(a,b)19、如果限制一个变量只能为本文件所用,必须通过_。A外部变量说明 B. 静态内部变量 C. 静态外部变量 D.局部变量说明20、有以下函数定义:void fun(int n,double x). ,若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是_。A. fun(int y,double m) B. k=fun(10,12.5) C. fun(x,n) D.void fun(n,x)21、若已定义的函数有返回值,则以下关于该函数调用的叙述中,错误的是_。A.函数调用可以作为独立的语句存在 B. 函数调用可以作为一个函数的实参C. 函数调用可以出现在表达式中 D. 函数调用可以作为一个函数的行参22、下列叙述中,错误的一条是_。A.scanf()函数可以用来输入任何类型的多个数据B.数组名作函数参数时,也采用“值传递”方式C.如果行参发生改变,不会改变主调函数的实参值D.函数实参与行参的类型应一致23、在C语言的函数中,_。A.必须有行参 B. 行参必须是变量名 C. 可以有也可以没有行参 D. 数组名不能作行参24、关于return语句,正确的说法是_。A.在主函数和其他函数中均可出现B.必须在每个函数中出现C.可以在同一个函数中多次出现D.只能在除主函数之外的函数中出现一次25、如果在用户程序中使用C语言库函数中的数学函数时,应该在源文件中使用的#include命令是_。A.#include”string.h” B. #include”math.h” C. #include”stdio.h” D. #include”ctype.h”26、已定义以下函数:fun(int *p) return *p该函数的返回值是_。A.不确定的值 B. 行参p中存放的值 C. 行参p所指存储单元中的值 D. 行参p的地址值27、若输入1.5、2.5,以下程序的输出结果为_。Main()float a,b; int c;scanf(“%f,%f”,&a,&b);c=max(a,b);printf(“%d”,c);max(float x, float y)float z;z=xy?x:y;return(z);A. 1.5 B. 2.5 C. 2 D. 3.028、下列程序的输出结果是_。 #includefunc(int x, int y)int z;z=x+y;return z;main()int a=10,b=20,c=30,s;s=func(a-,b+,a+b),c-);printf(“%dn”,s);A. 30 B. 40 C. 60 D. 50 29、下列叙述中,正确的一条是_。Aputchar函数可以输出一个字符串 B在printf(“%c”,c)函数中,2个C是一样C语句printf(“%d%”,1)的输出结果为1 D主函数和其他函数可以互相调用30、有以下程序:程序运行结果为_。 int f(int n)if(n= =1)return 1; else return f(n-1)+1;main()int i,j=0;for(i=1;I3;i+) j+=f(i);printf(“%dn”,j);A. 4 B. 3 C.2 D. 131. 以下正确的说法是 。A用户若需调用标准库函数,调用前必须重新定义B用户可以重新定义标准库函数,若如此,该函数将失去原有含义C系统根本不允许用户重新定义标准库函数D用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调32. 知函数func的定义为:void func ( ) 则函数定义中void的含义是 。A执行函数func后,函数没有返回值 B执行函数func后,函数不再返回C执行函数func后,可以返回任何类型 C以上答案均不正确33. 以下正确的函数首部定义形式是 。A int abc (int x, int y)B int abc (int x;int y)C int abc (int x, int y);D int abc (int x, y)34. 在以下对C语言的描述中正确的是 。A在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参BC语言函数既可以嵌套定义,又可以嵌套调用C函数必须有返回值,否则不能使用函数DC语言程序中有调用关系的所有函数都必须放在同一源程序文件中35. 以下正确的函数定义形式是 。 A int fun (int x, int y) B int fun (int x,y) z=x+y; int z;return z; z=x+y; return z; C int fun (x,y) D int fun(int x, int y)int x, y, z; int z; z=x+y; return z; z=x+y; return z; 36. 以下正确的说法是 。在C语言中A实参和与其对应的形参共占用一个存储单元B实参和与其对应的形参各占用独立的存储单元C只有当实参和与其对应的形参同名时才共占用存储单元D形参是虚拟的,不占用存储单元37. 若调用一个函数,且此函数中没有return语句,则正确的说法是 。该函数A没有返回值 B返回一个不确定的值C能返回一个用户所希望的函数值 D返回若干个不确定值38. 以下正确的说法是 。A实参只能是常量或常量表达式 B形参可以是常量、变量或表达式C形参只能是常量或常量表达式 D形参应与其对应的实参类型一致39. C语言中函数返回值的类型是由 决定的。A调用该函数的主调函数类型 Breturn后边的表达式类型C调用函数时系统临时指定 D定义函数时指定的函数类型40. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 。A地址传递 B由用户指定传递方式C由实参传给形参,再由形参传回给实参 D值传递41. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。Afloat型 B1ong型 Cint型 Ddouble型42. 下面函数调用语句含有实参的个数为 。fun (expl, exp2), (exp3, exp4) );A1 B2 C3 D443. 若用数组名作为函数调用的实参,传递给形参的是 。A数组第一个元素的地址 B数组第一个元素的值C数组中全部元素的值 D数组中全部元素的地址44. 以下正确的说法是 。如果在一个函数中的复合语句中定义了一个变量,则该变量的作用域A在该复合语句范围内有效 B在该函数范围内有效C在本程序范围内均有效 D在本源程序文件范围内均有效45. 以下叙述中不正确的是 。A在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值B在C语言中,在调用函数时,实参和对应形参的类型只需赋值兼容C在C语言中,全局变量的隐含存储类别是自动存储类别D在C语言中,局部变量的隐含存储类别是寄存器存储类别46. 说明语句“ static int i=10; ”中,“i=10”的含义是 。A只说明了一个变量 B与“ int i=10 ”在功能上等价C将变量i初始化为10 D将变量i赋值为1047. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是 。Aextern Bregister Cauto Dstatic48. 在C语言中,对于存储类别为 的变量,只有在使用它们时才占用内存单元Astatic和auto Bregister和externCregister和static Dregister和auto 49. 在一个源文件中定义的外部变量的作用域为 。A本文件的全部范围 B本程序的全部范围C本函数的全部范围 D从定义的位置开始至本文件结束50. 函数swap (int x, int y)可以完成对x值和y值的交换,在运行调用函数中的如下语句后,a和b的值分别是 。 a=2; b=3; swap(a,b);A 3 2 B3 3 C 2 2 D2 351. 在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则 。A称为函数的直接递归调用 B称为函数的间接递归调用C称为函数的循环调用 DC语言中不允许这样的递归调用52. 以下叙述中正确的是 。A局部变量说明为static存储数,其生存期将得到延长B全局变量说明为static存储类,其作用域将被扩大C任何存储类的变量在未赋初值时,其值都是不确定的D形参可以使用的存储类说明符与局部变量完全相同53. 以下程序的正确运行结果是 。main( ) int a=1, i;for (i=0;i3;i+) printf (%4d,fun (a);int fun (int x); int b=0;static int c=3;b+; c+;return(x*b*c);A4 4 4 B4 10 18C4 8 12 D4 5 654. 对于以下递归函数f,调用f(4),其返回值为 。int f (int n) return f (n-1)+n; A10 B11 C 0 D以上均不是55. 以下程序的正确运行结果是 。 #include int abc (int u, int v); main ( ) int a=24, b=16, c;c=abc(a, b);printf (“ %dn”, c); int abc (int u, int v) int w;while ( v) w=u%v; u=v; v=w;return u;A4 B6 C 5 D856. 以下程序的正确运行结果是 。 void num() extern int X, Y; int a=15,b=10; X=a-b; Y=a+b; int X, Y; main() int a=7,b= 5; X=a+b; Y=a-b; num( ); printf(%d,%dn,X, Y); A 12,2 B不确定 C 1,12 D5,25 57. 以下程序的正确运行结果是 。 #inc1ude main ( ) int k=4,m=1, n; n=fun (k,m); printf( %d, n);n=fun (k,m); printf( %dn, n); int fun (int a, int b) static int m=0, n=2; n+= m+1; m=n+a+b;return (m); A8,16 B8,17 C 8,20 D8,858. 以下程序的正确运行结果是 。 #Iinclude int try ( ) static int x=3;x+;return x; main ( ) int a, x; for ( a=0; a=2; a+)x=try ( ); printf (“%dn”, x); A3 B4 C5 D 659. 以下程序的正确运行结果是 。 #Iinclude int f (int a ) int b=0; static int c=3;a=c+, b+;return a; main ( ) int a=2, i, k; for ( i=0; i2; i+)k=f ( a+); printf (“%dn”, k); A3 B0 C5 D460. 以下程序的正确运行结果是 。 #Iinclude int d=1;int fun (int a ) int d=5;d+=a+;printf (“%d “, d); main ( ) int a=3; fun (a);d+=a+;printf (“%d “, d); A8 4 B9 6 C9 4 D 8 5二、读程序,写运行结果一般题1.以下程序运行结果是_main() int a=4,b=5,c;c=plus(a,b); printf(“A+B=%dn”,c);plus(int x,int y) int z;z=x+y;return(z);2.以下程序运行结果是_int max(int x, int y) int z; z=xy? x:y; return(z); main()int a=3,b=10,c;c=max(3,10);printf(“%d”,c);3.以下程序运行结果是_main() int a=2,b=3; change(a,b); printf(%d,%d,a,b);change(int a,int b) a=10;b=20; printf(,%d,%d,a,b); 4.以下程序的运行结果是_int a=3,b=5;max(a,b)int c;c=ab?a:b;return(c);main() int a=8; printf(“%d”,max(a,b);5.以下程序的运行结果是_main() float a=1.5,b=2.5,c;c=max(a,b); printf(Max is %f,c);max(float x, float y)float z;z =xy? x:y;return(z); 6.以下程序的运行结果是_main( ) int i=2,p;p=f(i,+i);printf(%d,p); int f(int a,int b) int c;if(ab) c=1;else if(a= =b) c=0;else c=-1;return(c);7.以下程序的运行结果是_#include stdio.hf() int a=0; static int b=0; a+; b+; printf(a=%d,b=%d,a,b);main() f(); f(); f();8以下程序的运行结果是_int f(int x, int y)return (y-x)*x; main()int a=3,b=4,c=5,d;d=f(f(3,4),f(3,5);printf(“%dn”,d);9以下程序的运行结果是_void fun(int x, int y)x=x+y;y=x-y;x=x-y;main()int x=2,y=3;fun(x,y);printf(“%d,%dn”,x,y); 10. 执行完下列语句段后,i值为:_ _int i;int f (int x) static int k = 0;x+=k+;return x;i=f (2);i=f (3);12. 执行完下列语句段后,i值为:_ _int i;int f (int x) return (x0)? x*f(x-1):3); i=f(f(1);13. 以下程序运行后的输出结果是 int f (int a) return a%2; main( ) int s8=1,3,5,2,4,6,i,d=0; for (i=0; f(si) ; i+) d+=si; printf(%dn,d); 14. 有以下程序运行后的输出结果是_ _ int f (int n) if (n= =1) return 1; else return f(n-1)+1;main()int i,j=0;for(i=1; i3;i +) j+=f (i);printf(%dn,j);15. 以下程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:ex1 abcd efg 10则运行的结果是_ _#include main (int argc, char *argv ) int i,len=0; for(i=1; iy)t=x;x=y;y=t; if(xz)t=z;z=x;x=t; if(yz)t=y;y=z;z=t; printf(%d %d %dn,x,y,z);17. 以下程序的输出的结果是 int x=3;main ( ) int i; for (i=1; ix; i+) incre( );incre() static int x=1;x*=x+1;printf( %d,x);18. 以下程序的输出的结果是 #include main ( ) int x=1;void f1 ( ), f2 ( );f1 ( ); f2 (x);printf (“%x=%dn”, x); void f1 ( ) int x=3;printf (x=%dt”,x); void f2 (int x) printf(“x=%dt”, +x); 19. 以下程序的功能是 fun (int n) int a, b, c;a=n/100; b=n%100/10; c=n%10;if (a*100+b*10+c=a*a*a+b*b*b+c*c*c) return n;else return 0; main ( ) int n, m;for (n=100; n1000;n+) k=fun(n); if (k!=0) printf (“%d ”,k); 20以下程序的运行结果是_main()increment();increment();increment();increment() static int x=0;x+=1; printf(“%d ”,x);提高题21. 以下程序的运行结果是 main( ) int a5=9,6,8,3,-1,i,t,j,p; sort(a); for (i=0;i=4;i+) printf (%d,ai); sort (int a ) int i,j,t,p; for (j=0;j4;j+i) p=j; for (i=j+1;i=4;i+) if (aiap)p=i; t=ap;ap=aj;aj=t; 22. 以下程序的运行结果是 int a=5,b=7;main( )int a=4,b=5,c; c=plus(a,b); printf (A+B=%dn,c);plus(int x,int y);int z; z=x+y; return z;23. 以下程序的运行结果是 int fac(int n)static int f=1; f=f*n; return f; main ( )int i;for (i=1;i=5;i+) printf (%d!=%dn,i,fac(i);24. 以下程序的运行结果是 . long fib(int g) switch(g) case 0:return 0; case 1:case 2:retuen 1; return(fib(g-1)+fib(g-2); main( )long k; k=fib(7); prinrf(k=%dn,k); 25. 以下程序的运行结果是 fun ( int a 4, int m) int k, j, s=0;for (k=0; k3; k+) for (j=0; j4; j+) if ( akj0;k-) printf(“%d”,bk-1); int fun (int a) int c;c=a%2;return c; 27此程序的功能是_ _。#define N 5main() int aN=9,6,5,4,1,i,temp;printf(n original array:n);for(i=0;iN;I+)printf(%4d,ai);for(i=0;itemp=ai;ai=aN-i-1;aN-i-1=temp;printf(n sorted array:n);for(i=0;i0) fun(x/2);main()fun(6);30以下程序运行后输出结果是_int f(int a,int n)if(n1)return a0+f(&a1,n-1);else return a0;main()int aa3=1,2,3,s;s=f(&aa0,3);printf(“%dn”,s);31以下程序,当实参为2,3时,运行后输出结果是_void x(int a,int n)int a,n,count=1;long int sn=0,tn=0;while(count=n)tn=tn+a;sn=sn+tn;a=a*10;+count;printf(%ldn,sn);32以下程序运行后输出结果是_main()int i,j,k;for(i=0;i=3;i+)for(j=0;j=2-i;j+)printf( );for(k=0;k=2*i;k+)printf(*);printf(n);for(i=0;i=2;i+)for(j=0;j=i;j+)printf( );for(k=0;k=4-2*i;k+)printf(*);printf(n);33以下程序运行后输出结果是_void f ( )float n,s=0,t=1;for(n=1;n=3;n+)t*=n;s+=t;printf(fn,s);34以下程序运行后输出结果是_main()int i; for(i=0;i5;i+)printf(%dn,i,fact(i);int fact(int j) int sum;if(j= =0)sum=1;elsesum=j*fact(j-1);return sum;35有以下程序,输出结果是_int a=2;int f(int *a)return (*a)+;main()int s=0; int a=5;s+=f(&a); s+=f(&a);printf(“%dn”,s);三、完善程序题一般题1判断一个数是否为素数。Void f( int m)int m,i,k;k=_ _;for(i=2;_i=_;i+)if(_)break;if(_)printf(“是素数”);else printf(“非素数”);2打印出所有的“水仙花数void f( int n)int i,j,k;i=n/100;j=_ _k=n%10;if(_)printf(%5d,n);3. 以下函数的功能是计算s=1+1/2!+1/3!+1/n!,请填空。double fun (int n) double s=0.0,fac=1.0;int i;for(i=1; i=n; i+) fac=fac * ; s=s+fac;return s;4. 下面的函数sum (int n) 完成计算1+2+3+n的累加和,请填空 sum (int n) int i,_;for(i=1;i=n;i+) _return (sum) 5有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。void f( )int n,t,number=20;float a=2,b=1,s=0;for(n=1;_;n+)s=s+a/b;_;printf(sum is %9.6fn,s);6求100200之内的素数#include”math.h”main()for ( m=101;m=200;m+) _sushu(int m)int k,i;_for(i=2;i=k+1)printf(“%d”,m);7.以下函数求3*3矩阵的转置矩阵。请填空void fun(int array33) int i,j,t;for(i=0; _;i+)for(j=i+1; ;j+)t=arrayij;arrayij=arrayji;arrayji=t;8.编写函数实现三个数由小到大排序。请填空void f(int x ,int y, int z) if (xy)_ if(xz)_ if(yz)_ printf(%d %d%dn,x,y,z);9. 求1+2!+3!+.+X!的和void fun(int x )float n,s=0,t=1;for(n=1;_; n+)_s+=t;printf(%en,s);10. 利用递归方法求5!#include stdio.hmain()int i;int fact();for(i=0;i5;i+)printf(40:%d!=%dn,i,fact(i);int fact(j)int j;int sum;if(j= =0)_elsesum=j*_;return sum;11. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。Void fun(long x)long ge,shi,qian,wan; wan=x/10000;qian=_shi=_ge=x%10;if (_)printf(this number is a huiwenn);elseprintf(this number is not a huiwenn);12. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 问第一个人,他说是10岁。求第五个人年龄。a

温馨提示

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

评论

0/150

提交评论