函数、指针与结构体练习习题-参考答案_第1页
函数、指针与结构体练习习题-参考答案_第2页
函数、指针与结构体练习习题-参考答案_第3页
函数、指针与结构体练习习题-参考答案_第4页
函数、指针与结构体练习习题-参考答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

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)double 5已有以下数组定义和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(

3、) int a=7,b=5; x=a+b; y=a-b; num(); 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后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是

4、_. a)仅仅搜索当前目录 b)仅仅搜索源程序所在目录 c)直接按系统设定的标准方式搜索目录 d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索9 当调用函数时,实参是一个数组名,则向函数传送的是_.A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值10函数的值通过return语句返回,下面关于return语句的形式描述错误的是_. 表达式;(表达式);C.一个return语句可以返回多个函数值D.一个return语句只能返回一个函数值11设函数fun的定义形式为void fun(char ch,float x)则以下对函数fun的调用语句中,正确的是

5、_.("abc",;=fun('D',;('65',;(32,32);12以下程序的输出结果是_.void reverse(int a,int n) int i,t; for(i=0;i<n/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;i<10;i+)s+=bi; printf(" %dn ",s);B.1013阅读下列程序,则运行结果为_.fun( )

6、 static int x=5; x+; return x;main( ) int i,x; for(i=0;i<3;i+) x=fun( ); printf("%dn",x);B.614若使用一维数组名作函数实参,则以下正确的说法是_.A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调用函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致15在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是_.16在C语言中,形参的缺省存储类别是( ).17以下关于字符串的叙述中正确的是_.语言中有字符串类型的常量和变量

7、B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格打头的字符串小18阅读程序,选择程序的运行结果。 #include <> int Try(int n) if(n>0) return (n*Try(n-2); else return 1;void main() int x; x=Try(5); printf(“%dn”,x); B. 120C. 1D.前面三个答案都是错的(二)填空题1以下程序的运行结果是 max is 2. #include<> max(int x,int y) int z; z=

8、(x>y)x:y; return(z); main() int 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以下程序的运行结果

9、是 A+B=9. int a=5;int 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);  4以下程序的运行结果是_. main() incx(); incy(); incx(); incy(); incx(); incy(); incx() int x=0; printf("x=%dt",+x);incy() static int y=0; printf("ny=%dn&qu

10、ot;,+y); 答案:x=1 y=1 x=1 y=2 x=1 y=35以下程序功能是求两个正整数的最大公约数。#include<>main()int r,m,n,_;scanf("%d%d",&m,&n);if(m<n)_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行

11、j列元素地址的正确引用为_. a)*(ai+j) b)(a+i) c)*(a+j) d)ai+j 3若有以下定义,则p+5表示_. int a10,*p=a; a)元素a5的地址 b)元素a5的值 c)元素a6的地址 d)元素a6的值 4下面程序段的运行结果是_. char *s="abcde" s+=2;printf("%d",s); a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果 5设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句

12、是_.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" char *p="It

13、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下面程序的运行

14、结果是_. #include <> #include <> fun(char *w,int n) char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2)t=*s1+;*s1=*s2-;*s2=t; main()char p="1234567" 1714171 c a)值 b)地址 c)名 d)一个标志 11若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_. a) a, point,*&a b)&*a, &a, *point c)*&a

15、mp;point,*point,&a d)&a,&*point ,point 12若有说明;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.*&a5+2C.*(p+2)D.*(a+5)14.下

16、列程序执行后的输出结果是_.main( ) int a33,*p,i; p=&a00; for(i=1; i<9; i+) pi=i+1; printf("%dn",a12);B.6D.随机数15.下面程序段的运行结果是_.(该题题目有错,而且考的内容偏了,是一题面试题)char *p="abcdefgh"p+=3;printf("%dn",strlen(strcpy(p,"ABCD");B.12(二)填空题1以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 #include &

17、quot;" main() int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z; printf("输入3个整数:"); scanf("%d%d%d",a,b,c); printf("%d,%d,%dn",*a,*b,*c); num=*a; if(*a>*b) num=*b ; if(num>*c) num=*c ; printf("输出最小整数:%dn",num);  2下面程序段的运行结果是 hELLO! . char s80,*

18、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) ch

19、ar *p=p1; while(*p1) p1+ ; while(*p2)*p1= *p2 ;p1+;p2+; *p1='0' _return 0_;*(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;i<M;i+) scanf("%d",a+i); i=0;j=M-1; while(i<j) t=*(a+i); *(a+i

20、)=*(a+j) ;*(a+j )=t; i+;j-; for(i=0;i<M;i+)printf("%3d",*(a+i);  8若有定义:int a35,i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用五种形式引用。它们是: (1)aij (2)*(ai+j) (3)*(*(a+i)+j ); (4)(*(a+i)j (5)*( a +5*i+j) 9下面程序的运行结果是_. main() char *a="Pascal","C language","dB

21、ase","Coble" char (*p); int j; p=a+3; for(j=3;j>=0;j-)printf("%sn",*(p-);答案:CobledBaseC languagePascal 结构体(一)选择题1C语言结构体类型变量在程序执行期间_. a)所有成员一直驻留在内存中 b)只有一个成员驻留在内存中 c)部分成员驻留在内存中 d)没有成员驻留在内存中2下面程序的运行结果是_. main() struct cmplxint x; int y; cnum2=1,3,2,7; printf("%dn"

22、,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=& b)*p=; c)p=(struct sk *)& d)p=(struct sk *);4以下对结构体变量stu1中成员age的非法引用是_.struct student int age; int num; stu1,*p; p=&stu1; a) b) c)p->age d)(*p).age5下面对typedef的叙述中不正确的

23、是_. 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",); b)scanf("%d",&pup0.age); c)scanf("%d",&(p->sex); d)scanf("%d",p->age);(二) 填空题1以下程序的运行结果是_10,x_. struct n int x; char c; ;main() struct

温馨提示

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

评论

0/150

提交评论