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

下载本文档

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

文档简介

1、函数(一选择题1.以下正确的说法是_.建立函数的目的之一是 a提高程序的执行效率b提高程序的可读性c减少程序的篇幅d减少程序文件所占内存 2以下正确的函数原型声明形式是_.adouble fun(int x,int ybdouble fun(int x; int ycdouble fun(int x, int y;ddouble fun(int x,y; 3C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为_.A地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式 4C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_

2、.afloatbintclongddouble 5已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为_.int a34;f(a;af(int array6bf(int array3cf(int array4df(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(;printf("%d,%dn",x,y;a12,2

3、 b不确定 c5,25 d1,127以下正确的描述是_.aC语言的预处理功能是指完成宏替换和包含文件的调用b预处理指令只能位于C源程序文件的首部c凡是C源程序中行首以"#"标识的控制行都是预处理指令dC语言的编译预处理就是对源程序进行初步的语法检查 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',

5、2.8; D.fun(32,32;12以下程序的输出结果是_.void reverse(int a,int n int i,t;for(i=0;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;A.22 B.10 C.34 D.3013阅读下列程序,则运行结果为_.fun( static int x=5;x+;return x;main( int i,x;for(i=0;i&

6、lt;3;i+x=fun( ;printf("%dn",x;A.5 B.6 C.7 D.814若使用一维数组名作函数实参,则以下正确的说法是_.A.必须在主调函数中说明此数组的大小 B.实参数组类型与形参数组类型可以不匹配C.在被调用函数中,不需要考虑形参数组的大小 D.实参数组名与形参数组名必须一致15在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是_.A.void B.int C.float D.double16在C语言中,形参的缺省存储类别是( .A.auto B.register C.static D.extern17以下关于字符串的叙述中正确的是_.

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

8、: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 num2int temp,a,b;if(num1(_) num2temp=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( i

9、nt a=4,b=5,c;c=plus(a,b;printf("A+B=%dn",c;plus(int x,int yint 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=1y=1x=1y=2x=1y=35以下程序功能是求两个正整数的最大公约数。#include main(in

10、t r,m,n,_;scanf("%d%d",&m,&n;if(m _r=m%n;while(r m=n;n=r;r=_;printf("%dn",n;指针(一选择题1若有以下定义,则对a数组元素的正确引用是_.int a5,*p=a;a*&a5 ba+2 c*(p+5 d*(a+2 2若有定义:int a23,则对a数组的第i行j列元素地址的正确引用为_.a*(ai+j b(a+i c*(a+j dai+j 3若有以下定义,则p+5表示_.int a10,*p=a;a元素a5的地址 b元素a5的值c元素a6的

11、地址 d元素a6的值 4下面程序段的运行结果是_.char *s="abcde"s+=2;printf("%d",s;acde b字符'c' c字符'c'的地址 d无确定的输出结果 5设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_.ac=*p1+*p2; bp2=c cp1=p2 dc=*p1*(*p2; 6以下正确的程序段是_. achar str20; bchar *p;scanf("%s",&str; scanf(&q

12、uot;%s",p;cchar str20; dchar str20,*p=str;scanf("%s",&str2; scanf("%s",p2; 7若有说明语句char a="It is mine"char *p="It is mine"则以下不正确的叙述是_.aa+1表示的是字符t的地址bp指向另外的字符串时,字符串的长度不受限制cp变量中存放的地址值可以改变da中只能存放10个字符 8下面程序的运行结果是_.#include #include main(char *s1

13、="AbDeG"char *s2="AbdEg"s1+=2;s2+=2;printf("%dn",strcmp(s1,s2;a正数 b负数 c零 d不确定的值 9下面程序的运行结果是_.#include #include fun(char *w,int nchar t,*s1,*s2;s1=w;s2=w+n-1;while(s1 main(char p="1234567" /这里存在错误,通过字符指针无法改变字符串常量的值,因此改为数组fun(p,strlen(p;puts(p; a765432

14、1 b1714171 c1711717 d717717110变量的指针,其含义是指该变量的_.a值 b地址c名 d一个标志 11若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_.a a, point,*&a b&*a, &a, *pointc*&point,*point,&a d&a,&*point ,point 12若有说明;int *p,m=5,n;以下正确的程序段的是_.ap=&n; bp=&n;scanf("%d",&p;

15、 scanf("%d",*p;cscanf("%d",&n; dp=&n;*p=n; *p=m; 13.若有以下定义,则对a数组元素的正确引用是_.int a5,*p=a;A.*&a5 B.a+2 C.*(p+2 D.*(a+514.下列程序执行后的输出结果是_.main( int a33,*p,i;p=&a00;for(i=1; i<9; i+ pi=i+1;printf("%dn",a12;A.3 B.6 C.9 D.随机数15.下面程序段的运行结果是_.(该题题目有错,而且考的内容

16、偏了,是一题面试题)char *p="abcdefgh"p+=3;printf("%dn",strlen(strcpy(p,"ABCD"A.8 B.12 C.4 D.7(二填空题1以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。#include "stdlib.h"main(int *a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;printf("输入3个整数:"scanf("%d%d%d",a,b,c;prin

17、tf("%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,*sp="HELLO!"sp=strcpy(s,sp;s0='h'puts(sp; 3下面程序段的运行结果是 ef .char str="abc0def0ghi",*p=str;printf("%s",p+5;

18、 4下面程序的功能是将两个字符串s1和s2连接起来。请填空。#include main(char s180,s280;gets(s1; gets(s2;conj(s1,s2;puts(s1;conj(char *p1,char *p2char *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,1

19、2;则a10的值是_8_. *(*(a+1+0的值是_8_.7以下程序将数组a中的数据按逆序存放,请填空。#define M 8main(int aM,i,j,t;for(i=0;i i=0;j=M-1;while(i t=*(a+i; *(a+i=*(a+j ;*(a+j =t;i+;j-;for(i=0;i  8若有定义:int a35,i,j;(且0<=i<3,0<=j<5,则a数组中任一元素可用五种形式引用。它们是:(1aij(2*(ai+j(3*(*(a+i+j ;(4(*(a+ij(5*( a +5*i+j 9下面程序的运行结果是_.ma

20、in(char *a="Pascal","C language","dBase","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

21、 y;cnum2=1,3,2,7;printf("%dn",cnum0.y/cnum0.x*cnum1.x;a0 b1 c3 d63设有如下定义:struct skint n; float x;data ,*p;若要使p指向data中的n域,正确的赋值语句是_.ap=&data.n;b*p=data.n;cp=(struct sk *&data.n;dp=(struct sk *data.n;4以下对结构体变量stu1中成员age的非法引用是_.struct studentint age;int num;stu1,*p;p=&stu1;astu1.a

22、ge bstudent.agecp->age d(*p.age5下面对typedef的叙述中不正确的是_.a用typedef可以定义各种类型名,但不能用来定义变量b用typedef可以增加新类型c用typedef只是将已存在的类型用一个新的标识符来代表d使用typedef有利于程序的通用和移植6以下scanf函数调用语句中对结构体变量成员的不正确引用是_.struct pupilchar name20;int age;int sex;pup5,*p;p=pup;ascanf("%s",;bscanf("%d",&pup0.age;cscanf("%d",&(p->sex;dscanf("%d",p->age;(二 填空题1以下程序的运行结果是_10,x_.struct nint x;char

温馨提示

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

评论

0/150

提交评论