1、函数(一)选择题1、以下正确得说法就是_、 建立函数得目得之一就是 a)提高程序得执行效率 b)提高程序得可读性 c)减少程序得篇幅 d)减少程序文件所占内存2以下正确得函数原型声明形式就是_、 a)double fun(int x,int y) b)double fun(int x; int y) c)double fun(int x, int y); d)double fun(int x,y);3C语言规定,简单变量做实参时,它与对应形参之间得数据传递方式为_、 A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式4C语言允许函数值类型缺省定义,此时
2、该函数值隐含得类型就是_、 a)float b)int c)long d)double5已有以下数组定义与f函数调用语句,则在f函数得说明中,对形参数组array得错误定义方式为_、 int a34; f(a); a)f(int array6) b)f(int array3) c)f(int array4) d)f(int array25)6以下程序得正确运行结果就是_、 #include 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()
3、; printf(%d,%dn,x,y); a)12,2 b)不确定 c)5,25 d)1,127以下正确得描述就是_、 a)C语言得预处理功能就是指完成宏替换与包含文件得调用 b)预处理指令只能位于C源程序文件得首部 c)凡就是C源程序中行首以#标识得控制行都就是预处理指令 d)C语言得编译预处理就就是对源程序进行初步得语法检查8在文件包含预处理语句得使用形式中,当#include后面得文件名用(尖括号)括起时,找寻被包含文件得方式就是_、 a)仅仅搜索当前目录 b)仅仅搜索源程序所在目录 c)直接按系统设定得标准方式搜索目录 d)先在源程序所在目录搜索,再按照系统设定得标准方式搜索9当调用
4、函数时,实参就是一个数组名,则向函数传送得就是_、A、数组得长度B、数组得首地址C、数组每一个元素得地址D、数组每个元素中得值10函数得值通过return语句返回,下面关于return语句得形式描述错误得就是_、A、return 表达式;B、return(表达式);C、一个return语句可以返回多个函数值D、一个return语句只能返回一个函数值11设函数fun得定义形式为void fun(char ch,float x)则以下对函数fun得调用语句中,正确得就是_、A、fun(abc,3、0);B、t=fun(D,16、5);C、fun(65,2、8);D、fun(32,32);12以下程
5、序得输出结果就是_、void reverse(int a,int n) int i,t; for(i=0;in/2;i+) t=ai; ai=an-1-i;an-1-i=t;main( ) int b10=1,2,3,4,5,6,7,8,9,10; int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf( %dn ,s);A、22B、10C、34D、3013阅读下列程序,则运行结果为_、fun( ) static int x=5; x+; return x;main( ) int i,x; for(i=0;i3;i+) x=fun( ); p
6、rintf(%dn,x);A、5B、6C、7D、814若使用一维数组名作函数实参,则以下正确得说法就是_、A、必须在主调函数中说明此数组得大小B、实参数组类型与形参数组类型可以不匹配C、在被调用函数中,不需要考虑形参数组得大小D、实参数组名与形参数组名必须一致15在C语言中,定义函数时函数得类型可以缺省,此时函数得隐含类型就是_、A、voidB、intC、floatD、double16在C语言中,形参得缺省存储类别就是( )、A、autoB、registerC、staticD、extern17以下关于字符串得叙述中正确得就是_、A、C语言中有字符串类型得常量与变量B、两个字符串中得字符个数相同
7、时才能进行字符串大小得比较C、可以用关系运算符对字符串得大小进行比较D、空串一定比空格打头得字符串小18阅读程序,选择程序得运行结果。 #include int Try(int n) if(n0) return (n*Try(n-2); else return 1;void main() int x; x=Try(5); printf(“%dn”,x); A、15B、 120C、 1D、前面三个答案都就是错得(二)填空题1以下程序得运行结果就是 max is 2、 #include max(int x,int y) int z; z=(xy)?x:y; return(z); main() in
8、t a=1,b=2,c; c=max(a,b); printf(max is %dn,c); 2函数gongyu得作用就是求整数num1与num2得最大公约数,并返回该值。请填空。 gongyu(int num1,int num2) int temp,a,b; if(num1(_) num2) temp=num1;num1=num2;num2=temp; a=num1;b=num2; while(_) temp=a%b;a=b;b=temp; return(a);3以下程序得运行结果就是 A+B=9、 int a=5;int b=7; main() int a=4,b=5,c; c=plus(
9、a,b); printf(A+B=%dn,c); plus(int x,int y) int z; z=x+y; return(z); 4以下程序得运行结果就是_、 main() incx(); incy(); incx(); incy(); incx(); incy(); incx() int x=0; printf(x=%dt,+x);incy() static int y=0; printf(ny=%dn,+y); 答案:x=1 y=1 x=1 y=2 x=1 y=35以下程序功能就是求两个正整数得最大公约数。#includemain()int r,m,n,_;scanf(%d%d,&m
10、,&n);if(mn)_r=m%n;while(r) m=n;n=r;r=_;printf(%dn,n);指针(一)选择题1若有以下定义,则对a数组元素得正确引用就是_、 int a5,*p=a; a)*&a5 b)a+2 c)*(p+5) d)*(a+2)2若有定义:int a23,则对a数组得第i行j列元素地址得正确引用为_、 a)*(ai+j) b)(a+i) c)*(a+j) d)ai+j3若有以下定义,则p+5表示_、 int a10,*p=a; a)元素a5得地址 b)元素a5得值 c)元素a6得地址 d)元素a6得值4下面程序段得运行结果就是_、 char *s=abcde; s
11、+=2;printf(%d,s); a)cde b)字符c c)字符c得地址 d)无确定得输出结果5设p1与p2就是指向同一个字符串得指针变量,c为字符变量,则以下不能正确执行得赋值语句就是_、a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);6以下正确得程序段就是_、 a)char str20; b)char *p; scanf(%s,&str); scanf(%s,p); c)char str20; d)char str20,*p=str; scanf(%s,&str2); scanf(%s,p2);7若有说明语句 char a=It is mine; c
12、har *p=It is mine; 则以下不正确得叙述就是_、 a)a+1表示得就是字符t得地址 b)p指向另外得字符串时,字符串得长度不受限制 c)p变量中存放得地址值可以改变 d)a中只能存放10个字符8下面程序得运行结果就是_、 #include #include main() char *s1=AbDeG; char *s2=AbdEg; s1+=2;s2+=2; printf(%dn,strcmp(s1,s2); a)正数 b)负数 c)零 d)不确定得值9下面程序得运行结果就是_、 #include #include fun(char *w,int n) char t,*s1,*
13、s2; s1=w;s2=w+n-1; while(s1s2)t=*s1+;*s1=*s2-;*s2=t; main()char p=1234567; /这里存在错误,通过字符指针无法改变字符串常量得值,因此改为数组 fun(p,strlen(p); puts(p); a)7654321 b)1714171 c)1711717 d)717717110变量得指针,其含义就是指该变量得_、 a)值 b)地址 c)名 d)一个标志11若有语句int *point,a=4;与point=&a;下面均代表地址得一组选项就是_、 a) a, point,*&a b)&*a, &a, *point c)*&p
14、oint,*point,&a d)&a,&*point ,point12若有说明;int *p,m=5,n;以下正确得程序段得就是_、 a)p=&n; b)p=&n; scanf(%d,&p); scanf(%d,*p); c)scanf(%d,&n); d)p=&n; *p=n; *p=m;13、若有以下定义,则对a数组元素得正确引用就是_、 int a5,*p=a;A、*&a5B、a+2C、*(p+2)D、*(a+5)14、下列程序执行后得输出结果就是_、main( ) int a33,*p,i; p=&a00; for(i=1; i*b) num=*b ; if(num*c) num=*
15、c ; printf(输出最小整数:%dn,num); 2下面程序段得运行结果就是 hELLO! 、 char s80,*sp=HELLO!; sp=strcpy(s,sp); s0=h; puts(sp);3下面程序段得运行结果就是 ef 、 char str=abc0def0ghi,*p=str; printf(%s,p+5);4下面程序得功能就是将两个字符串s1与s2连接起来。请填空。 #include main() char s180,s280; gets(s1); gets(s2); conj(s1,s2); puts(s1); conj(char *p1,char *p2) cha
16、r *p=p1; while(*p1) p1+ ; while(*p2)*p1= *p2 ;p1+;p2+; *p1=0; _return 0_;/可以省略不要 5若有定义:int a=2,4,6,8,10,12,*p=a;则*(p+1)得值就是_4_、 *(a+5)得值就是_12_、6若有以下定义:int a23=2,4,6,8,10,12;则a10得值就是_8_、 *(*(a+1)+0)得值就是_8_、7以下程序将数组a中得数据按逆序存放,请填空。 #define M 8 main() int aM,i,j,t; for(i=0;iM;i+) scanf(%d,a+i); i=0;j=M-
17、1; while(ij) t=*(a+i); *(a+i)=*(a+j) ;*(a+j )=t; i+;j-; for(i=0;iM;i+)printf(%3d,*(a+i); 8若有定义:int a35,i,j;(且0=i3,0=j=0;j-)printf(%sn,*(p-);答案:CobledBaseC languagePascal 结构体(一)选择题1C语言结构体类型变量在程序执行期间_、 a)所有成员一直驻留在内存中 b)只有一个成员驻留在内存中 c)部分成员驻留在内存中 d)没有成员驻留在内存中2下面程序得运行结果就是_、 main() struct cmplxint x; int
18、y; cnum2=1,3,2,7; printf(%dn,cnum0、y/cnum0、x*cnum1、x); a)0 b)1 c)3 d)63设有如下定义: struct sk int n; float x; data ,*p; 若要使p指向data中得n域,正确得赋值语句就是_、 a)p=&data、n; b)*p=data、n; c)p=(struct sk *)&data、n; d)p=(struct sk *)data、n;4以下对结构体变量stu1中成员age得非法引用就是_、struct student int age; int num; stu1,*p; p=&stu1; a)s
19、tu1、age b)student、age c)p-age d)(*p)、age5下面对typedef得叙述中不正确得就是_、 a)用typedef可以定义各种类型名,但不能用来定义变量 b)用typedef可以增加新类型 c)用typedef只就是将已存在得类型用一个新得标识符来代表 d)使用typedef有利于程序得通用与移植6以下scanf函数调用语句中对结构体变量成员得不正确引用就是_、 struct pupil char name20; int age; int sex; pup5,*p; p=pup; a)scanf(%s,pup0、name); b)scanf(%d,&pup0、
20、age); c)scanf(%d,&(p-sex); d)scanf(%d,p-age);(二) 填空题1以下程序得运行结果就是_10,x_、 struct n int x; char c; ;main() struct n a=10,x; func(a); printf(%d,%c,a、x,a、c); func(struct n b) b、x=20; b、c=y; 2若有定义: struct num int a; int b; float f; n=1,3,5、0; struct num *pn=&n; 则表达式pn-b/n、a*+pn-b得值就是_12_,表达式(*pn)、a+pn-f得值
21、就是6、000003、 以下程序得运行结果就是 5,3 、struct ks int a; int *b; s4,*p; main() int n=1,i; printf(n); for(i=0;ia,(p+)-a);4、结构数组中存有三人得姓名与年龄,以下程序输出三人中最年长者得姓名与年龄。请在_内填入正确内容。 stati struct man char name20; int age; person=li=ming,18, wang-hua,19, zhang-ping,20 ;main() struct man *p,*q; int old=0 p=person; for( ;pperson+3;p+) if(oldage) q=p; old=p-age ; printf(%s %d, q-name,q-age );